天天看點

pxe安裝centos系統

環境:

系統:centos7.1

平台:VirtualBox虛拟機

所安裝的系統:centos6.7、centos7.1

大體的過程:

1、由dhcp為客戶機配置設定位址,并提供客戶機啟動所需的檔案和tftp伺服器位址。

2、客戶機自動從tftp下載下傳bootloader第一階段所需的檔案。pxelinux.0檔案

3、自動開始從tftp下載下傳bootloader第二階段所需的檔案(提供視窗菜單,并啟動相應核心和傳遞參數)。

isolinux.cfg ,splash.jpg,esamenu.c32,vmlinuz,initrd.img。

4、核心運作之後,啟動anaconda安裝程式并加載kickstart檔案,從http伺服器下載下傳程式開始安裝。

注意:centos7字元界面安裝的時候最好不要小于1G的記憶體。不然可能會有稀奇古怪的問題。圖形界面安裝要更多的記憶體。

一、使用centos6.7自帶的引導檔案。

安裝centos6.7.

1、安裝配置dhcp、tftp與httpd服務。

配置dhcpd。配置目錄/etc/dhcp/。  複制dhcp配置樣例檔案:

配置結果:

啟動的時候如果有問題,可以用指令行啟動dhcpd,會顯示哪些行有錯誤。

啟動完成 ss -unl查找67端口是否打開,沒問題我們用客戶機測試一下。

pxe安裝centos系統

看起來工作正常。

啟動tftpd,在centos7裡面,systemd就已經有xinetd的特性了,不用再來使用xinetd啟動tftp。我們隻要啟動socket就可以, 主程式systemd會帶為啟動。

systemctl start tftpd.socket    , 啟動并檢視69/UDP是否開啟。

啟動httpd。預設配置就可以了。

2、複制所需檔案啟動安裝。

安裝syslinux。 這個程式裡面是一堆的bootloader檔案。其中也包括pxe網絡的bootloader。相當于是grub的第一階段引導。

這裡的pxelinux.0加載完成以後,它就會再從相同位置加載第二階段所需的檔案。第二階段再加載核心與initrd。

那麼現在用于引導的第一和第二階段就已經好了。就剩在配置菜單中為核心傳遞ks參數。不過在此之前我們就先來提供ks檔案與軟體倉庫,軟體倉庫這裡就用CD光牒了。

傳遞給核心的ks參數是anacoda程式要用的,也是自動安裝的關鍵。

我這裡的ks檔案内容:

這個檔案中有的内容也不是很清楚, 直接複制馬哥的,自己給簡化了一下。可以安裝system-config-kickstart程式來設定ks檔案。

http://www.mit.edu/afs.new/athena/system/rhlinux/redhat-6.2-docs/HOWTOS/other-formats/pdf/KickStart-HOWTO.pdf

6.The KickStart config file.    說明ks檔案的,有示例。或者:

https://www.redhat.com/promo/summit/2010/presentations/summit/decoding-the-code/wed/cshabazi-530-more/MORE-Kickstart-Tips-and-Tricks.pdf

可惜都是英文的

pxe安裝centos系統

檔案放在httpd伺服器的主目錄裡。 anaconda支援http協定,不用再使用tftp了。

同時ks檔案中所指定的url就是倉庫的位置,我這裡就在相同目錄的centos6下面。

設定引導菜單。

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

把用不到的都删除了。 并且添加參數ks。 就是從哪裡下載下傳ks檔案。

現在我們引導的第一階段和第二階段看起來都完成了。核心如果加載順利,并啟動anaconda,然後再成功下載下傳ks檔案,anaconda如果可以順利的按着ks檔案安裝完成,也就算安裝完成了。

pxe安裝centos系統

在這裡倒數第二行可以看到為什麼要在pxelinux.cfg/default裡面放菜單。 pxelinux.0預設讀取的檔案就是這個。

pxe安裝centos系統
pxe安裝centos系統
pxe安裝centos系統

開始安裝了。結果也正常。

安裝centos7.1。

個人以為在一般情況下,第一二階段的引導與系統版本的關系并不是必須。起碼在同是centos系統的6和7版本之間還可以通用。

那麼即然上面我們的引導都做好了,這裡也就隻剩複制一下核心檔案,添加啟動菜單,ks檔案與軟體倉庫了。

注意:centos7安裝的時候最好不要小于1G的記憶體。不然可能有稀奇古怪的問題。

ks檔案:

來看一下現在的httpd的根目錄:

複制一下核心檔案 : 目前目錄在tftp根目錄。

注意:不要複制成centos6的核心了。

修改啟動菜單。

也就是多了4行用于centos7的菜單。menu default是用于預設啟動的。

我們來縷一下,dhcp發送啟動引導檔案。客戶機收到檔案啟動引導,開始加載第二階段。成功以後,會開始加載核心檔案,核心檔案再啟動anaconda。anaconda加載ks檔案,開始安裝過程。

我們來測試一下:

pxe安裝centos系統

看起來工作正常。重新進入6也工作正常 。 下面是7的。

pxe安裝centos系統

這個product.img下載下傳失敗沒有影響,CD光牒裡面也沒有這個檔案。

pxe安裝centos系統

格式化成功,并開始安裝程式了,我們也可以看到一共469個包。

pxe安裝centos系統

這裡時間有點長,耐心等一下。 結果也正常。重新開機進入系統。這個方塊是因為ks檔案中的lang指定的是CN, 注釋掉lang就可以正常顯示了。

二、使用centos7的引導檔案。

使用centos7的引導檔案也是一樣,不過剛才試的時候出了點問題,而現在又好了,有點奇怪,不知道好用不。

複制centos7CD光牒isolinux下的vesamenu.c32到tftp根目錄,覆寫原來centos6的。

複制centos7CD光牒的isolinux.cfg到pxelinux.cfg/default

我這裡的内容,基本上也就是把核心傳遞參數那裡改一下就可以了。 這個檔案有好多顔色控制。我這裡就不删除了,格式基本也沒有變化,用centos6帶的那個菜單檔案也可以用。

啟動測試:

pxe安裝centos系統
pxe安裝centos系統
pxe安裝centos系統

正常安裝完成。centos6測試了下,也正常。

三、使用第三方的引導檔案。

我們還可以用syslinux包裡帶的一些引導檔案。

cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk}

上面這幾個檔案,用到的也就menu.c32檔案,其它另外的兩個c32檔案不知道是幹什麼用的,另外memdisk好像是一個核心檔案。

menu.c32是字元界面的視窗, 我們上面用的vesamenu.c32是圖形的。

我這裡隻用menu.c32和一個菜單檔案就可以用了。

菜單檔案還是那個default,隻不過要自己定了。與centos6上面的差不多。

我現在的tftp目錄:

initrd.7.img  initrd.img  menu.c32  pxelinux.0  pxelinux.cfg  vmlinuz  vmlinuz.7

當然可以忽略centos6的initrd與核心了。

pxe安裝centos系統
pxe安裝centos系統

工作正常。 不過用它安裝centos6的時候有時候會在選擇鍵盤的那裡要手動。也不知道是不是剛才設定有問題,現在倒是自動安裝了。

加上6以後:

現在的菜單檔案:

pxe安裝centos系統
pxe安裝centos系統

這就完成了。現在是在虛拟機中做的, 在實際環境中可能又會有各種各樣的毛病。 而且有時候可能要安裝多個版本的系統,如ubuntu, fedora...... 。這時就要使用cobbler來安裝。

cobbler其實是pxe的二次封裝,一些檔案或配置可以自動生成,使用起來很友善。

用這種簡單的菜單再用vesamenu.c32,發現很有意思。而且使用起來也沒有什麼問題。

pxe安裝centos系統

謝謝浏覽。

pxe安裝centos系統