溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

發(fā)布時(shí)間:2021-11-06 09:47:26 來(lái)源:億速云 閱讀:131 作者:柒染 欄目:建站服務(wù)器

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

1 需求分析


隨著互聯(lián)網(wǎng)技術(shù)的不斷壯大,服務(wù)器數(shù)量也在不斷的增加,IT運(yùn)維已經(jīng)成為IT服務(wù)內(nèi)涵中重要的組成部分。面對(duì)越來(lái)越復(fù)雜的業(yè)務(wù),面對(duì)越來(lái)越多樣化的用戶(hù)需求,不斷擴(kuò)展的IT應(yīng)用需要越來(lái)越合理的模式來(lái)保障IT服務(wù)能靈活便捷、安全穩(wěn)定地持續(xù)保障,這種模式中的保障因素就是IT運(yùn)維。從初期的幾臺(tái)服務(wù)器發(fā)展到龐大的數(shù)據(jù)中心,單靠人工已經(jīng)無(wú)法滿足在技術(shù)、業(yè)務(wù)、管理等方面的要求,那么標(biāo)準(zhǔn)化、自動(dòng)化、架構(gòu)優(yōu)化、過(guò)程優(yōu)化等降低IT服務(wù)成本的因素越來(lái)越被人們所重視。而如何自動(dòng)化批量部署安裝一個(gè)穩(wěn)定的系統(tǒng)是實(shí)現(xiàn)自動(dòng)化的第一步。

2 PXE簡(jiǎn)介


PXE,就是預(yù)啟動(dòng)執(zhí)行環(huán)境,是一種引導(dǎo)啟動(dòng)的方式。這種協(xié)議一般由兩部分構(gòu)成,一部分是服務(wù)器端,一個(gè)是客戶(hù)端。簡(jiǎn)單來(lái)說(shuō),我們通過(guò)這種方式可以自己創(chuàng)建一個(gè)“安裝源”,在安裝系統(tǒng)的時(shí)候只要能找到這個(gè)“源”便可以實(shí)現(xiàn)系統(tǒng)的安裝。在實(shí)現(xiàn)無(wú)人值守的安裝前,我們必須要搭建一些服務(wù),來(lái)實(shí)現(xiàn)“安裝源”的建立,例如ftp、http、tftp、dhcp等。當(dāng)一臺(tái)主機(jī)啟動(dòng)時(shí),標(biāo)準(zhǔn)輸入輸出會(huì)將PXE客戶(hù)端調(diào)入我們的內(nèi)存中進(jìn)行相關(guān)的操作,并提示相關(guān)的選項(xiàng),在這里我們可以進(jìn)行選擇。PXE的客戶(hù)端通過(guò)網(wǎng)絡(luò)下載(download)啟動(dòng)文件到本地運(yùn)行。具體過(guò)程是,PXE客戶(hù)端通過(guò)網(wǎng)卡向局域網(wǎng)內(nèi)發(fā)送ip請(qǐng)求,然后DHCP服務(wù)器會(huì)提供給給它一個(gè)ip地址和系統(tǒng)安裝所需要的文件,接下使用接收到的文件進(jìn)行系統(tǒng)安裝。而安裝的過(guò)程又需要其他服務(wù)器提供的資源,例如:yum源,內(nèi)核文件等,當(dāng)主機(jī)拿到這些資源,便可以順利的安裝了。最終結(jié)果是:任意一臺(tái)主機(jī)在選著網(wǎng)絡(luò)啟動(dòng)時(shí)會(huì)獲取DHCP服務(wù)器分發(fā)的ip,通過(guò)通過(guò)獲取到的ip地址與局域網(wǎng)內(nèi)的TFTP服務(wù)器通信并獲取啟動(dòng)文件,與FTP或者HTTP通信并獲取yum源文件及內(nèi)核文件等。之后開(kāi)始自動(dòng)安裝,而這個(gè)過(guò)程不需要人在做任何操作。

PXE安裝優(yōu)點(diǎn),這種安裝系統(tǒng)的方式可以不受光驅(qū),光盤(pán)以及一些外部設(shè)備的限制,還可以做到無(wú)人值守,大大減輕了運(yùn)維人員的工作負(fù)荷,像在一些主機(jī)數(shù)量龐大的機(jī)房進(jìn)行批量安裝,PXE將是你不二的選擇。

3整體方案


這一小節(jié)我們主要介紹方案選擇,在說(shuō)方案之前先來(lái)看看PXE部署思路。部署思路其實(shí)并不難,在實(shí)現(xiàn)PXE自動(dòng)批量安裝系統(tǒng)時(shí),首先我們需要有DHCP服務(wù)器為我們提供IP地址,如果在一個(gè)網(wǎng)絡(luò)中你連IP地址都獲取不到,何談自動(dòng)化。其次我們要安裝一個(gè)系統(tǒng),那么需要的文件必須要有人為我們提供才可以,應(yīng)為是網(wǎng)絡(luò)自動(dòng)安裝,本地是沒(méi)有任何資源的,我們可以使用HTTP,F(xiàn)TP服務(wù)來(lái)實(shí)現(xiàn)。最后就是獲取我們的安裝文件,這些文件會(huì)引導(dǎo)我們的計(jì)算機(jī)如何啟動(dòng),如何配置,我們選擇TFTP服務(wù)起來(lái)提供。整體框架如下圖:

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

方案1:選則一臺(tái)主機(jī)同時(shí)搭建HTTP、TFTP、DHCP服務(wù),為該子網(wǎng)內(nèi)的主機(jī)提供服務(wù)。

方案2:選擇一臺(tái)主機(jī)搭建HTTP、TFTP服務(wù),做提供資源的服務(wù)器,另為一臺(tái)主機(jī)單間DHCP服務(wù),提供IP地址。

上述提供了兩種方案,當(dāng)然了,如果你不怕資源浪費(fèi),你也可以選擇每種服務(wù)搭建在一臺(tái)主機(jī)上,做相應(yīng)服務(wù)的提供,不過(guò)個(gè)人并不建議??紤]到節(jié)約資源的目的,我們選擇方案一。

4 服務(wù)選型


4.1 DHCP服務(wù)

由于我們是實(shí)現(xiàn)自動(dòng)化批量安裝部署,所以,能夠與其他主機(jī)通信是前提,而要想獲取IP并實(shí)現(xiàn)通信,我們必須要有DHCP服務(wù)器為大量的主機(jī)提供ip地址才行。

DHCP就是動(dòng)態(tài)主機(jī)設(shè)置協(xié)議,主要是為客戶(hù)端分發(fā)IP,并且是自動(dòng)分發(fā)IP的,一臺(tái)主機(jī)通過(guò)DHCP獲取的地址是動(dòng)態(tài)的,每次獲取的地址都有可能不同,改地址是DHCP服務(wù)器暫時(shí)分配給用戶(hù)使用的,當(dāng)主機(jī)關(guān)機(jī)之后則會(huì)返回這個(gè)ip地址,此時(shí)如果有其他用戶(hù)請(qǐng)求,DHCP服務(wù)器則會(huì)將該IP地址分配給他。局域網(wǎng)中的每臺(tái)主機(jī)都可以充當(dāng)DHCP服務(wù)器,只要我們安裝DHCP服務(wù),并做相應(yīng)的配置即可,這里的配置主要是子網(wǎng)的配置,配置其他主機(jī)能使用IP地址的范圍,例如:配置子網(wǎng)為192.168.14.0,該子網(wǎng)內(nèi)主機(jī)獲取IP的范圍為192.168.14.1~192.168.14.100。那么我們就可以打開(kāi)DHCP的配置文件/etc/dhcp/dhcpd.conf做如下配置:

subnet 192.168.14.0 netmask 255.255.255.0 {

        range 192.168.25.50 192.168.25.100;

        next-server 192.168.25.107;     # 指明tftp服務(wù)器的地址

        filename "pxelinux.0";          # 指定PXE文件

}

4.2 HTTP服務(wù)

由于我們要獲取安裝系統(tǒng)服務(wù)的yum源以及內(nèi)核文件,虛擬根文件,這些文件都是大文件,在傳輸時(shí)我們必須保證其能夠安全傳輸,所以我們選擇了HTTP服務(wù),當(dāng)然了,選擇FTP服務(wù)也是可以的。

HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫(xiě)。是互聯(lián)網(wǎng)上廣泛試用的協(xié)議。是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分等。HTTP包含命令和傳輸信息,不僅可用于Web訪問(wèn),也可以用于其他因特網(wǎng)/內(nèi)聯(lián)網(wǎng)應(yīng)用系統(tǒng)之間的通信,從而實(shí)現(xiàn)各類(lèi)應(yīng)用資源超媒體訪問(wèn)的集成。

4.3 TFTP服務(wù)

TFTP是一種文件傳輸服務(wù),用于服務(wù)器與客戶(hù)端進(jìn)行文件的傳輸,不過(guò)他只能進(jìn)行簡(jiǎn)單的文件傳輸,這個(gè)服務(wù)開(kāi)銷(xiāo)不大,所以并不能進(jìn)行大文件的傳輸,多用于小文件的傳輸。他沒(méi)有FTP那么強(qiáng)大,但是TFTP使用UDP協(xié)議傳輸數(shù)據(jù),有些時(shí)候比FTP更加方便,它所監(jiān)聽(tīng)的端口為69。由于我們是在局域網(wǎng)中,系統(tǒng)相對(duì)安全,而提供的數(shù)據(jù)也不是很大,所以TFTP是實(shí)現(xiàn)PXE的不二選擇。

5 功能實(shí)現(xiàn)


5.1安裝前準(zhǔn)備

        由于涉及到主機(jī)間不同基于不同協(xié)議的通信,所以為了避免不必要的麻煩,我們選擇關(guān)閉防火墻以及selinux。生產(chǎn)場(chǎng)景中不建議這樣做。

[ root@vinsent ~ ]#iptables -F     # 關(guān)閉防火墻

[ root@vinsent ~ ]#setenforce 0     # 臨時(shí)關(guān)閉selinux

[ root@vinsent ~ ]#vim /etc/selinux/config     # 修改文件永久關(guān)閉selinux

...前面省略

SELINUX=disabled                 # 設(shè)置SELINUX的值為disabled

...后面省略

5.2配置靜態(tài)IP地址

      由于我們?cè)谇懊娣桨阜治鲋羞x擇了方案1,即將所有服務(wù)搭建在同一臺(tái)服務(wù)器上。由于做DHCP服務(wù)的主機(jī)的IP地址必須固定,所以我們要先配置服務(wù)器的IP地址。由于我是在 CentOS 7系統(tǒng)上搭建的服務(wù)器,所以有許多命令只有CentOS7才能使用。CentOS6及之前的版本請(qǐng)自行查閱相關(guān)文檔。

[ root@vinsent ~ ]#vim /etc/sysconfig/network-scripts/ifcfg-ens33  # 設(shè)置靜態(tài)IP

DEVICE=ens33

BOOTPROTO=static

IPADDR=192.168.14.201

PREFIX=24

ONBOOT=yes

[ root@vinsent ~ ]#systemctl restart network.service     #重啟網(wǎng)絡(luò)服務(wù)

[ root@vinsent ~ ]#ip a                                  # 查看自己的IP是否設(shè)置成功

5.3安裝服務(wù)

      由于我們需要HTTP、TFTP、DHCP服務(wù)來(lái)提供相應(yīng)的服務(wù),所以我們必須要在系統(tǒng)中安裝,相應(yīng)的服務(wù)。這里需要注意,如果你的系統(tǒng)時(shí)最小化安裝,那么建議你先安裝一些包組,GCC等。如果安裝過(guò)程中出現(xiàn)包依賴(lài)問(wèn)題,依次安裝相應(yīng)的包即可。

[ root@vinsent ~ ]#yum -y install dhcp tftp-server httpd syslimux  #安裝相應(yīng)的服務(wù)包

[ root@vinsent ~ ]#yum -y install xinetd             # 安裝超級(jí)守護(hù)進(jìn)程xinetd

[ root@vinsent ~ ]#systemctl enable dhcp             # 設(shè)置dhcp開(kāi)機(jī)啟動(dòng)

[ root@vinsent ~ ]#systemctl enable tftp             # 設(shè)置tftp開(kāi)機(jī)啟動(dòng)

[ root@vinsent ~ ]#systemctl start tftp              # 啟動(dòng)tftp服務(wù) 

[ root@vinsent ~ ]#systemctl enable httpd             

[ root@vinsent ~ ]#systemctl start httpd             # 啟動(dòng)http服務(wù)

[ root@vinsent ~ ]#chkconfig tftp on     # 如果這天命令不能使用,請(qǐng)修改配置文件

[ root@vinsent ~ ]#vim /etc/xinetd.d/tftp

service tftp

{

...

    disable     =yes         # 修改這一項(xiàng)為"disable     =no"

...

}

[ root@vinsent ~ ]#systemctl restart xinetd     # 修改之后,一定要重啟xinetd服務(wù)

5.4配置DHCP服務(wù)

        DHCP服務(wù)是保證我們能夠自動(dòng)化批量安裝的前提,上面已經(jīng)有提到過(guò)dhcp的配置,這里做補(bǔ)充,詳細(xì)說(shuō)明。主要是配置子網(wǎng)范圍,用于ip地址分配。

[ root@vinsent ~ ]#rpm -ql dhcp         # 查詢(xún)dhcp相關(guān)的文件

...前面省略

/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example

...后面省略

[ root@vinsent ~ ]#cd /etc/dhcp/

[ root@vinsent ~ ]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example .   # 復(fù)制模板配置文件

[ root@vinsent ~ ]#mv dhcpd.conf.example dhcpd.conf     # 改名為dhcpd.conf,頂替以前的配置文件

[ root@vinsent ~ ]#vim dhcpd.conf         # 打開(kāi)模板文件并添加一下內(nèi)容

...前面省略...

subnet 192.168.14.0 netmask 255.255.255.0{         # 這里寫(xiě)的ip地址為子網(wǎng)的地址,故為192.168.14.0

    range 192.168.14.10 192.168.14.200;     # 子網(wǎng)的范圍,之后主機(jī)請(qǐng)求獲取的ip地址就是這其中的一個(gè)

    next-server 192.168.14.201;     # 指明tftp服務(wù)器的地址

    filename "pxelinux.0"           # 指明PXE文件位置,這個(gè)在申請(qǐng)ip的時(shí)候會(huì)發(fā)送給安裝主機(jī)

}

...后面省略...

[ root@vinsent ~ ]#systemctl dhcpd start     # 重啟服務(wù)

        注意:如果你設(shè)置的子網(wǎng)有問(wèn)題,那么你將不能重啟dhcp服務(wù),請(qǐng)檢查你配置的子網(wǎng)是否正確。dhcp服務(wù)器的地址必須固定,不能是自動(dòng)獲取的ip。

5.5 準(zhǔn)備yum源文件及kickstart文件

        yum源文件我們是放在http服務(wù)器上的,由http服務(wù)來(lái)提供,所以我們要把相應(yīng)的文件復(fù)制到http服務(wù)器上。并且我們安裝的主機(jī)系統(tǒng)可能是CentOS 6 也可能是CentOS7或者Ubantu等,所以我們?cè)跍?zhǔn)備yum文件時(shí),需要準(zhǔn)備不同系統(tǒng)、不同版本的文件,我們這里只提供CentOS 6  與CentOS 7的兩種系統(tǒng)的安裝。向我們先規(guī)劃一下目錄文件,在進(jìn)行復(fù)制。如下所示。

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

        我們規(guī)劃好了目錄結(jié)構(gòu),接下來(lái)便是創(chuàng)建這些目錄結(jié)構(gòu),并提供相應(yīng)的文件。

[ root@vinsent ~ ]#cd /var/www/html

[ root@vinsent html ]#mkdir -p centos/{6,7}

[ root@vinsent html ]#mkdir ksdir

[ root@vinsent html ]#

        提供yum源文件,這里有兩種方案來(lái)實(shí)現(xiàn)yum源文件的提供,方案1:我們分別掛載CentOS 6和CentOS 7的關(guān)盤(pán)將光盤(pán)里的Packages目錄與repodata目錄復(fù)制到對(duì)應(yīng)的目錄下(如果復(fù)制,建議全部復(fù)制);方案2:我們創(chuàng)建兩個(gè)關(guān)盤(pán)驅(qū)動(dòng)器,一個(gè)添加CentOS 6的ISO鏡像,一個(gè)添加CentOS 7的ISO鏡像,然后我們分別將對(duì)應(yīng)的關(guān)盤(pán)掛載到/var/www/html/centos下對(duì)應(yīng)的目錄上。綜上所述,我們選擇方案2。下面是一方案2為基礎(chǔ)來(lái)實(shí)現(xiàn)的。

[ root@vinsent html ]#mount /dev/sr0 centos/6     # 掛載CentOS 6光盤(pán)值6目錄下

mount/dev/sr0 is write-protected,mounting read-only

[ root@vinsent html ]#mount /dev/sr1 centos/7     # 掛載CentOS 7光盤(pán)值7目錄下

mount/dev/sr1 is write-protected,mounting read-only

        接下來(lái)準(zhǔn)備ksdir目錄下的安裝引導(dǎo)文件ks#.cfg。ks#.cfg文件的獲取方法有兩種,一種是通過(guò)工具來(lái)生成。不過(guò)這個(gè)工具需要自己安裝:

[ root@vinsent ~ ]#yum  install -y system-config-kickstart

[ root@vinsent ~ ]#system-config-kickstart

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

另外這一種是復(fù)制/root目錄下的anaconda-ks.cfg文件加以修改。我們選擇后者。

[ root@vinsent html ]#cp /root/anaconda-ks.cfg ksdir/ks7.cfg

[ root@vinsent html ]#vim ksdir/ks7.cfg

....

[ root@vinsent html ]#chmod +r ksdir/ks7.cfg    # "這里的文件需要加讀權(quán)限,非常重要"

[ root@vinsent html ]#cat ksdir/ks7.cfg         # centos 7的kickstart文件

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

# Use CDROM installation media

url --url=     #  指明yum源的路徑

# Use graphical install

text             # 將cdrom修改為text,我們不是基于光盤(pán)安裝的,我們是基于字符界面安裝

# Run the Setup Agent on first boot

firstboot --enable

ignoredisk --only-use=sda

# Keyboard layouts

keyboard --vckeymap=us --xlayouts='us'

# System language

lang en_US.UTF-8

  

# Network information

network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --activate   # --bootproto必須是dhcp獲取,--onboot=on

network  --hostname=centos7.magedu.com

  

# Root password

rootpw --iscrypted $6$Z7LBEUpwj3iQdYZ3$olYQ.Lj1xV2VAGS1UiNflKF0oMGip3b6tU9QFcp0i2JBjwKlY/Yaexul57NHpIJc.Y2V1hWAOueaqwjuWDGMk0

# System services

services --disabled="chronyd"

# System timezone

timezone Asia/Shanghai --isUtc --nontp

user --name=wang --password=$6$v.VphW/puRblcrFB$uaSrdEhGAwMXap27WIKTn5lyOOfoFyB/SNxyyL3og6s9/VQoAKoL2KQjKmeYFmoYTuYkSNL7BBxgbJzeryKr9. --iscrypted --gecos="wang"

# X Window System configuration information

xconfig  --startxonboot

# System bootloader configuration

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

# Partition clearing information

zerombr         # 添加zerombr ,表示清除舊磁盤(pán)上原有的mbr,新磁盤(pán)安裝可不寫(xiě)

clearpart --all     # 清除所有分區(qū)信息,新磁盤(pán)安裝可不寫(xiě)

# Disk partitioning information

part swap --fstype="swap" --ondisk=sda --size=2048   # 分區(qū)表信息,如果你想添加分區(qū),可按照該格式添加

part /app --fstype="xfs" --ondisk=sda --size=51200

part / --fstype="xfs" --ondisk=sda --size=51200

part /boot --fstype="xfs" --ondisk=sda --size=1024

reboot         # 安裝完成之后重啟

%packages                     # 安裝軟件包

@^graphical-server-environment

@base

@core

@desktop-debugging

@dial-up

@fonts

@gnome-desktop

@guest-agents

@guest-desktop-agents

@hardware-monitoring

@input-methods

@internet-browser

@multimedia

@print-client

@x11

kexec-tools

autofs     # 安裝autofs服務(wù)包

%end

  

%addon com_ RedHat _kdump --enable --reserve-mb='auto'

%end

  

%anaconda

pwpolicy root --minlen=6 --minquality=50 --notstrict --nochanges --notempty

pwpolicy user --minlen=6 --minquality=50 --notstrict --nochanges --notempty

pwpolicy luks --minlen=6 --minquality=50 --notstrict --nochanges --notempty

%end

%post                     # 安裝后腳本,我們配置了yum源

systemctl enable autofs

rm -rf /etc/yum.repos.d/*

cat /etc/yum.repos.d/base.repo <<eof

[base]

name=base

baseurl=file:///misc/cd

gpgcheck=0

eof

%end

  

************下面是CentOS 6的kickstart文件*************

*******方法同上,這里你到別的主機(jī)上復(fù)制一份過(guò)來(lái)*******

[ root@vinsent html ]#cat ksdir/ks6.cfg

#version=DEVEL

install

text             # 基于字符界面安裝

lang en_US.UTF-8

keyboard us

network --onboot yes --device eth0 --bootproto dhcp --noipv6

rootpw  --iscrypted $6$hfb25YOYZDU3YZTl$VxTkHGGJGGBbr59OPnY5kTJzvJ9hb9NRwrh6FMHLIAlXh9VQ74PYoK7QzPWYN0zaJrm3mv/IP0fDkHxFglNi6/

firewall --service=ssh

authconfig --enableshadow --passalgo=sha512

url --url=     # yum源的路徑 

selinux --disabled     # 關(guān)閉selinux

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

zerombr             # 清除mbr

clearpart --all     # 清除分區(qū)信息

reboot              # 安裝完成后重啟

part /boot --fstype=ext4 --size=1000         # 分區(qū)信息

part / --fstype=ext4 --size=50000

part /app --fstype=ext4 --size=40000

part swap --size=2048

  

  

#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100         # 注釋掉此行

  

%packages

@base

@core

@debugging

@basic-desktop

@desktop-debugging

@desktop-platform

@directory-client

@fonts

@general-desktop

@graphical-admin-tools

@input-methods

@internet-applications

@internet-browser

@java-platform

@kde-desktop

@legacy-x

@network-file-system-client

@office-suite

@print-client

@remote-desktop-clients

@server-platform

@server-policy

@workstation-policy

@x11

mtools

pax

python-dmidecode

oddjob

wodim

sgpio

genisoimage

device-mapper-persistent-data

abrt-gui

qt-mysql

samba-winbind

certmonger

pam_krb5

krb5-workstation

xterm

xorg-x11-xdm

libXmu

rdesktop

%end

  

%post         # 安裝后腳本,安裝完系統(tǒng)后向做什么配置,都可以寫(xiě)在%post...%end中間

rm -rf /etc/yum.repos.d/*

cat /etc/yum.repos.d/base.repo <<eof

[base]

name=base

baseurl=file:///misc/cd

gpgcheck=0

eof

%end

5.6準(zhǔn)備內(nèi)核文件菜單文件

內(nèi)核文件、虛擬根文件以及菜單文件,我們都是通過(guò)tftp服務(wù)來(lái)提供的,由于系統(tǒng)及版本的不同,對(duì)于一個(gè)比較復(fù)制機(jī)群來(lái)說(shuō),我們需要準(zhǔn)備不同系統(tǒng),不同版本的內(nèi)核文件,initrd.img文件。菜單文件只需要一份即可。/var/lib/tftpboot/目錄規(guī)劃如下:

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

規(guī)劃好了目錄結(jié)構(gòu),接下來(lái)自只需要按照目錄內(nèi)容配置相關(guān)的文件即可。菜單風(fēng)格文件menu.c32、不同系統(tǒng)的內(nèi)核文件 vmlinuz 以及虛擬根文件系統(tǒng) initrd.img 我們可以從光盤(pán)中復(fù)制。菜單文件defaults需要手動(dòng)寫(xiě)

[ root@vinsent ~ ]#cd /var/lib/tftpboot/

[ root@vinsent tftpboot ]#mkdir -p centos{6,7}     # 創(chuàng)建目錄文件

[ root@vinsent tftpboot ]#cp /var/www/html/centos/6/{vmlinuz,initrd.img} centos6/     # 復(fù)制內(nèi)核,虛擬根文件

[ root@vinsent tftpboot ]#cp /var/www/html/centos/7/{vmlinuz,initrd.img} centos7/     # 由于之前掛載了不同系統(tǒng),直接復(fù)制對(duì)應(yīng)文件即可

[ root@vinsent tftpboot ]#cp /usr/share/syslinux/pxelinux.0 . # pxelinux文件來(lái)自syslinux包,直接復(fù)制即可

[ root@vinsent tftpboot ]#mkdir pxelinux.cfg

[ root@vinsent tftpboot ]#cp /var/www/html/centos/6/isolinux/isolinux.cfg pxelinux.cfg/default # 復(fù)制并改名

[ root@vinsent tftpboot ]#vim pxelinux.cfg/default

...     # 修改過(guò)程省略,

[ root@vinsent tftpboot ]#cat pxelinux.cfg/default     # 查看修改過(guò)后的菜單文件內(nèi)容

default menu.c32     # 指定菜單風(fēng)格

timeout 600          # 安裝倒計(jì)時(shí),1/10 s為單位

menu title Auto Install | www.vinsent.cn

  

label centos7

  menu label Auto Install CentOS Linux ^7

  kernel centos7/vmlinuz

  append initrd=centos7/initrd.img ks=   # 指明ks文件位置 

  

label centos6

  menu label Auto Install CentOS Linux ^6

  kernel centos6/vmlinuz

  append initrd=centos6/initrd.img ks=http://192.168.14.201/ksdir/ks6.cfg

  

label manual7

  menu label ^Manual Install CentOS Linux 7

  kernel centos7/vmlinuz

  append initrd=centos7/initrd.img inst.repo=http://192.168.14.201/centos/7

  

label manual6

  menu label Manual ^Install CentOS Linux 6

  kernel centos6/vmlinuz

  append initrd=centos6/initrd.img inst.repo=http://192.168.14.201/centos/6

label local

  menu default        # 默認(rèn)光標(biāo)停在這一行

  menu label Boot from ^local drive

  localboot 0xffff

menu end

到此所有的配置就完成了。

6 調(diào)試并安裝


新創(chuàng)建一臺(tái)虛擬機(jī),設(shè)置網(wǎng)絡(luò)段在上述DHCP服務(wù)所在的網(wǎng)絡(luò)段,選擇使用物理驅(qū)動(dòng)器。

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

點(diǎn)擊啟動(dòng)項(xiàng)開(kāi)始安裝,選擇網(wǎng)絡(luò)安裝。

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

點(diǎn)擊網(wǎng)絡(luò)安裝后,我們就能看到我們的菜單了。

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

然后選擇你要啟動(dòng)的項(xiàng)即可。

7 錯(cuò)誤分析


最初還不是很熟悉PXE原理的時(shí)候,遇到了很多問(wèn)題,在最后給處我與到的幾個(gè)問(wèn)題,即解決方法。

問(wèn)題1:ks.cfg文件出錯(cuò)

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

解決方法:檢查tftp服務(wù)是否啟動(dòng),ks#.cfg文件路徑是否正確,ks#.cfg文件是否具有讀權(quán)限。出現(xiàn)這個(gè)問(wèn)題大概就是這幾個(gè)地方出了問(wèn)題

問(wèn)題2:yum源文件路徑出錯(cuò)

PXE如何實(shí)現(xiàn)系統(tǒng)批量自動(dòng)安裝

解決方法:尋找yum源出現(xiàn)錯(cuò)誤,該錯(cuò)誤是ks.cfg文件中url路徑寫(xiě)錯(cuò)了,修改該路徑為正確的yum源所在的地址即可。

問(wèn)題3:iptables與selinux出問(wèn)題

    遺憾忘記截圖給大家了,見(jiàn)諒,安裝前檢查一下iptables與selinux是否關(guān)閉(實(shí)驗(yàn)環(huán)境,生產(chǎn)中不建議這么粗暴?。?/p>

通過(guò)分析PXE實(shí)現(xiàn)批量自動(dòng)化安裝的原理,再到一步步實(shí)現(xiàn)PXE的配置,再到后面的排錯(cuò)思路。在這里總結(jié)幾個(gè)要點(diǎn):關(guān)閉selinux,iptables很重要,ks文件讀權(quán)限不可少,服務(wù)千萬(wàn)不能down掉,文件路徑不能亂抄。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

pxe
AI