Linux下網絡啓動服務器安裝和配置方法(pxe+tftp+dhcpd)

背景:

在大規模安裝服務器時,需要批量自動化方法來安裝服務器,來減少日常的工作量,但是批量自動化安裝服務器的基礎是網絡啓動服務器(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(架構)

135419936.gif

上圖說明: 當BIOS把PXE Client載入記憶體,此時便具有DHCP Client及TFTP Client的能力。

PXE Client具備DHCP Client能力,可以透過DHCP Server來取得IP位址。

PXE Client具備TFTP Client能力”,可通過TFTP來下載kernel image等文件。


PXE啓動流程圖(pxe boot)

135704572.png

上圖啓動流程說明如下:

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密碼

141332109.jpg

2、設置安裝源(軟件包位置),選擇協議

141544628.jpg

3.選擇安裝軟件

141844339.jpg

所有設置完成後將文件保存到指定目錄,名稱跟前面/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

測試:

142327334.jpg


軟件安裝過程

142522532.jpg


安裝後啓動登錄,操作完成!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章