PXE+Kickstart 自動安裝
安裝之前
將需要安裝 CentOS 的服務器與 PXE 服務器通過網絡設備連接;PXE 服務器安裝 CentOS,並且關閉firewalld、selinux,設置靜態IP地址,本例設為10.0.0.1;一般來說因為是在內網操作,還需要配置本地YUM源。本例僅適用UEFI引導,BIOS稍有不同。
配置PXE服務器
配置tftp服務器
1.安裝tftp服務器
[root@localhost ~]# yum -y install tftp-server
2.啟用tftp服務器
在 /etc/xinet.d/tftp
配置文件中,將 disabled
參數從 yes
改為 no
配置DHCP服務器
1.安dhcp服務器
[root@localhost ~]# yum -y install dhcp
2.將您的 DHCP
服務器配置為使用采用 shim 打包的 EFI 引導映象。
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
示例如下
option space pxelinux; option pxelinux.magic code 208 = string; option pxelinux.configfile code 209 = text; option pxelinux.pathprefix code 210 = text; option pxelinux.reboottime code 211 = unsigned integer 32; option architecture-type code 93 = unsigned integer 16; subnet 10.0.0.0 netmask 255.255.255.0 { option routers 10.0.0.1; range 10.0.0.2 10.0.0.253; class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 10.0.0.1; if option architecture-type = 00:07 { filename "uefi/shim.efi"; } else { filename "pxelinux/pxelinux.0"; } } }
關於dhcp配置文件的簡要說明:
subnet 10.0.0.0 netmask 255.255.255.0 { //分配的網段,子網掩碼
option routers 10.0.0.1; //dhcp服務器的IP地址
range 10.0.0.2 10.0.0.253; //分配的IP地址段為說明
提取引導文件
需要提取shim 軟件包中的 shim.efi
文件,以及 ISO 映像文件中 grub2-efi 軟件包的 grubx64.efi
文件
[root@localhost ~]# mount /dev/cdrom /mnt/ //掛載鏡像文件,視實際情況而定 [root@localhost ~]# cp -pr /mnt/Packages/shim-x64-12-1.el7.centos.x86_64.rpm /tmp/ [root@localhost ~]# cp -pr /mnt/Packages/grub2-efi-x64-2.02-0.64.el7.centos.x86_64.rpm [root@localhost ~]# cd /tmp/ [root@localhost tmp]# rpm2cpio shim-x64-12-1.el7.centos.x86_64.rpm | cpio -dimv [root@localhost tmp]# rpm2cpio grub2-efi-x64-2.02-0.64.el7.centos.x86_64.rpm | cpio -dimv
添加引導文件進tftp目錄
[root@localhost ~]# mkdir /var/lib/tftpboot/uefi
[root@localhost ~]# cp /tmp/boot/efi/EFI/centos/shim.efi /var/lib/tftpboot/uefi/
[root@localhost ~]# cp /tmp/boot/efi/EFI/centos/grubx64.efi /var/lib/tftpboot/uefi/
[root@localhost ~]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/uefi/
添加 grub.cfg
配置文件
[root@localhost ~]# vi /var/lib/tftpboot/uefi/grub.cfg
set timeout=60
menuentry ‘CentOS 7‘ {
linuxefi uefi/vmlinuz ip=dhcp inst.repo=http://10.0.0.1/
initrdefi uefi/initrd.img
}
配置文件簡要說明
menuentry ‘CentOS 7‘ //這個是個引導項,之後安裝會看到,引號部分可以自定義
linuxefi uefi/vmlinuz ip=dhcp inst.repo=http://10.0.0.1/
initrdefi uefi/initrd.img
//這兩行是定制引導項,相當於安裝進入引導菜單時,按e將看到這兩行,inst.repo=10.0.0.1指定安裝源。
準備http服務器
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount /dev/cdrom /mnt/ //如果之前掛載的鏡像沒卸載,則無需重新掛載
[root@localhost ~]# cp -rv /mnt/* /var/www/html/
開啟所需服務
[root@localhost ~]# systemctl start httpd dhcpd xinetd
自此,PXE 服務器已經準備完成,設置需要安裝系統的計算機從網絡(PXE)啟動,即可。
Tips:tftp服務屬於瞬時服務,即使手動開啟,一段時間後,無連接請求,也會自動關閉,而且也無法在系統引導時自動啟動(也就是說systemctl enable tftp是無效的),平時tftp服務不啟動,只有用戶請求tftp服務的時候,才會被xinetd啟動,接受客戶端的請求。配置tftp支持xinetd就是之前的啟用tftp的步驟:在 /etc/xinet.d/tftp
配置文件中,將 disabled
參數從 yes
改為 no
小結1:此例我將10.0.0.1這臺服務器設置為 PXE 服務器,提供引導安裝功能,同時也在10.0.0.1上配置了安裝源(此例是通過http提供安裝樹),需要註意的就是10.0.0.1這臺服務器上的防火墻、selinux一定要關閉,或者打開httpd、dhcpd、xinetd這些服務的端口。至此已經提供了我們需要安裝的服務器只需要設置從網絡(PXE)啟動就可以開始安裝了,但是實現PXE+Kickstart自動安裝,還需要一些步驟。
完全的PXE+Kickstart自動化安裝
準備Kickstart文件
一般是單用PXE服務器手動設定配置項目後,安裝一臺;使用 /root 目錄下面將 anaconda-ks.cfg,可以重命名為 ks.cfg ,手動編輯 Kickstart 文件較為繁瑣,推薦一款工具
將Kickstart文件部署與網絡中
這裏我們可以使用之前用作提供安裝源的http服務器,將 Kickstart 文件放入 http 服務器中 /var/www/html 目錄中。
添加定制引導項支持 Kickstart
修改之前創建的 grub.efi 文件如下:
[root@localhost ~]# vi /var/lib/tftpboot/uefi/grub.cfg
set timeout=60
menuentry ‘RHEL 7‘ {
linuxefi uefi/vmlinuz ip=dhcp inst.repo=http://10.0.0.1/ inst.st=http://10.0.0.1/ks.cfg
initrdefi uefi/initrd.img
}
實際上只是添加了
inst.st=http://10.0.0.1/ks.cfg
重新所需的服務,設置需要安裝的系統從網絡(PXE)啟動
註意:特別需要註意http服務器提供文件的是否有讀權限
PXE+Kickstart 自動安裝