在工作環境中,批量安裝、無鍵盤滑鼠、無顯示器、無光驅安裝作業系統都需要采用非互動式安裝。
pxe安裝就是可以通過網絡自動加載系統核心,并啟動安裝程式,再配合kickstart配置檔案,完成無互動式安裝的方式。
一、基本概念
dhcp
動态主機設定協定(dynamic host configuration protocol, dhcp)是一個區域網路的網絡協定,使用udp協定工作在67号端口,主要用途是給網絡中的裝置自動配置設定ip位址。
tftp
tftp(trivial file transfer protocol,簡單檔案傳輸協定)是用來在客戶機與伺服器之間進行簡單檔案傳輸的協定,提供不複雜、開銷不大的檔案傳輸服務。使用udp協定端口号69。由于使用udp協定,建議使用環境在網絡傳輸品質高的區域網路中使用,且傳輸檔案小而少。不支援使用者互動,即不能列出伺服器目錄内容。服務運作依賴超級守護程序xinetd。
xinetd
超級守護程序(extended internet serivices daemon),它是一個管理其它提供網絡服務程序的程序,常駐記憶體。它管理一些不經常啟動的網絡服務,一旦用戶端發起請求,它啟動相應的處理服務程序,用完關閉。
這樣節省了系統資源的占用,但是有請求時才啟用,就不能做到快速響應。對于頻繁發起服務的請求,就會頻繁建立關閉服務程序,反而導緻性能下降。
pxe
pxe,預啟動執行環境(preboot execution environment,也被稱為預執行環境)提供了一種使用網絡接口(network interface)啟動計算機的機制。這種機制讓計算機的啟動可以不依賴本地資料儲存設備(如硬碟)或本地已安裝的作業系統。
pxe裝置可以通過網絡接口卡(nic),使用dhcp、tftp協定來搜尋網絡伺服器上的引導程式。
pxelinux.0
pxe通過網絡查找加載的引導程式,稱為網絡引導程式nbp。
pxelinux.0就是一種nbp。它主要作用是裝載執行指派的預引導工作所需的作業系統。
pxelinux.0 檔案是 syslinux 這一開放源代碼項目的一部分的改進版本。雖然 pxelinux.0 主要是 linux 加載器,但它也可以裝載其他作業系統。它的工作方式是使用位于 tftp 伺服器上的配置檔案來提供引導指令。
kickstart安裝
由紅帽公司建立的安裝方式,通過kickstart,系統管理者能夠使用自動化方式完成系統安裝。
有一個檔案/root/anaconda-ks.cfg ,它是紅帽系安裝過程中生成的簡單的kickstart檔案。
kickstart檔案分為三個部分,指令段、軟體包段、腳本段,各部分要遵循一定的順序。
需要了解的指令: install指令 告訴系統是安裝一個全新的系統而不是更新存在的系統(預設)。安裝時,你可以從cdrom、硬碟驅動器、nfs、或者url(ftp,http安裝)中指定安裝類型。install指令和安裝方法必須在不同的行設定。 url指令 支援通過ftp和http從遠端伺服器安裝。通常要使用--url選項。例如,url --url=url repo指令 配置另外的yum倉庫,多個repo指令指定多個yum源。
可以使用圖形配置界面system-config-kickstart來配置kickstart, 可以基于/root/anaconda-ks.cfg檔案,通過圖形化視窗再次修改後得到新的kickstart檔案。使用yum -y install system-config-kickstart安裝此工具。
使用ksvalidator來驗證文法。
二、實驗環境的準備
前提:
安裝虛拟機軟體vmware,或者其他虛拟機軟體,例如virtualbox開源小巧功能齊全,實驗示範的配置都大同小異。 将centosCD光牒挂載到/media/cdrom,配置本地yum源備用。配置yun請參看部落客博文 《linux的程式安裝和包管理》,此類博文很多,這裡不再贅述。 pxe啟動還需要pxelinux.0,需要安裝syslinux包。 自動化安裝,需要提供kickstart檔案,可以采用http/ftp協定提供此檔案url。還需要在kickstart檔案中指明repo倉庫。
環境搭建:
1、安裝實驗系統并設定實驗網絡環境
在虛拟機中安裝centos 6.5和windows xp系統。
按右下角網絡設定centos和xp的網絡連接配接為vmnet2,這樣2台虛拟機就可以在一個虛拟網絡中通信了。
實驗環境采用192.168.23.0/24,centos位址為192.168.23.1,在/etc/sysconfig/network-scripts/ifcfg-eth0修改參數,如下:
檢查centos的網絡配置
2、檢查centos的tftp服務和tftp用戶端。
這裡沒有安裝,使用yum list all tftp*,檢視後安裝相關包,yum –y install tftp* 。
安裝完成如下,共有三個包安裝了,tftp用戶端、tftp-server服務和tftp-server所依賴的xinetd服務包。
3、檢查centos的dhcp服務。安裝方法同上,包名dhcp
4、關閉iptables防火牆服務。
5、安裝syslinux包
6、安裝httpd包。預設已安裝,否則請參照上面方法安裝
到此,實驗環境已經搭建成功。
三、服務準備
1、dhcp服務配置
啟動失敗,什麼原因,檢視vim /etc/dhcp/dhcpd.conf
原來dhcp管理的網段不在本機網段,修改配置檔案
再次啟動dhcp,成功
使用xp測試dhcp,成功。至此就可以使用這台xp中的xshell來完成其它操作。
2、tftp服務配置
檢視xinetd服務,配置xinet,并啟動之
由上查詢的包資訊可知配置檔案路徑和tftp的根目錄
上面的多步操作中,修改了配置檔案/etc/xinetd.d/tftp,将其中的disable改為no,見下圖
然後啟動了xinetd,也可以在xinetd啟動後,修改了配置檔案,采用重新裝載xinetd,如下:
将測試檔案test.txt放在tftp的根目錄/var/lib/tftpboot下
測試成功,删除根目錄的測試檔案
3、修改dhcp配置檔案
修改并重新裝載。next-server被用來指定一台伺服器的主機位址,這台主機是filename指定的啟動檔案所在的伺服器。
4、配置web伺服器
四、pxe啟動安裝
1、pxelinux.0
2、在tftp服務的根目錄中添加配置檔案目錄
名稱為pxelinux.cfg。pxelinux搜尋配置檔案有一定的規則,pxelinux.cfg中的配置檔案命名為default。而這個檔案可以修改isolinux.cfg檔案獲得
3、複制配置檔案依賴的檔案
4、複制核心檔案、ramdisk(注意檔案的位置是pxeboot目錄)
5、提供安裝樹
将kickstart檔案、安裝源、yum源挂載到web站點目錄中,使pxe啟動過程可以通過http協定通路url指向的資源。
6、再次修改配置檔案
1)修改/var/www/html/centos/6/centos6.cfg檔案,全文如下
2)修改/var/lib/tftpboot/pxelinux.cfg/default
在預設項後面增加ks=http://192.168.23.1/centos/6/centos6.cfg
7、啟動http服務
8、建立新虛拟機,調整bios,讓從網卡啟動,網絡處于vmnet2中,網卡自動擷取ip位址。
至此,pxe安裝系統成功!
特别提醒:如果在bios中設定了網卡為啟動第一項裝置,一旦系統在硬碟安裝成功,如果還是從網卡啟動,有可能循環安裝。
參考資料
http://www.novell.com/zh-cn/documentation/zcm10/zcm10_preboot_imaging/data/bvb2dvw.html
pxelinux
http://www.syslinux.org/wiki/index.php/pxelinux
kickstart
https://fedoraproject.org/wiki/anaconda/kickstart/zh-cn#chapter_7._.e8.ae.a9.e5.ae.89.e8.a3.85.e6.a0.91.e5.8f.af.e7.94.a8