自動化之安裝操作系統——PXE

    PXE:Preboot eXecution Everionment,Intel公司開發的預啓動執行環境,使用這套環境能夠使我們在爲大量的計算機部署操作系統的時候,不必在每一臺新主機上部署操作系統,而是讓其自動安裝,我們只需要讓機器開機即可。在這個環境中使用到的軟件和服務是DHCP、TFTP和HTTP(或者FTP、NFS等),他們功能分別是當一臺機器加電啓動的時候,如果其硬盤中沒有操作系統,那麼它就會自動的從網絡環境中啓動,而DHCP的功能就是爲其分配一個可用IP地址,使其能夠正常的進行網絡訪問,在爲其分配完IP地址後,DHCP還有一個功能就是告訴這臺沒有操作系統的機器去一個特定的地方去加載啓動文件,這個特定的地方就是安裝有TFTP-SERVER的地方,在這個地方爲機器提供引導文件和Linux的內核及initrd.img等文件,並且提供一個供安裝使用的菜單。在得到了配置文件之後,機器就能夠讀取,知道下一步應該使用HTTP或者其他的一些協議到特定的地方下載自動安裝的配置文件和軟件包了。上面提到的這些服務可以部署在一臺主機上,也可以部署在不同的主機上,根據實際需要進行選擇。下面開始進行詳細的部署:

一、環境搭建(在172.16.128.14)

    在這裏,我選擇使用DHCP、TFTP-SERVER、HTTP來進行部署,也可以選擇其他類似的軟件,只要能夠實現功能即可。在這裏,我使用的系統是CentOS 6。首先,安裝這三個軟件:

~]# yum -y install dhcp tftp-server httpd

    下面,開始配置DHCP服務,DHCP默認監聽在UDP的67號端口,負責爲網段中有需要的主機分配IP地址(也可以爲其他網段有需要的主機分配IP地址,稱其爲DHCP的中繼服務,不過在這裏用不到)。DHCP的主配置文件是“/etc/dhcp/dhcpd.conf”,我們在其中添加以下配置:

default-lease-time      3600;
max-lease-time          7200;
subnet 172.16.0.0 netmask 255.255.0.0 {
    option routers 172.16.128.14;                    #指定網關
    option domain-name "getip.com";                  #指定此DHCP服務監聽域名
    option domain-name-servers 172.16.128.14;        #指定DNS服務地址
    range 172.16.100.1 172.16.100.254;               #指定分配IP地址的範圍
    filename "pxelinux.0";                           #指定引導文件
    next-server 172.16.128.14;                       #指定TFTP-SERVER地址
}

    修改完配置文件並保存退出之後,可以使用“dhcpd”命令來檢測語法是否正確,出現如圖所示畫面即表示配置正確:

c7e278500cb8a50bcb10a48bdefa14ef.png-wh_

    然後啓動DHCP服務:

~]# service dhcpd start

    這樣,DHCP服務就配置完成了,接下來配置TFTP-SERVER,在這裏我們需要一個啓動引導文件,這個啓動引導文件可以通過安裝“syslinux”來獲得:

~]# service dhcpd start

    安裝完成之後會在“/usr/share/syslinux/”下產生一個“pxelinux.0”的文件,然後將這個文件複製到TFTP-SERVER的文件目錄“/var/lib/tftpboot/”下,同時,將一些啓動所需要的文件拷貝到這個目錄中:

~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
~]# cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
~]# cp /mnt/cdrom/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot

    然後啓動TFTP服務,需要修改配置文件“/etc/xinetd.d/tftp”,在這個配置文件中,我們需要將“disable”那一項後頭的yes改爲no,當其爲yes的時候是不啓動。如果我們想要指定主目錄的話,可以修改server_args選項,在這個選項中添加“-c”參數可以讓用戶能夠創建目錄。在配置完成之後,使用命令啓動服務:

~]# service xinetd restart

    然後再使用命令查看,如果能夠如圖一樣匹配出結果,即證明服務運行成功:

~]# ss -unlp | grep 69

8f434c4fbcd0269cae41eaaeff7769bc.png-wh_

    到這裏,文件拷貝的任務完成了,還需要設置啓動選項,這個啓動選項是供我們來進行選擇的選項,配置的方法是首先創建一個“pxelinux.cfg”目錄,然後在其中創建一個“default”配置文件(可以拷貝過來),這個步驟必須一點誤差都沒有,否則找不到選項卡,那麼就會失敗:

~]# mkdir /var/lib/tftpboot/pxelinux.cfg
~]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

    拷貝完這個文件之後,對其進行一些修改,添加一個標籤項:

label autoinst
menu label ^Auto install CentOS 6.7
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.128.14/installcentos6/centos6-ks.cfg

    到這裏,我們的引導步驟就做完了,我們可以新建一個虛擬機來進行測試,在建好虛擬機之後,不用選擇光驅,網絡選擇僅主機(也可以不是僅主機,只要能夠連接到這臺服務器即可),如果前面的配置都正確,那麼在等待一段時間之後,就可以看到如圖所示的畫面:

27a37b54fa6fe3d9903dfb961736ed7e.png-wh_

    這個畫面是我們在構建好虛擬機之後,開機直接跳出來的畫面,我們並沒有爲其裝載任何的系統或者光盤鏡像,從開機到加載到當前的這個畫面,都是其通過DHCP和TFTP-SERVER自動完成的。這是在虛擬機裏,我們還需要配置硬件,如果我們在真實的機房環境中,僅僅只需要插好網線,打開電源即可,無疑是大大的方便了安裝系統的人員。

    當到了這個畫面,說明能夠進行引導了,但是還不能開始裝系統,因爲沒有可以使用的軟件包,而且就算有軟件包,也得自己來一次一次的點擊下一步,這是很不方便的,所以我們需要使用一個叫做“kickstart”的東西,這是一個配置文件,其中記錄了安裝一個系統的所有詳細步驟,比如如何進行分區、安裝哪些軟件等。這個配置文件我們可以通過HTTP來進行獲取,所以我們首先要啓動HTTP的服務(這個步驟可以使用任何能夠遠程連接進行讀取文件的服務)。

~]# service httpd start

    然後創建目錄:

~]# mkdir /var/www/html/installcentos6

    在這個目錄中編輯一個叫做“centos6-ks.cfg”的文件:

~]# vim centos6-ks.cfg

    在其中寫入以下內容(由於是爲了測試和實驗,所以我刪除了註釋和大部分的軟件包,在真實使用的時候可以使用kickstart生成軟件來進行生成):

firewall --disabled
install
url --url="http://172.16.128.14/installcentos6/centos"
rootpw  --iscrypted $6$8co3aKHpsGrObvhg$uXiOMHBKT.bc5pXfm9aX.k89rvkrCs5L9FOZPhqFaPyjPuwZAUm/YFAjeMLsfSvq2x3EiwoFMelbxLy12Dnqa0
text
firstboot --disable
lang en_US
keyboard us
selinux --disabled
reboot
timezone Asia/Shanghai
auth --useshadow --passalgo=sha512
bootloader --location=mbr --driveorder="sda" --append="rhgb crashkernel=auto quiet"
zerombr
clearpart --all
part /boot --fstype="ext4" --size=200
part pv.008 --size=61440
volgroup vg0 --pesize=8192 pv.008
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
%packages
@base
@core
%end

    保存退出之後,通過瀏覽器訪問“http://172.16.128.14/installcentos6/”即可看到如圖所示的頁面(創建一個centos的目錄是爲了保存安裝包):

41632fb4277f26ecd0b9c905a893ea8c.png-wh_

    在驗證了可以訪問之後,我們將當前這個系統的光盤綁定在剛纔創建的“centos”目錄上:

~]# mount --bind /mnt/cdrom/ /var/www/html/installcentos6/centos

    然後刷新瀏覽器,並點擊centos那個選項,即可看到如圖所示的光盤中的內容:

d4fc8a158c696118badc4ad99f7d3580.png-wh_

二、進行驗證

    至此,PXE模式自動安裝操作系統的部署與配置就完成了,接下來,我們只需要重啓剛纔作爲測試的哪個虛擬機即可,在等待一會之後,就能看到選擇如何安裝的哪個選項卡,我們選擇第一個選項來進行自動安裝(也可以修改配置文件,將自動安裝設置爲默認,或者刪除其他的選項):

d1649b7b6c442300262b7ed3b8abed18.png-wh_

    選擇了自動安裝之後,操作系統就開始按照設定好的步驟啓動安裝程序,再次等待一段時間之後,安裝程序就開始進行安裝必要的軟件包了。如果不算剛纔選擇如何安裝的過程,那麼從開始加電到安裝完成,計算機都能夠自動完成,那麼當我們在安裝很多臺計算機時都可以只摁個開機鍵即可。不過這種模式有個缺點就是配置一套這樣的PXE自動安裝僅能安裝一種操作系統,即,如果配置的是CentOS 6 ,那麼就不能再配置CentOS 7 的安裝程序了。爲了解決這個問題,在下一篇博客中會說cobbler這個軟件。






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