天天看點

總結之:CentOS 6.5基于DHCP的PXE自動化安裝系統詳解

前言

   如果要給很多台用戶端主機安裝作業系統,要是每一台都拿張安裝CD光牒一台一台主機的去裝系統、那就台不現實了、在生産環境中也不會被允許的、要實作為多台主機自動安裝作業系統、那我們怎麼實作自動化安裝呢、這就要來講講PXE了,PXE就是為這種給多台主機自動化安裝作業系統而生的,那接下來我們就來基于DHCP完成自動化為多台主機安裝作業系統。

正文

   要實作自動安裝之前先確定幾個包已經安裝好了:

   1、DHCP:動态主機配置協定、他是使用UDP協定工作的

   2、tfpt-server:這個是伺服器端提供需要的安裝的包

   3、xinetd:這個是喚醒tftp這個服務的服務

   4、syslinux:這個程式包是提供pxelinux.0

   5、準備安裝樹、就是要安裝的各種rpm包、安裝CD光牒應該提供

   這幾個包需要安裝好

基本原理及工作流程:

   首先,在用戶端主機的網卡要支援網絡引導,當開機時網卡就會激活當中的程式,自行通過網絡向DHCP請求IP位址,并配置在自己的網卡上。

   其次,DHCP伺服器回應給我們的主機,配置設定了IP位址,掩碼什麼的,再讓DHCP伺服器告訴我們的用戶端主機tftp伺服器在什麼位置。

   接着,用戶端主機就去請求tftp伺服器,當然,這裡的DHCP伺服器和tftp伺服器可以是同一台,也可以不是同一台,看情況而定。

   而後,tftp伺服器就會給用戶端主機提供一個pxe的檔案、這個檔案就是pxelinux.0,他相當于我們的bootloader、而這個檔案是由syslinux這個程式包提供的。

   再則,用戶端主機利用tftp伺服器提供的pxelinux.0這個檔案,再次嘗試到tftp伺服器上擷取核心,因為要啟動安裝就要啟用引導核心。

   之後,當引導核心啟動後,用戶端主機通過改名後的default(由pxelinux.0改名而來)檔案成功的引導Linux安裝核心後,通過httpd服務擷取該檔案中指定的自動應答檔案ks.cfg所在位置,根據該位置請求下載下傳該檔案。

   最後,将ks.cfg檔案下載下傳回來後,通過該檔案找到ks.cfg檔案的配置請求下載下傳安裝過程所需要的軟體包,這樣就可以實作生動化安裝了。

自動化安裝過程實作:

   安裝DHCP和httpd服務、沒安裝有就得安裝、安裝有了就不用再裝了、這步就不多說了:

   # yum -y install dhcp

   安裝好dhcp之後、就去配置dhcp服務裡的一些參數了、能讓dhcp服務告訴用戶端主機tftp伺服器在什麼位置,用net-server IP設定、還要設定檔案名為pxelinux.0、這些設定可以放在全局、也可以放在某個子網中,複制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample檔案替換原配置檔案/etc/dhcp/dhcpd.conf、然後編輯/etc/dhcp/dhcpd.conf

   # cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

   # vim /etc/dhcp/dhcpd.conf

   配置完成後,啟動DHCP服務,并将它設為開機自啟動、也重新開機一下dhcp服務

   # /etc/init.d/dhcpd start

   # service dhcpd restart

   安裝tftp服務、但由于tftp服務由xinetd服務管理并由xinetd來喚醒的、是以也要安裝xinetd服務、tftp-server是伺服器端要安裝的、tftp是用戶端要安裝的。

   # yum -y install tftp-server

   # yum -y install xinetd

   看一下安裝完後生成的檔案、有幾個我們需要關注一下的:

   然後啟動這兩個服務:

   # service xinetd restart

   # chkconfig tftp on

   在這裡我們應該挂載我們的安裝CD光牒、我這裡的安裝CD光牒已經挂載好了:

   首先在/media下建立一個cdrom目錄、然後再挂載

   # mkdir cdrom

   # mount -r /dev/cdrom/ /media/cdrom

   現在我們從剛挂載的CD光牒中開始複制核心檔案以及init等一些檔案到/tftp/lib/tftpboot目錄下:

   # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

   # cp /media/cdrom/isolinux/boot.msg /var/lib/tftpboot/

   # cp /media/cdrom/isolinux/splash.jpg /var/lib/tftpboot/

   # cp /media/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot/

   還要複制一個叫pxelinux.0這個檔案、這個檔案是由syslinux提供的、要安裝這個程式包才會有這個檔案,那我們就裝吧!

   # yum -y install syslinux

   安裝好了之後就複制這個檔案吧:

   # cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

   在這裡pxelinux.0取代了isolinux、他工作時要依賴的配置檔案叫isolinux.cfg,雖然pxelinux.0取代了isolinux、但是依然需要一個配置檔案、這樣我們就複制isolinux.cfg到/var/lib/tftpboot/pxelinux.cfg/目錄下、這裡pxelinux.cfg目錄要我們事先建立好、同時複制過來的配置檔案要改名為default:

   # mkdir pxelinux.cfg

   # cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

   到這裡我們還沒有完成、他還不能讓我們的系統自動化安裝,因為我們還沒有ks自動應答檔案,也沒有安裝樹、在安裝時必須提供所依賴的各種rpm包,我們知道HTTP可以向外提供安裝樹、那就用到我們的httpd了、我這裡已經安裝好了httpd服務了、如果沒有就得安裝哦,httpd的服務路徑在/var/www/htmp下、這時我們可以綁定我們之前挂載好的CD光牒到這裡來、這樣不就有安裝樹了麼,當然在html下建立個目錄會好點,這裡我們建立成centos:

   # mkdir /var/www/html/centos6.5

   # mount --bind /media/cdrom/ /var/www/html/centos6.5/

   綁定後還得要啟用我們的httpd服務呢、别忘記了、而後檢視一個有沒有80端口:

   # service httpd start

   # ss -tnl

   這樣子檔案共享服務就設定OK了,可以用:http://本機伺服器IP位址/centos6.5、這樣就可以通路得到了,安裝樹就這樣OK了。

   而後我們就開始複制Kickstart檔案了,這個檔案在/root/目錄下,叫anaconda-ks.cfg、我們把他複制到/var/www/html/下,改名為ks.cfg

   # cp /root/anaconda-ks.cfg /var/www/html/ks.cfg

   由于這個檔案隻有管理者可以通路、複制過來之後要給個可讀的權限他:

   # chmod +r /var/www/html/ks.cfg

   再編輯一個這個ks.cfg裡面的配置跟我們設定好的一緻、要不然找不到檔案路徑:

   vim /var/www/html/ks.cfg    

   改好了儲存退出!

   怎麼讓啟動時加載kickstartk呢、那就要在/var/lib/tftpboot/pxelinux.cfg/defaule檔案的label為linux下的append後面補上 ks=http://172.16.251.127/ks.cfg

   編輯/var/lib/tftpboot/pxelinux.cfg/defaule

   # vim /var/lib/tftpboot/pxelinux.cfg/default

   改好後:w!強行寫入、退出即可

   好了、到這裡我們算是配置好了我們的自動化安裝環境了、那就建立一個虛拟機來試一下吧、看一下我們的自動化安裝界面可以啟動了沒有呀!

<a href="http://s3.51cto.com/wyfs02/M02/22/55/wKioL1McL4iRtxmwAAM9FfxtfYM892.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/22/54/wKiom1McL6-C1ajnAAD_mHR1R74710.jpg" target="_blank"></a>

到這裡我們來總結一下前面的步驟吧!

   1、配置DHCP伺服器

        # yum -y install dhcp

        # vim /etc/dhcp/dhcpd.conf

        自定義subnet、同時配置tftp服務的資訊:

        subnet {

            ...

            next-server TFTP-SERVER-IP;

            filename "pxelinux.0";

        }

        # service dhcpd restart

    2、配置tftp-server

        # yum -y install xinetd tftp-server tftp

        # chkconfig xinetd on

        # chkconfig tftp on

        # service xinetd start

        # ss -unl | grep ":69"

    3、準備安裝樹、也就是我們的安裝包

        # mkdir /var/www/html/centos6.5

        # mount --bind /media/cdrom /var/www/html/centos6.5

        # service httpd start

    4、複制檔案到tftpboot下的檔案

        # yum -y install syslinux

        # cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/

        # cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/

        # cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

        # mkdir /var/lib/tftpboot/pxelinux.cfg

        # cp /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

    5、提供kickstart檔案

       直接從/root/anaconda-ks.cfg複制到/var/www/html目錄下,注意:url及repo後的路徑要修改為可用安裝樹的路徑;         

    6、配置引導程式能自動加載此kickstart檔案

        編輯/var/lib/tftpboot/pxelinux.cfg/default

        在label為linux項的append一行後附加:

            ks=http://HTTP_SERVER_IP/ks.cfg

    7、第一次測試、祝你成功!

結束

   最後啰嗦一下、做得有什麼不妥或欠佳的地方還望大神多多提點,在這裡先謝謝你的關注了,堅持夢想、以不懈的精神紮根linux行業。

本文轉自 wei0164 51CTO部落格,原文連結:http://blog.51cto.com/tanxw/1371355,如需轉載請自行聯系原作者

繼續閱讀