本文由秀依林楓提供友情贊助,首發于爛泥行天下。
在本次實驗進行之前,首先我們要把公司的網絡環境進行介紹。
注意這個網絡拓撲圖,也是生產環境的一個實例。同時服務器192.168.1.214已關閉iptables、Selinux。
看如下拓撲圖:
kickstart完全配置后的網絡拓撲如下:
目前路由器使用的是軟路由ROS,因為centos的無人值守安裝需要DHCP服務器的配合使用,并且還需要對DHCP服務進行特殊配置。
而一般路由器根本就不支持此特殊功能,所以我們需要關閉路由器ROS的DHCP功能。只讓路由器ROS當作網關使用,當然ROS的其他功能,包括ROS的路由策略、ARP地址綁定、限速等等都可以正常使用。
關閉ROS的DHCP功能,IP—DHCP server,如下:
服務器192.168.1.11安裝的NFS服務,所有的鏡像文件都是存在該服務器上。好了接下來,我們開始一步一步的介紹相關的工作。
要想無人值守安裝Centos,我們需要以下幾個步驟,進行操作:
1、 理解PXE原理
2、 配置NFS服務器,用于存放系統安裝時所需要的文件
3、 配置DHCP服務器,用于給客戶端提供IP地址及其它信息
4、 配置TFTP服務器,用于提供客戶端PXE引導所必須的文件
5、 配置kickstart自動應答安裝文件
6、 使用PXE功能引導客戶機
一、理解PXE原理
kickstart怎么和PXE有聯系?PXE是什么東西?
kickstart無人值守安裝centos,也就是通過網絡安裝centos系統,而且在安裝的過程不需要人工干預系統的安裝。系統會按照你配置好的步驟進行安裝,而網絡安裝centos系統必須需要網卡的支持。
網卡要想去下載遠程服務器上的相關系統鏡像文件,必須支持PXE。
PXE(PRe-boot Execution Environment,預啟動執行環境)是由Intel設計的協議,它可以使計算機通過網絡啟動。該協議分為client和server兩端,PXE client在網卡的ROM中,當計算機引導時,BIOS把PXE client調入內存執行,并顯示出命令菜單,經用戶選擇后,PXE client將放置在遠端的操作系統通過網絡下載到本地運行。
既然是通過網絡傳輸,就需要IP地址。也就是說在其啟動過程中,客戶端請求服務器分配IP地址之后,PXE Client使用TFTP Client 通過TFT協議下載啟動安裝程序所需的文件。
簡單地說PXE網絡安裝,客戶機通過支持PXE的網卡向網絡中發送請求DHCP信息的廣播請求IP地址等信息,DHCP服務器給客戶端提供IP地址和其它信息(TFTP服務器、啟動文件等),之后請求并下載安裝需要的文件。在這個過程中需要一臺服務器來提供啟動文件、安裝文件、以及安裝過程中的自動應答文件等。
下圖中介紹了Linux中自動安裝系統的詳細工作過程:
第一步:PXE Client向DHCP發送請求
首先,將支持PXE的網絡接口卡(NIC)的客戶端的BIOS設置成為網絡啟動,選擇基本所有的網卡都支持網絡啟動。通過PXE BootROM(自啟動芯片)會以UDP方式發送一個廣播請求,向網絡中的DHCP服務器索取IP地址等信息。
第二步:DHCP服務器提供信息
DHCP服務器收到客戶端的請求,驗證是否來至合法的PXE Client的請求,驗證通過它將給客戶端一個“提供”響應,這個“提供”響應中包含了為客戶端分配的IP地址、pxelinux啟動程序(TFTP)位置,以及配置文件所在位置。
第三步:PXE客戶端請求下載啟動文件
客戶端收到服務器的“回應”后,會回應一個幀,以請求傳送啟動所需文件。這些啟動文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
第四步:Boot Server響應客戶端請求并傳送文件
當服務器收到客戶端的請求后,他們之間之后將有更多的信息在客戶端與服務器之間作應答, 用以決定啟動參數。BootROM 由 TFTP 通訊協議從Boot Server下載啟動安裝程序所必須的文件(pxelinux.0、pxelinux.cfg/default)。default文件下載完成后,會根據該文件中定義的引導順序,啟動Linux安裝程序的引導內核。
第五步:請求下載自動應答文件
客戶端通過pxelinux.cfg/default文件成功的引導Linux安裝內核后,安裝程序首先必須確定你通過什么安裝介質來安裝linux。如果是通過網絡安裝(NFS, FTP, HTTP),則會在這個時候初始化網絡,并定位安裝源位置。或許你會說,剛才PXE不是已經獲取過IP地址了嗎?為什么現在還需要一次?這是由于PXE獲取的是安裝用的內核以及安裝程序等,而安裝程序要獲取的是安裝系統所需的二進制包以及配置文件。由于它們需要的內容不同造成PXE模塊和安裝程序是相對獨立的,PXE的網絡配置并不能傳遞給安裝程序。從而進行兩次獲取IP地址過程。
接著會讀取該文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。
第六步:客戶端安裝操作系統
將ks.cfg文件下載回來后,通過該文件找到OS Server,并按照該文件的配置請求下載安裝過程需要的軟件包。
OS Server和客戶端建立連接后,將開始傳輸軟件包,客戶端將開始安裝操作系統。安裝完成后,將提示重新引導計算機。這個時候注意,在重新引導的過程中一定要將BIOS修改回從硬盤啟動,不然的話又會重復的自動安裝操作系統。
ok以上就是PXE網絡啟動的整個過程,下面我們開始正式的配置。
二、配置NFS服務器
配置NFS服務器,有關NFS服務器的搭建與配置可以參考這篇文章《爛泥:NFS存儲與VSphere配合使用》。我們現在把系統安裝時,所需要的文件全部復制到服務器192.168.1.11的/iso目錄下。
系統安裝的文件,我們可以從鏡像文件中得到。
把本地的鏡像文件進行掛載,如下:
mount –o loop /home/datasoft/soft/iso/CentOS-6.5-x86_64-bin-DVD1.iso /iso1
把/ios1目錄下所有的內容全部復制到/iso目錄下,如下:
cp –rv /iso1/* ./
把/iso目錄通過NFS方式映射出去,如下:
該鏡像文件的結構如下:
* isolinux目錄存放光盤啟動時的安裝界面信息
* images目錄包括了必要的啟動映像文件,最重要的是引導第二階段安裝需要用到的鏡像文件install.img,anaconda程序就在這個鏡像文件中
* Packages目錄存放安裝軟件包及信息
* EFI目錄:用于64位的基于EFI的系統引導。其中BOOT目錄下BOOTX64.conf為grub的配置文件,用于顯示引導菜單。
*TRANS.TBL文件:記錄當前目錄的列表,用mkisofs的-T參數重新生成,主要是為了長文件名稱。
NFS服務配置好后,我們現在開始配置DHCP服務。
三、配置DHCP服務器
有關DHCP服務器的搭建與配置,可以參考這篇文章《爛泥:CentOS安裝及配置DHCP服務器》。
我們現在需要做的是在DHCP服務的配置中添加TFTP服務器的地址,以及客戶端所要獲取到的配置文件名稱。如下:
vi /etc/dhcp/dhcpd.conf
next-server 192.168.1.214;
filename "pxelinux.0";
四、配置TFTP服務器
此步驟牽涉的內容比較多,請耐心觀看。
4.1 復制pxelinux.0文件
PXE啟動映像文件由syslinux提供,我們只要安裝syslinux,就會生成一個pxelinux.0文件,只需要將 pxelinux.0 這個文件復制到TFTP根目錄即可。
pxelinux.0文件的作用是加載系統引導文件。如下:
yum –y install syslinux
查看syslinux安裝后,所生成的文檔,如下:
rpm -ql syslinux |grep pxe*
查找syslinux生成的pxelinux.0文件位置,如下:
find / -name pxelinux.0
或者直接使用locate pxe進行搜索也可以,該命令的意思是查找以pxe開頭的所有文件。如下:
locate pxe
查看pxelinux.0文件的內容,可以看到全部是亂碼,如下:
more /usr/share/syslinux/pxelinux.0
要把pxelinux.0復制到tftp的根目錄下,要先安裝和配置TFTP服務器,有關TFTP服務器的安裝及配置可參考這篇文章《爛泥:CentOS安裝及配置TFTP服務器》。在此我們的TFTP根目錄還是使用默認,為/var/lib/tftpboot/。其上傳和下載的權限也已經開啟。如下:
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
4.2 復制boot.msg、splash.jpg、vesamenu.c32文件
以上我們把pxelinux.0文件已經復制到TFTP的根目錄下,下面我們開始復制有關系統內核和系統安裝時的相關文件。這些文件我們可以通過centos鏡像網站進行下載,比如國內的阿里云網站,截圖演示如下:
也可以通過把本地的鏡像文件進行掛載使用,本實驗我們是先把本地的鏡像文件進行掛載,然后通過NFS的方式把該鏡像中的文件復制出來。如下:
mount -t nfs 192.168.1.11:/iso /iso
打開/iso/isolinux目錄,isolinux目錄中主要是存放光盤啟動時的安裝界面信息,在這里面有幾個文件是我們需要的。
boot.msg引導模塊的菜單選項
splash.jpg 啟動時的背景文件
vesamenu.c32用于設置菜單模塊
ll -h /iso/isolinux/
把上述文件復制到TFTP服務器的根目錄,如下:
cp -rv /iso/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
ll -h /var/lib/tftpboot/
4.3 復制vmlinuz、initrd.img文件
下面復制centos的安裝引導文件vmlinuz、initrd.img。
vmlinuz 是可引導的、壓縮的內核文件
initrd.img在系統引導過程中掛載的一個臨時根文件系統,用來支持兩階段的引導過程的文件系統
以上兩個文件存放在/iso/images/pxeboot目錄下:如下:
ll –h /iso/images/pxeboot
cp -rv /iso/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
ll -h /var/lib/tftpboot/
以上文件復制完畢后,我們來創建pxelinux.cfg目錄及default文件。
4.4 創建pxelinux.cfg目錄及default文件
pxelinux.cfg目錄主要是用來存放default文件。default文件主要是用來系統正常引導后的相關配置。如下:
mkdir /var/lib/tftpboot/pxelinux.cfg
因為default文件的內容格式比較復雜,所以在此我們不建議手工創建。centos鏡像文件中已經為我們提供了一個模版,該模版是/iso/isolinux/isolinux.cfg,如下:
ll -h /iso/isolinux/
復制isolinux.cfg并重命名為default,如下:
cp /iso/isolinux/isolinux.cfg /var/lib/tftpboot/pexlinux.cfg/default
4.5 修改default文件內容
在修改default文件內容之前,先查看其文件的內容,如下:
more /var/lib/tftpboot/pexlinux.cfg/default
通過上圖我們可以看到,default文件的內容非常多。其實有很多是我們不需要的。修改該配置文件,只保留如下內容:
vi /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 60
display boot.msg
menu background splash.jpg
menu title ilanni install CentOS 6.5!
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.1.214/pub/ks.cfg
其中我們只需要注意ks=ftp://192.168.1.214/pub/ks.cfg這行,這行是需要kickstart生成的配置文件,而是使用的ftp方式訪問該文件。在這我們先把該文件的名稱填寫進來。
下面我們開始安裝及配置kickstart自動應答文件。
五、配置kickstart自動應答安裝文件
5.1 安裝kickstart軟件包
首先要安裝kickstart軟件包,使用如下命令:
yum -y install system-config-kickstart
kickstart安裝完畢后,你會在/root/目錄下生成anaconda-ks.cfg文件。該文件就是kickstart自動應答文件的一個模版,如下:
find / -name an*.cfg
查看該配置文件,如下:
more /root/anaconda-ks.cfg
如果你對這個配置文件比較熟悉的話,你可以直接把該文件復制一份到/var/ftp/pub目錄下,并重命名為ks.cfg。修改保存后,就可以去啟動客戶端。
5.2 生成kickstart自動應答文件
但是對于不熟悉該自動應答配置文件的童鞋來說,還是通過圖形界面方式來生成kickstart自動應答文件吧。
注意圖形界面生成kickstart自動應答文件,一定要再kickstart服務器上安裝圖形界面。
在終端下輸入system-config-kickstart,系統就會彈出kickstart的配置界面,如下:
注意此命令可以在普通用戶下使用,也可以通過centos圖形界面的菜單打開,如下:
下面我們開始配置kickstart,如下:
該界面主要是配置語言、鍵盤類型、時區、root用戶的密碼
該界面主要是配置是通過何種方式安裝系統的,在此我們選擇的是NFS方式。這個我們也在前文提到過。
該界面主要是詢問是否安裝新的boot loader和MBR。
該界面主要是配置系統的分區,注意圖形界面下不能進行LVM的配置。如果要進行LVM配置的話,可以通過修改kickstart的配置文件來達到目的。這個我會在以后的文章中進行介紹。
該界面主要是配置客戶端的網卡名稱以及該網卡的IP地址形式,我們在此為網卡命名為eth0,并且配置該網卡的獲取IP地址形式是DHCP方式的。
該界面主要是配置防火墻和Selinux,默認在此我們禁用。
該界面配置是否顯示配置。
該界面主要配置需要安裝的軟件包。在此我要提醒下,如果你的centos鏡像使用的是mini版的話,在安裝包選擇base后,系統安裝時會報錯。
但是centos鏡像文件使用的是DVD版的話,安裝包選擇base正常安裝。
該界面配置系統安裝前需要執行的腳本。
該界面配置系統安裝后需要執行的腳本。
以上配置完畢后,我們就可以保存此配置文件。點擊“file”-“save”,如下:
該配置文件默認會保存到,用戶的home目錄下,如下:
查看ks.cfg自動應答文件的內容,如下:
通過上圖我們可以看到,此配置文件的內容和我們剛剛通過圖形界面配置意義對應的。
5.3 安裝vsftp服務
在前文,我們提到過PXE的default文件的ks文件路徑是存放在/var/ftp/pub目錄下,如下:
這個是通過FTP進行連接的。那么我們就要按照vsftpd,如下:
yum –y install vsftpd
復制kickstart的自動應答文件ks.cfg,到ftp的公共目錄下并修改其相應的用戶組,如下:
cp /root/ks.cfg /var/ftp/pub/
ll -h /var/ftp/pub/
chown -R nobody:nobody /var/ftp/pub/
六、使用PXE功能引導客戶機
上述配置完畢后,我們就可以啟動客戶端來進行centos的網絡安裝,在客戶端的BIOS中需要配置PXE啟動。
配置完畢后,我們就可以啟動客戶端。如下:
通過上圖,我們可以知道客戶端已通過DHCP服務器獲取到IP地址。
通過上圖我們可以看出系統已經成功下載內核文件,并加載成功。
開始安裝系統。
新聞熱點
疑難解答