菜鳥學Linux 第103篇筆記 pxe自動化安裝linux
内容總覽
linux的系統安裝
kickstart檔案的組成部分
DHCP (Dynamic Host Configuration Protocol)
PXE (Preboot Execution Environment)
tftp
PXE 實作自動化基于網絡安裝linux步驟
SELinux (Security-enforced Linux)
linux的系統安裝:
CentOS 6
anaconda fedora, Linux系統安裝程式 kickstart
安裝前配置階段
鍵盤類型
安裝過程中的語言
支援的語言
時區
選擇要使用的磁盤裝置
分區格式化
選擇要安裝的程式包
管理者密碼
是否啟動iptables
是否啟用selinux
安裝階段
在目錄磁盤上建立出根檔案系統
将標明的程式包安裝至目錄磁盤
如何啟動安裝過程
MBR: bootloader
網絡啟動安裝過程
可移動裝置
簡裝CD光牒, 隻有isolinux
配置的選項
必選項(一定要給)
可選項
指令段:用于配置系統
install
firewall
part
lvm
軟體包, 指定要安裝的程式包組(@)及程式包
%packages
@Base
lftp
tree
程式包名稱之前附加“-”号表示不希望安裝此程式包
%end
腳本段:
%pre: 安裝過程開始之前執行的預備腳本(所能執行的操作較小,簡裝版的shell環境)
%post: 所有的軟體安裝完成之後執行的腳本 (必有完整意義上的shell環境)
CD光牒: MBR-->bootloader, isolinux
啟動安裝界面時,boot提示符後,可以向安裝核心傳遞許多的配置參數用于安裝指定過程
boot text 文本安裝界面
boot askmethod 指定安裝方法,讓使用者選擇使用的安裝樹
boot asknetwork 安裝過程中使用網絡功能,并提示使用者配置網絡屬性
boot dd 提示使用者指定一個驅動程式所在裝置
boot ks= 指定一個安裝過程所使用的kickstart檔案
ks={http|https}://<server>/<path>
ks=cdrom:/<path>
ks=nfs:<server>/<path>
建立kickstart檔案方式
1. 複制模闆/root/anaconda-ks.cfg 而後使用vim編輯配置
2. 使用system-config-kickstart來生成,建立也使用/root/anaconda-ks.cfg作為模闆
驗證kickstart檔案是否配置正确指令
# ksvalidator kick-file-name.cfg
bash丢失如何修複
1. 啟動緊急救援模式
2. 擷取到bash的rpm包
# mkdir /media
# mount -r /dev/dvd /media
# cd /media/Packages
# rpm -ivh bash-*.rpm --replacepkgs --root=/mnt/sysimage/
bootp --> dhcp (lease 位址租約)
C/S
server: DHCP server UDP 67 (運作dhcp服務)
client: DHCP client UDP 68 (運作dhcp程式)
UDP: 發送很小的資料封包,且對時效性要求較高
dhcp封包互動過程(廣播)
C: DHCP DISCOVER
S: DHCP OFFER (ip/netmask)
C: DHCP REQUEST
S: DHCP ACK
續約50%
DHCP
IP, NETMASK, GATEWAY, DNS, NTP SERVER, WINS SERVER, FILE
根據mac位址不同配置設定的IP也可不同
169.254.*.*
# yum install dhcp
dhcpd.conf
定義dhcp的自身工作屬性
log-facility
全局位址配置設定屬性 option打頭
option router
子網配置
每個作用域通過一個subnet定義
subnet NETWORK_ADDR netmask NETMASK {
range ip ip;
option routers ip;
option broadcst-address ip;
option domain-name-servers ip;
option domain-name "";
default-lease-time #s;
max-lease-time #s;
}
主機配置(優先比對)
通常為某特定的mac位址固定配置設定一個位址
host 'HOST ID' {
hardware ethernet mac-addr;
fixed-address ip;
Client 網卡要支援網絡引導
tftp Trivial FTP, 簡單檔案傳輸協定, 高效傳輸小檔案 UDP 69
超級守護程序 Xinetd
瞬時守護程序 無須定義運作級别,隻需要一次性定義xinetd運作級别
獨立守護程序(standalone) 有運作級别,
yum -y install tftp-server xinetd
tftp-directory: /var/lib/tftpboot/
複制檔案到/var/lib/tftpboot/ 目錄下 是從iso鏡像裡複制出來的
images/pxeboot/{vmlinuz,initrd.img}
isolinux/{boot.msg,vesamenu.c32,splash.jpg}
# yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
将dhcp配置設定位址時給其用戶端指定一個檔案讓其通路
/etc/dhcp/dhcpd.conf
next-server 192.168.11.171;
filename="pxelinux.0";
# service dhcpd restart
(至此centos便可以使用網絡連接配接來啟動安裝界面)
建立web伺服器 将iso鏡像挂載到html/centos6.5目錄裡
# mount /dev/cdrom /var/www/html/centos6.5
制作kickstart檔案複制到/var/www/html/目錄中并命名ks.cfg
再将isolinux.cfg 即放在此目錄下的default檔案配置其ks檔案所在地方
即可實作網絡自動化安裝centos
PXE 實作自動化基于網絡安裝linux
前提:
# mount /dev/cdrom /media
(挂載的是centos 6.5的iso)
1. 配置DHCP伺服器
# yum -y install dhcp
# vim /etc/dhcp/dhcpd.conf
定義subnet {
...
next-server tftp-server-ip;
filename "pxelinux.0";
2. 配置tftp-server
# yum -y install xinetd tftp-server tftp
# service xientd start
# chkconfig tftp on
# service xinetd restart
# ss -unl | grep ":69"
3. 準備安裝樹
# mkdir /var/www/html/centos6.5
# mount --bind /media/ /var/www/html/centos6.5
# service httpd start
4. 準備/var/lib/tftpboot下的檔案
/media/images/pxeboot/{vmlinux,initrd.img}
/media/isolinux/{boot.msg,vesamenu.c32,splash.jpg}
/usr/share/syslinux/pxelinux.0
/isolinux/isolinux.cfg 放到上邊建立的目錄并更名為default
5. 第一次測試,看看用戶端是否可以啟動到引導界面
6. 提供kickstart檔案
注意url及repo後的路徑要修改為可安裝樹的路徑
配置kickstart檔案時,雖然system-config-kickstart可以進行配置,但磁盤還
需要自行手動進行配置的,如果是想使用lvm
編輯好kickstart檔案儲存至/var/www/html目錄下 ks.cfg(可自定義名字)
7. 配置引導程式能自動加載kickstart檔案
# vim /var/lib/tftpboot/pxelinux.cfg/default
在label為linux項的append一行後附加
ks=http://HTTP_SERVER_IP/ks.cfg
8. 第二次測試,檢視其是否可自動引導,并進行自動化安裝centos 6.5
(預祝你成功呵呵 親測本人已經配置完成)
SELinux (Secure Enhenced Linux)
沙箱
啟用 /etc/selinux/config
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# getenforce
# setenforce {0|1}
0 off | 1 on
# ls -Z
# ps -auZ
本文轉自Winthcloud部落格51CTO部落格,原文連結http://blog.51cto.com/winthcloud/1899163如需轉載請自行聯系原作者
Winthcloud