爲什麼需要PXE+DHCP+TFTP+KS實現無人值守批量裝機?
一臺兩臺服務器,你拿光盤去裝是可以應付的。那麼有100臺服務器需要裝機的時候,你也拿光盤去裝嗎?顯然是不現實的,因此PXE+DHCP+TFTP+KS實現無人值守批量裝機就可以滿足多臺服務器需要裝機的需求。
PXE+DHCP+TFTP+KS組件:
PXE(preboot execute environment):預啓動執行環境,可以利用此技術通過網絡啓動操作系統。
DHCP(Dynamic Host Configuration Protocol):動態主機配置協議,可以利用此技術給局域網內的用戶分配IP地址、子網掩碼、網關等網絡相關的配置信息。端口號 UDP:67
TFTP(Trivial File Transfer Protocol):簡單文件傳輸協議,通常在局域網內傳輸文件大小比較小的文件。端口號 UDP:69
KS (kickstart):anaconda的配置文件,anaconda能夠利用此配置文件實現操作系統自動化安裝。
PS:anaconda是centos系列系統的操作系統安裝程序。
centos系列光盤安裝的安裝過程:
步驟:
1、CPU會根據BIOS中的boot sequence尋找啓動設備。(用光盤安裝時,要保證boot sequence中光盤在引導次序的最前面)。
2、CPU會執行找到的光盤中的的MBR中的Bootloader,之後Bootloader會把用於執行系統安裝的內核和initrd.img文件調入內存解壓並執行。
3、內核會啓動當前光盤上的anaconda安裝程序。根據軟件的提示,用戶手動輸入安裝參數(若此時光盤中有用戶定義好的ks.cfg文件,並把ks文件路徑傳遞內核,即可以實現光盤自動化安裝)。
centos系列pxe網絡安裝的安裝過程:
在實現網絡安裝的這種方式時,要確保網卡支持PXE功能,且此網卡中有一段程序能夠讓CPU執行。此類型的網卡在可以在沒有操作系統的情況下從DHCP服務器請求IP地址等信息,並配置在網卡上。這種網卡還具有TFTP功能,可以到TFTP服務器上請求文件。
步驟:
1、CPU會根據BIOS中的boot sequence尋找啓動設備。(用網絡安裝時,要保證boot sequence中網卡在引導次序的最前面)
2、CPU執行找到的網卡中的程序,此程序會讓網卡發送請求向DHCP服務請求IP地址。(此類型的DHCP服務器的配置文件中會有next-server和filename兩個指令來指明TFTP服務器的IP地址和要從TFTP服務器上下載的文件)
3、網卡中的程序首先會下載TFTP服務器中的pxelinux.0文件(此文件由系統光盤上的syslinux軟件包提供),接着會下載TFTP服務器中的vesamenu.c32、splash.jpg、default文件來給用戶提供一個啓動選擇界面。界面如下:
4、選擇第一項之後,網卡中的程序會根據選擇下載TFTP服務器中的vmlinuz(內核文件)和initrd.img(虛擬根文件系統)到內存中解壓並執行。之後內核會根據傳給ks.cfg文件url路徑從服務器中下載ks.cfg文件,而後內核會根據ks.cfg指定的url路徑從服務器中下載anaconda程序讓CPU執行。最後運行的anaconda程序會讀取ks.cfg文件中指定的配置完成自動化安裝。
PXE+DHCP+TFTP+KS無人值守批量裝機具體實現步驟:
配置前準備 :
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth0" BOOTPROTO="static" IPV6INIT="no" MTU="1500" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" IPADDR="172.16.0.1" NETMASK="255.255.0.0" [root@localhost ~]# service network restart # 給服務器配置靜態IP地址
PS:若用yum安裝軟件時,先要配置好yum源
1、安裝配置tftp-server
[root@localhost ~]# yum -y install tftp-server # 安裝tftp-server程序的時候會裝一個xinetd程序,xinetd服務是管理tftp-server等服務的超級守護進程,其管理的服務通常稱之爲瞬時守護進程。 [root@localhost ~]# rpm -ql tftp-server /etc/xinetd.d/tftp /usr/sbin/in.tftpd /usr/share/doc/tftp-server-0.49 /usr/share/doc/tftp-server-0.49/CHANGES /usr/share/doc/tftp-server-0.49/README /usr/share/doc/tftp-server-0.49/README.security /usr/share/doc/tftp-server-0.49/README.security.tftpboot /usr/share/man/man8/in.tftpd.8.gz /usr/share/man/man8/tftpd.8.gz /var/lib/tftpboot # 此目錄是tftp服務的根目錄 # 查看tftp-server程序安裝後生成的文件 [root@localhost ~]# chkconfig tftp on [root@localhost ~]# chkconfig --list tftp tftp 啓用 # 配置tftp服務開機啓動 [root@localhost ~]# service xinetd start 正在啓動 xinetd: [確定] [root@localhost ~]# ss -unlp | grep 69 UNCONN 0 0 *:69 *:* users:(("xinetd",4315,5)) # 查看tftp服務的69號端口是否開啓 [root@localhost ~]# yum install syslinux # pxe安裝所需的pxelinux.0文件在此程序安裝的/usr/share/syslinux/pxelinux.0 [root@localhost ~]# cp /cdrom/isolinux/{vesamenu.c32,vmlinuz,initrd.img,splash.jpg} /var/lib/tftpboot/ [root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@localhost ~]# cp /cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default # 複製pxe網絡安裝系統時需要的文件
2、安裝配置dhcp服務
[root@localhost tftpboot]# yum -y install dhcp [root@localhost tftpboot]# rpm -q dhcp dhcp-4.1.1-38.P1.el6.centos.x86_64 [root@localhost tftpboot]# vim /etc/dhcp/dhcpd.conf option domain-name "cyccn.net"; option domain-name-servers 202.106.46.151; default-lease-time 600; max-lease-time 86400; subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.0.100 172.16.0.200; next-server 172.16.0.1; filename "pxelinux.0"; } # 配置文件中輸入以上內容 [root@localhost tftpboot]# service dhcpd start [root@localhost tftpboot]# ss -unlp | grep 67 UNCONN 0 0 *:67 *:* users:(("dhcpd",4470,7)) # 驗證dhcp服務是否啓動 [root@localhost tftpboot]# service iptables stop # 確保iptables處於關閉狀態 [root@localhost tftpboot]# setenforce 0 setenforce: SELinux is disabled # 確保selinux處於關閉狀態
3、配置http的yum源
[root@localhost ~]# yum install httpd [root@localhost ~]# service httpd start 正在啓動 httpd: [確定] [root@localhost ~]# ss -ntlp | grep 80 LISTEN 0 128 :::80 :::* users:(("httpd",28969,4),("httpd",28972,4),("httpd",28973,4),("httpd",28974,4),("httpd",28975,4),("httpd",28976,4),("httpd",28977,4),("httpd",28978,4),("httpd",28979,4)) # 確認httpd服務的80端口是否開啓 [root@localhost ~]# mkdir /var/www/html/centos6 [root@localhost ~]# mount /dev/cdrom /var/www/html/centos6 # /var/www/html/目錄是rpm安裝httpd的默認網頁文檔目錄 [root@localhost ~]# mv /etc/yum.repos.d/* ~/
4、創建anaconda軟件的ks.cfg配置文件
[root@localhost ~]# vim /var/www/html/ks.cfg #platform=x86, AMD64, 或 Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url="http://172.16.0.1/centos6" # Root password rootpw --iscrypted $1$ZRZM7Xhy$CuOUIwUmj9eUcXr9bn.Sw1 # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text firstboot --disable # System keyboard keyboard us # System language lang zh_CN # SELinux configuration selinux --disabled # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone Africa/Abidjan # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=2048 part / --fstype="ext4" --grow --size=1 %packages @chinese-support %end # 在ks.cfg配置文件中輸入以上內容
5、通過/var/lib/tftpboot/pxelinux.cfg/default文件傳給內核anaconda程序的配置文件url路徑
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=http://172.16.0.1/ks.cfg
# 在default文件中label爲linux中指令爲append的後面添加ks=http://172.16.0.1參數
6、配置pxe客戶端從網卡啓動(我這以vmware workstation虛擬機爲例)
調整測試機的網卡和pxe服務器的網卡在同一個虛擬交換機上
開機啓動時按F2進入 BIOS配置界面,把boot中的Network boot調到最前面
調整完成後按F10,選擇yes保存並退出BIOS,而後系統會自動重啓。
重啓後,如果一切正常會出現以下界面:
選擇第一項,pxe客戶端則會自動進行系統安裝。根據ks文件中的定義,安裝完成後會重啓系統。
下圖是系統安裝是軟件包的安裝過程