PXE無人值守實現批量化自動安裝Linux系統


  設想一個場景:假如讓你給1000台服務器裝系統,你會怎么做?跑去每一台服務器給它安裝系統嗎?顯然不會。。

一、概括

  通過網絡引導系統的做法可以不必從硬盤、軟盤或CD-ROM硬盤,而是完全通過網絡來引導一台計算機。這對於安裝來說非常方便,因為它意味着你可以坐在桌子旁邊,不必走到機器那里插入CD-ROM光盤或軟盤,就可以從網絡上引導位於別處的一台機器。

  PXE的作用:就像在網卡上ROM里的小小操作系統,它通過標准API把自己的網絡引導功能提供給系統的BIOS,就可以通過網絡啟動linux;

  PXE網絡引導過程:一台主機廣播一個設置了PXE選項的DHCP“發現”請求,然后一台DHCP服務器用一個包含有PXE選項的DHCP包來響應它(引導服務器的IP地址和引導文件的名字)。客戶機通過TFTP下載它的引導文件,然后執行此引導文件。

  用於執行自動安裝的工具叫做kickstart,由system-config-kickstart工具生成kickstart的配置文件ks.cfg。

二、實現思路

  原版(官方)鏡像安裝完成以后,將系統做成gho系統備份鏡像文件。通過網絡將gho系統備份鏡像分別利用網卡的Mac地址進行ip地址的分配,再分發。

三、環境准備

  兩台虛擬機:一個為測試環境:(CentOS,192.168.144.133),另外一台CentOS作為被安裝端,設置網絡引導安裝

四、安裝准備

①搭建yum光盤源

  用yum來安裝所需要的安裝包

(1)[root@test1 ~]# mount /dev/cdrom /mnt   # 先檢查根目錄中是否有mnt目錄

  

(2)在/etc/yum.repos.d 目錄下創建一個以.repo 結尾的文件

   [root@test1 ~]# vi /etc/yum.repos.d/server.repo 

   配置內容如下:

    

[base] 
Name=base 
Baseurl=file:///mnt/      #(部分系統可能需要使用file:///mnt/server 的路徑)
Enabled=1 
Gpgcheck=0    

(3)備份后,刪除/etc/yum.repos.d/下的其他文件:rm -rf C*

  

(4)安裝 ftp 服務以及開啟服務,設置為開機自動啟動。

  (yum install vsftpd tftp-server dhcp tftp –y)此命令可一次性安裝需要的服務,建議一步一步來!

     [root@test1 ~]# yum install vsftpd  –y (出現complete說明安裝完成

   如果出現vsftpd-2.2.2-11.el6_4.1.x86_64: failure: Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm from base: [Errno 256] No more mirrors to try.”的情況,先檢查是光盤是否掛在至/mnt下。如果已掛在還依然提示該錯誤,執行命令“yum clean all”命令。

  [root@test1 ~]# /etc/init.d/vsftpd start  service vsftpd start

  [root@test1 ~]# chkconfig vsftpd on 

(5)安裝 TFTP,修改 tftp 配置文件及開啟服務  

    [root@test1 ~]# yum install tftp  –y

    [root@test1 ~]# yum install tftp-server  –y     

    [root@test1 ~]vim /etc/xinetd.d/tftp,修改第13,14行配置

      

(6)重新啟動 xinetd 服務,然后查看服務端口是否打開。  

    [root@test1 ~]# /etc/init.d/xinetd restart 或者service xinetd restart

    

    OK,TFTP 服務正常啟動。Xinetd 服務本來就是開機啟動的,所以這里我們不再需要設置。 

    (注:xinetd是新一代的網絡守護進程服務程序,又叫超級Internet服務器,常用來管理多種輕量級Internet服務)

(7)安裝 dhcp,修改配置文件及開啟服務

    [root@test1 ~]# yum install dhcp  –y 

    [root@test1 ~]# vim /etc/dhcp/dhcpd.conf ( 9,10 行是網絡引導需要的配置,必須要有的。

     

ddns-update-style interim;
ignore client-updates; 
# 注意網段需要相同。否則無法使用 
subnet 192.168.144.0 netmask 255.255.255.0 {     
  # 與服務器IP地址相同
   option routers 192.168.144.133; 
  # IP默認租約時間
default-lease-time 21600;  
  #IP最大租約時間
max-lease-time 43200;
#IP租約地址池,這里要注意網段一定相同,否則起不來DHCP服務
range 192.168.144.10  192.168.144.100;   
option subnet-mask 255.255.255.0;
next-server 192.168.144.133;  # 與服務器IP地址相同
filename "pxelinux.0"; 
} 

  [root@test1 ~]# /etc/init.d/dhcpd start 或者service dhcpd start    # 啟動 DHCP

  [root@test1 ~]# chkconfig dhcpd on   #設置開機自啟

  

  # 可能會存在啟動失敗的情況!! 

  如果是虛擬機,請查看配置信息是否與當前網段匹配。

  如果啟動DHCP服務的時候提示“Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file”

   修改 /etc/rc.d/init.d/dhcpd 文件,將其中的

   user=dhcpd

   group=dhcpd

   改為:

   user=root

   group=root

  至此我們的准備工作完成,下面開始kickstart配置。

五、kickstart配置

   如果找不到 syslinux 目錄,需要安裝包 yum  install  system-config-kickstart.noarch  –y

(1)執行如下命令

    [root@test1 ~]# mkdir /tftpboot

    [root@test1 ~]# mkdir /tftpboot/pxelinux.cfg

    [root@test1 ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/

    [root@test1 ~]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

    [root@test1 ~]# cp /mnt/images/pxeboot/initrd.img /tftpboot/

    [root@test1 ~]# cp /mnt/images/pxeboot/vmlinuz /tftpboot/

    [root@test1 ~]# chmod 644 /tftpboot/pxelinux.cfg/default

    然后修改  /tftpboot/pxelinux.cfg/default 的配置文件。 

    vim /tftpboot/pxelinux.cfg/default   

    (文件里面需要修改兩行,修改第 1 行,后面的 linux 意思是尋找下面 18 行的 label linux,然后修改下 22 行(即在后面添加 ks=ftp://”pxe-server-ip”/ks.cfg)。第 22 行的意思是使安裝程序通過 FTP 服務器訪問 kickstart 文件。)

    其中第 1 行:default linux 表示指定默認入口名稱;第 2 行:prompt 1 prompt 用來設置是否等待用戶選擇,1 表示等待用戶控制;第 18、23、27、31 label linux 表示定義的引導入口,表示系統的不同安裝方式,如第 18 行定義的入口表示圖形安裝。 

       

    配置文件修改完了,要開始自動安裝,安裝程序必須能訪問 kickstart 文件。有多種方法可訪問 kickstart 文件,其中最常用的一種方法是通過網絡服務器進行,例如:ftp 服務器、WEB 服務器或 NFS 服務器,這種方法非常易於部署,並且也使管理更改變得十分簡單。也可以通過 USB 磁盤、CD-ROM 或本地硬盤。如果 USB CD-ROM 中的 kickstart 文件非常便於訪問,只需將 kickstart 文件放置在用來開始安裝的引導介質中。而使用 DHCP 服務器和 TFTP PXE 配置起來更為復雜。 

使安裝程序指向 kickstart 文件的書寫格式如下: 

ks=ftp://server/dir/file  如:ks=ftp://ftp 服務器 IP/ks.cfg ks=http://server/dir/file 如:ks=http://http 服務器 IP/ks.cfg ks=nfs:server:/dir/file   如:ks=nfs:nfs 服務器 IP:/var/ftp/pub/ks.cfg ks=hd:device:/dir/file   如:ks=hd:sdb1:/kickstar-files/ks.cfg ks=cdrom:/dir/file      如:ks=cdrom:/kickstart-files/ks.cfg

以上有關 default 配置文件的修改就是通過 ftp 服務器方式來訪問 kickstart 文件。

六、制作kickstart無人值守軟件

打開終端輸入 system-config-kickstart 彈出來界面。 (需要在服務器中打開。)

我們設置下默認安裝的語言,時區,根口令,然后勾選下面的安裝后重新引導。然后選擇安裝方法。 (服務器ip)

     

我們配置 ftp 服務器的安裝方法。選擇執行新安裝。然后點擊引導裝載程序選項 

    

GRUB 選項如果無特殊需求,可以不勾選。 

    

到這一步,布局這里,我們自己設置下分區大小。 

    分區大小需要自己根據情況而定。 

    比如我的虛擬機配置較低就要用下面的分區: 

    /boot 分區  文件系統類型:ext4   使用硬盤空間大小:200MB

    /swap 分區                      使用硬盤空間大小::2048MG(內存小於 8G 的需設置成內存的兩倍,16G以后的內存最好保持物理內存的8G或者相同物理內存的大小,這里實驗虛擬機只有1G內存,所以swap分區2048) 

    /   根分區  文件系統類型:ext4   使用硬盤空間大小: 剩下所有硬盤空間 

    以上三個為基本分區,其他的分區需根據情況制定。

     

網絡這里,默認沒有,點擊添加網絡,設備名稱為 eth0,網絡類型為 dhcp 

    

驗證部分

        

防火牆和 selinux 根據自己需求選擇開啟或者禁用 

    

顯示設置

    

軟件包選擇,默認沒有勾選桌面。根據自己需求勾選。 (基本,語言支持)

     #附上Linux系統最小化安裝包選擇

       

后面剩余的兩項不需要配置。 

    提示:安裝腳本:在“預安裝腳本”,“安裝后腳本”對話框中,可以分別添加在安裝前、安裝后自動的可執行語句。此項設置使服務器自動化配置變得更加容易,例如可以在客戶機在完成安裝后自動設置 YUM 倉庫,如下圖所示,需要注意的是:應確保所編寫的代碼能夠正確執行,以免安裝失敗。 

       

    提供一個參考的案例:

    

    然后點擊左上角的文件選擇保存,選擇下保存的路徑(/root),然后復制 ks.cfg 文件到/var/ftp/ 目錄下: 

    [root@test1 ~]#cp ks.cfg  /var/ftp/

    :ks.cfg 就是無人值守安裝時要用的 Kickstart 文件,該文件可以手動進行編輯,如果手動編輯 Kickstart 文件,則使用 ksvalidator 來驗證該文件使用正確的關鍵字,但卻無法驗證 URL 路徑、各個數據包或組等書寫錯誤。Ksvalidator system-config-kickstart 數據包的一部分,

因此必須要安裝該軟件包 

---還記的/tftpboot/pxelinux.cfg/default 文件中設置過 ks=ftp://192.168.10.1/ks.cfg 因此必須

執行上面的一步重新掛載 安裝光盤到/var/ftp/pub 目錄下,開始執行另一台機器的無人值守安裝:   

    [root@test1 ~]#umount /dev/cdrom      # 取消原來是掛載到/mnt 下的鏡像文件。Umount /dev/cdrom(umount /mnt)

    [root@test1 ~]#mount /dev/cdrom  /var/ftp/pub 

    建議關閉防火牆和 selinux,如果沒有關閉的話,tftp 服務會有問題。

    設置防火牆: 

    #chkconfig iptables off  (重啟生效)

    #service iptables stop    (即刻生效)

    關閉 selinux 功能:有如下兩種方法可以實現 

    1) 永久關閉 selinux 功能:修改/etc/sysconfig/selinux 文件,將 SELINUX=enforcing 改為 disabled,要重啟系統才生效 

    2)臨時關閉 selinux 功能:#setenforce  0  不需要重啟系統若使用 vmware 虛擬機,如果還失敗的話,就 vmware 虛擬機軟件所提供的 DHCP 功能停掉(一般情況下不影響)

七、安裝啟動機器

接下來啟動你要安裝的機器了(設置為網絡引導安裝,你就可以休息下,等待自己安裝完成) 

    新建一台虛擬機,操作系統稍后選擇安裝。將此虛擬機開機,默認會通過DHCP選擇剛剛的192.168.144.133配置好的PXE進行安裝系統。至此我們已經完成PXE無人值守系統安裝。

  

  它會全程自己安裝

  

引導過程可能出現的問題

     

  如果出現這個狀態請查看 ks 的路徑和 selinux 是否關閉。 

  查看 SELinux 狀態:

  1、 /usr/sbin/sestatus -v      ##如果 SELinux status 參數為 enabled 即為開啟狀態

  SELinux status:                 enabled

  2、 getenforce                 ##也可以用這個命令檢查

  如果遇到 Unable to retrieve ftp ,確認是否進行了鏡像掛載, ls /var/ftp/pub/ 即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM