簡述PXE+DHCP+TFTP+KS無人值守批量裝機

爲什麼需要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系列光盤安裝的安裝過程:

wKioL1WVAD2CC3g9AAB0sWLoEig416.jpg

 步驟:

        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服務器上請求文件。

wKioL1WVDePRs9AbAADRygeXN6Y928.jpg

 步驟:

       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文件來給用戶提供一個啓動選擇界面。界面如下:

wKiom1WZ22XwNKeoAAMu2uwjRUM091.jpg

      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調到最前面

wKiom1WaABHgu6hNAAIko-U7L44620.jpg

       調整完成後按F10,選擇yes保存並退出BIOS,而後系統會自動重啓。

       重啓後,如果一切正常會出現以下界面:

wKiom1WaAU6y6sLFAAMu2uwjRUM086.jpg

       

      選擇第一項,pxe客戶端則會自動進行系統安裝。根據ks文件中的定義,安裝完成後會重啓系統。

      下圖是系統安裝是軟件包的安裝過程

     

wKioL1WaBUPh5ld6AAEBynWyCYw638.jpg


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