背景:
在大規模安裝服務器時,需要批量自動化方法來安裝服務器,來減少日常的工作量,但是批量自動化安裝服務器的基礎是網絡啓動服務器(bootserver),下面就是網絡啓動服務器的安裝和配置方法,供大家參考!
術語解釋:
PXE:(Pre-boot ExecutionEnvironment)是由Intel協議,它可以是計算機通過網絡而不是本地硬盤、光驅等設備啓動。現代的網卡,一般都內嵌支持pxe的rom芯片。當計算機引導時,BIOS把pxe dient調入內存執行,並顯示出命令菜單,經用戶選擇後,PEXdient將放置在遠端的操作系統通過網絡下載到本地運行。
DHCP:(Dynamic Host Control Protocol)動態主機控制協議,用於集中、動態給客戶分配IP地址
TFTP:(trivial file transfer protocol),一種開銷很小的文件傳輸協議,語法類似ftp,因簡單、高效,常用於網絡設備的os和配置更新
PXE Client Api(架構)
上圖說明: 當BIOS把PXE Client載入記憶體,此時便具有DHCP Client及TFTP Client的能力。
PXE Client具備DHCP Client能力,可以透過DHCP Server來取得IP位址。
PXE Client具備TFTP Client能力”,可通過TFTP來下載kernel image等文件。
PXE啓動流程圖(pxe boot)
上圖啓動流程說明如下:
1.PXE Client 向 UDP 67端口 廣播 DHCPDDISCOVER 消息.
2.DHCP SERVER 或者 DHCP Proxy 收到廣播消息後,發送DHCPOFFER(包含ip地址)消息 到 PXE Client的 68 端口.
3.PXE Client 發送 DHCPREQUEST 消息到 DHCP SERVER ,獲取啓動文件(boot file name).
4.DHCP SERVER 發送DHCPACK(包含Network Bootstrap Program file name)消息 到PXE Client.
5.PXE Client 向 Boot Server 獲取 NBP(Network Bootstrap Program) 文件.
6.PXE Client 從TFTP SERVER 下載 NBP,然後在客戶端執行NBP文件
注意: 在NBP執行初始化後,NBP會按照自己默認的方式從TFTP SERVER中下載其他所需的配置文件.
這個時候 PXE 啓動流程已經完成了,剩下的工作都是有NBP來執行完成的.
例如: pxelinux.0(NBP) 他會下載 default 配置文件,來顯示菜單,根據需要啓動不同的kernel image.
如果是RIS(window安裝)的NBP,會啓動 Windows boot loader 來執行安裝部署widows任務
PXE BOOT Server配置過程
[root@node1 ~]# yum install tfpt tftp-server dhcp vsftpd syslinux #安裝所需的軟件包 [root@node1 ~]# mkdir /var/ftp/pub/centos-6.4-x86_64 -pv [root@node1 ~]# mount -r /dev/cdrom /var/ftp/pub/centos-6.4-x86_64/ [root@node1 centos-6.4-x86_64]# ls CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6 EFI Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL images RPM-GPG-KEY-CentOS-6
配置DHCP服務:
在PXE引導過程中,PXE Client通過DHCP Server獲取ip地址,NBP文件名稱,然後從TFTP SERVER下載NBP文件並在客戶端執行,從而啓動計算機
[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf [root@node1 ~]# vim /etc/dhcp/dhcpd.conf option domain-name "magedu.com"; option domain-name-servers 172.16.0.1; default-lease-time 43200; max-lease-time 86200; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. #自定義一個subnet subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.11 192.168.10.100; option routers 192.168.10.10; next-server 192.168.10.10;#TFTP Server的ip地址 filename="pxelinux.0";#bootstrap 文件(NBP) }
注意:在 /etc/dhcpd.conf 配置文件中 filename "pxelinux.0"; 文件目錄是相對於 tftp 的根目錄(默認是 /tftpboot),
所以文件的絕對路徑就是: /tftpboot/pxelinux.0";當然也可以指定爲其它的路徑.
重啓dhcpd服務
[root@node1 ~]# service dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ] [root@node1 ~]# ss -uanlp | grep dhcpd UNCONN 0 0 *:67 *:* users:(("dhcpd",4883,7))
配置tftp服務器
[root@node1 xinetd.d]# chkconfig tftp on [root@node1 xinetd.d]# service xinetd restart Stopping xinetd: [FAILED] Starting xinetd: [ OK ] [root@node1 xinetd.d]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] [root@node1 ~]# ss -uanlp | grep xinetd UNCONN 0 0 *:69 *:* users:(("xinetd",5007,5)) UNCONN 0 0 *:69 *:* users:(("xinetd",5000,5))
準備引導文件:
[root@node1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@node1 ~]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/ [root@node1 ~]# ls /var/lib/tftpboot/ boot.msg pxelinux.0 splash.jpg vesamenu.c32 [root@node1 ~]# cp /var/ftp/pub/centos-6.4-x86_64/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ [root@node1 ~]# ls /var/lib/tftpboot/ boot.msg initrd.img pxelinux.0 splash.jpg vesamenu.c32 vmlinuz [root@node1 tftpboot]# mkdir pxelinux.cfg [root@node1 tftpboot]# cd pxelinux.cfg/ [root@node1 pxelinux.cfg]# cp /var/ftp/pub/centos-6.4-x86_64/isolinux/isolinux.cfg default [root@node1 pxelinux.cfg]# chmod +w default [root@node1 pxelinux.cfg]# mkdir /var/ftp/pub/kickstart/ [root@node1 pxelinux.cfg]# vim default menu background splash.jpg menu title Welcome to CentOS 6.4 from PXE! label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=ftp://192.168.10.10/pub/kickstart/centos6.cfg [root@node1 ~]# yum -y install system-config-kickstart [root@node1 ~]#system-config-kickstart
1.選擇時區,設置root密碼
2、設置安裝源(軟件包位置),選擇協議
3.選擇安裝軟件
所有設置完成後將文件保存到指定目錄,名稱跟前面/var/lib/tftpboot/pxelinux.cfg/default中ks路徑保持一致,名字爲centos6.cfg,添加分區信息,進行測試:
[root@node1 ~]# vim centos6.cfg # Partition clearing information clearpart --all --initlabel #添加分區信息 part /boot --fstype=ext4 --size=200 part pv.008002 --size=61440 volgroup vg0 --pesize=8192 pv.008002 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 logvol swap --name=swap --vgname=vg0 --size=2048 logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480 [root@node1 ~]# cp centos6.cfg /var/ftp/pub/kickstart/ [root@node1 ~]# service vsftpd start
測試:
軟件安裝過程
安裝後啓動登錄,操作完成!