1. 程式人生 > >PXE+Kickstart 自動安裝

PXE+Kickstart 自動安裝

bio 服務器 disabled integer 編輯 mkdir 引導 2.0 之前

安裝之前

將需要安裝 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 自動安裝