PXE自動服務器安裝原理
PXE(Pre-boot execution environment)是intel公司開發(fā)的一個技術,支持工作站從遠程服務器上下載鏡像儒洛,并由此啟動操作系統(tǒng)琅锻。在啟動過程中向胡,終端請求分配IP地址,在使用TFTP協(xié)議下載一個啟動軟件包到本地內存中執(zhí)行处硬,最后由這個啟動軟件包完成終端基本軟件的設置荷辕,從而完成操作系統(tǒng)的安裝件豌,其工作流程如下:
PXE自動安裝需要部署的服務
在通過PXE安裝ubuntu操作系統(tǒng)時茧彤,PXE服務器需要提供如下4個服務
DHCP: dhcp服務用于在OS安裝過程中進行IP地址的分配曾掂。
TFTP:TFTP服務用于OS安裝過程中請求下載系統(tǒng)引導文件珠洗。
HTTP:HTTP服務用于Ubuntu安裝過程中請求軟件包
DHCP服務安裝和配置
DHCP服務用于向客戶端動態(tài)分配IP地址,可以使用isc-dhcp-server提供DHCP服務蝴猪,在ubuntu系統(tǒng)下,可以通過apt安裝該服務窖式。
apt-get install isc-dhcp-server
isc-dhcp-server的配置涉及到兩個配置文件动壤。
1:/etc/default/isc-dhcp-server配置文件琼懊,該配置文件主要用于指定在哪個網(wǎng)口上提供DHCP服務。
如下是配置樣例(比較簡單):
2:/etc/dhcp/dhcpd.conf配置文件启妹,該配置文件用于描述dhcp服務如何分配ip地址
如下是一個樣例:
TFTP服務安裝和配置
TFTP服務用于在啟動階段向客戶段提供引導文件,在ubuntu系統(tǒng)下喂柒,可以通過tftpd-hpa提供tftp服務檬输,可以通過apt進行安裝匈棘。
apt-get install tftpd-hpa
tftpd-hpa的配置文件位于/etc/default/tftpd-hpa位置,如下是一個配置樣例:
注意:關鍵配置項TFTP_DIRECTORY用于描述tftp服務所使用的根目錄逃默,需要根據(jù)部署情況進行調整完域,其他配置參數(shù)可以不做變化。
TFTP_DIRECTORY參數(shù)指定的目錄下保存PXE安裝時所使用到的initrd筒主,ldlinux.c32鸟蟹,pxelinux.0建钥,vmlinuz文件熊经,以及pxelinux.cfg目錄。
HTTP服務的安裝和配置
通過PXE自動安裝Ubuntu 20.04版本時镐依,通過http服務提供了ISO鏡像文件及自動配置文件匹涮。在Ubuntu系統(tǒng)下可以通過apach2提供http服務,可以通過如下命令進行安裝槐壳。
apt-get install apache2
apache2的配置文件位于/etc/apache2/sites-available/000-default.conf路徑然低,如下是一個配置樣例:
注意配置參數(shù)DocumentRoot和Directory,這兩個參數(shù)取值保持相同务唐,指定了http服務所使用的根目錄雳攘,在該目錄下放置Ubuntu20.04的ISO鏡像文件以及自動配置文件。
PXE安裝文件準備
通過PXE自動安裝Ubuntu20.04時枫笛,還需要準備如下的一些文件
1:ubuntu-20.04.1-live-server-amd64.iso鏡像文件(用于提取內核及安裝包吨灭,可以從Ubuntu官網(wǎng)下載)
2:pxelinux.0(pxe引導文件,需要從ubuntu官網(wǎng)下載)
3:ldlinux.c32(該文件可以從ubuntu-20.04.1-live-server-amd64.iso鏡像文件中找到)
4:vmlinuz Linux內核文件(該文件可以從ubuntu-20.04.1-live-server-amd64.iso鏡像文件中找到)
5:initrd 臨時根文件鏡像(該文件可以從ubuntu-20.04.1-live-server-amd64.iso鏡像文件中找到)
6:default 配置文件(該文件需要手工編寫刑巧,用于描述內核如何引導啟動)
7:user-data 配置文件(該文件需要手工編寫喧兄,用于指示ubuntu在安裝過程中選擇合適的語言繁莹,鍵盤等信息,Ubuntu20版本新引入横辆,可以用于替換以前preseed方式)
8:meta-data 配置文件(一個空文件,與user-data配合使用)锌畸。
以上幾個文件中比默,pxelinux.0,ldlinux.c32,vmlinuz ,initrd 需要放置在tftp服務根目錄下:default 文件需要放置在tftp服務根目錄下的pxelinux.cfg子目錄锭魔;ubuntu-20.04.1-live-server-amd64.iso,user-data 笙蒙,meta-data需要放置在http服務根目錄下艇搀。
此外default 配置文件需要手工編寫焰雕,在Ubuntu20.04場景下爵赵,其內容可以如下所示:
LABEL?install
????KERNEL?vmlinuz
????INITRD?initrd
????APPEND?root=/dev/ram0?ramdisk_size=1500000?ip=dhcp?url=http://192.168.1.1/ubuntu-20.04.1-live-server-amd64.iso?autoinstall?ds=nocloud-net;s=http://192.168.1.1/
user-data文件是Ubuntu20版本用于描述自動安裝的一個配置文件(yaml格式),一個最簡單的user-data配置文件內容如下(更復雜靈活的配置则剃,可以參考Ubuntu官網(wǎng)進行編寫):
#cloud-config
autoinstall:
??version:?1
??identity:
????hostname:?ubuntu-server
????password:?"$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
????username:?ubuntu
這個user-data配置文件只簡單的指定了系統(tǒng)安裝時需要的“username”和“password”,通過該文件也可以進行更靈活的安裝配置,例如設置網(wǎng)絡,分區(qū)等信息艘绍。(默認用戶名和密碼都是ubuntu)航夺。
以上工作內容,本人寫了一個簡單的shell腳本進行自動完成,可以在github如下位置找到涮俄。
https://github.com/georgeliwei/ToolCode/tree/master/autoPxe
附:如果該文章對你有所幫助苞尝,請盡情打賞!4笤邸!