pxe服務(wù)使用nfs和httpd服務(wù)配置uefi和legacy模式的pxe過程
1、所需軟件套件
(1)OS:redhat 7.4鏡像文件
(2)DHCP服務(wù)器
(3)TFTP server服務(wù)器
(4)NFS服務(wù)搭建
注意:
- ~redhat 7.4默認(rèn)開啟防火墻,導(dǎo)致裝OS的服務(wù)器PXE無法引導(dǎo)
- ~通過步驟3中配置服務(wù),第四步中,可以選httpd或者nfs都可以使用,但是ubuntu系統(tǒng)的鏡像為live表示代表只能線上安裝,所以只能用httpd服務(wù)安裝
- ~注意Ubuntu系統(tǒng)的vmlinuz和initrd.img文件命名
- ~CY(長楊系統(tǒng))在grub.cfg配置文件夾中配置不能為鏡像路徑,需要在共享文件夾中創(chuàng)建文件夾,然后將鏡像內(nèi)容復(fù)制到文件夾中
2、通過YUM安裝所需軟件
2.1搭建yum服務(wù)器
安裝好redhat7.4后,通過配置yum 服務(wù)可以很容易安裝以上套件
配置yum服務(wù)只需要編輯/etc/yum.repos.d/xxx.repo文件,配置步驟如下:
(1)掛載安裝光盤
mount /dev/cdrom /mnt
(2)編輯/etc/yum.repos.d/xxx.repo文件
用編輯器打開/etc/yum.repos.d/xxx.repo文件,把如下內(nèi)容復(fù)制進(jìn)去
[cdrom] name=cdrom baseurl=file:///mnt/ enabled=1 gpgcheck=0
(3)保存退出后,執(zhí)行yum repolist all
2.2通過YUM安裝軟件
(1)安裝DHCP服務(wù)器軟件
yum install dhcp
(2)安裝tftp服務(wù)及其xinetd服務(wù)
yum install tftp xinetd tftp-server
(3)安裝nfs服務(wù)(或者h(yuǎn)ttp服務(wù))
yum install nfs-utils rpcbind (http)
3、配置各個(gè)服務(wù)
3.1 配置DHCP服務(wù)器
3.1.1 配置業(yè)務(wù)網(wǎng)口固定IP,這個(gè)網(wǎng)口作為PXE服務(wù)網(wǎng)口,pxe文件和dhcp都是走這個(gè)網(wǎng)口出去
如果是eth0,則編輯/etc/sysconfig/network-scripts/ifcfg-eth0文件
該文件內(nèi)容為加入以下內(nèi)容
DEVICE=eth0 BOOTPROTO=none(需要改) NM_CONTROLLED=no: ONBOOT=yes TYPE=Ethernet IPADDR=9.43.3.1(需要改) NETMASK=255.255.0.0(需要改) GATEWAY=9.43.0.1(需要改) IPV6INIT=no USERCTL=no
保存退出后用命令systemctl restart network重啟網(wǎng)絡(luò)。
3.1.2 編輯dhcp配置文件 /etc/dhcp/dhcpd.conf
(1 ARM機(jī)器或者x86單UEFI可以如下配置,在該文件中加入如下內(nèi)容(指定主機(jī)啟動(dòng)文件中是tftp服務(wù)指定的文件夾,下面需要在/var/lib/tftpboot/文件夾創(chuàng)建uefi文件夾)
ddns-update-style none;
ignore client-updates; #忽略客戶端更新此參數(shù)只在服務(wù)器端使用
#定義作用域指定子網(wǎng)網(wǎng)絡(luò)號(hào)必須與DHCP服務(wù)器網(wǎng)絡(luò)號(hào)相同
subnet 9.43.0.0 netmask 255.255.0.0 { #注意9.43.0.0,不是指定的主機(jī)ip
option routers 9.43.0.1;
option subnet-mask 255.255.0.0;
option domain-name-servers 9.43.3.1;
range dynamic-bootp 9.43.3.100 9.43.200.250; #指定動(dòng)態(tài)IP地址范圍
filename "uefi/shim.efi"; #指定了主機(jī)啟動(dòng)文件
default-lease-time 359200;
max-lease-time 800000; #指DHCP client端的地址租借期限
next-server 9.43.3.1; #指定主機(jī)啟動(dòng)文件從哪個(gè)地址的服務(wù)器上獲取
log-facility local4; #分離dhcp服務(wù)日志
}(2 x86同時(shí)配置UEFI和Legacy模式的dhcpd文件配置如下:(指定主機(jī)啟動(dòng)文件中是tftp服務(wù)指定的文件夾,下面需要在/var/lib/tftpboot/文件夾創(chuàng)建uefi和pxelinux文件夾)
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;
subnet 9.43.0.0 netmask 255.255.0.0 {
option routers 9.43.0.1;
range 9.43.3.100 9.43.200.250;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 9.43.3.1;
if option architecture-type = 00:07 {
filename "uefi/shim.efi";
} else {
filename "pxelinux/pxelinux.0";
}
}
}保存退出后用命令systemctl restart dhcpd,檢查下是否能夠啟動(dòng)服務(wù)。
用命令chkconfig dhcpd on,開機(jī)啟動(dòng)dhcp服務(wù)
將DHCP服務(wù)的日志信息從系統(tǒng)的日志服務(wù)中分離
- vi /etc/rsyslog.conf 修改日志服務(wù)的主配置文件為如下所示:
*.info;mail.none;authpriv.none;cron.none;local4.none /var/log/messages local4.* /var/log/dhcp.log
- 文件/var/log/dhcp.log會(huì)自動(dòng)生成
3.2 配置tftp服務(wù)
編輯/etc/xinetd.d/tftp文件,刪除原文件內(nèi)容然后添加如下內(nèi)容
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot/ -u nobody #tftp根目錄
disable = no #將yes改成no是啟用
per_source =11
cps =100 2
flags = IPv4
}修改/etc/sysconfig/selinux文件
SELINUX=disabled (系統(tǒng)默認(rèn)是enforcing,要改成disabled)
設(shè)置tftp服務(wù)開機(jī)啟動(dòng)chkconfig tftp on,然后執(zhí)行/etc/init.d/xinetd restart 啟動(dòng)。
注: 更改tftp服務(wù)根目錄,如果在/etc/xinetd.d/tftp配置文件更改無效,
可以在/usr/lib/systemd/system/tftp.service文件修改,systemctl daemon-reload啟用配置 (修改的內(nèi)容為tftp的根目錄)
3.3 配置共享文件夾(安裝源)
(1)配置NFS服務(wù)
安裝好NFS后要啟動(dòng)相關(guān)軟件,需要啟動(dòng)服務(wù)
chkconfig nfs on chkconfig rpcbind on
配置NFS只涉及一個(gè)文件/etc/exports,在里面添加要共享的目錄及其一些相關(guān)設(shè)置
我們需要共享/redhat目錄可以在exports文件添加如下內(nèi)容
/redhat/ *(root_squash,crossmnt)
編輯好該文件后要重新啟動(dòng)NFS服務(wù)命令如下:service nfs restart
驗(yàn)證nfs是否成功共享文件:
showmount –e localhost 如果有如下輸出則NFS成功共享文件 [root@wurenzhishou ~]# showmount -e localhost Export list for localhost: /redhat * [root@wurenzhishou ~]#
(2)配置httpd服務(wù)
安裝好httpd服務(wù)后
[root@localhost ~]# yum install -y httpd # 啟動(dòng)HTTP服務(wù) [root@localhost ~]# systemctl start httpd # 設(shè)置開機(jī)啟動(dòng) [root@localhost ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. # 系統(tǒng)通過網(wǎng)絡(luò)安裝時(shí)需要指定安裝源,這里使用HTTP服務(wù)提供安裝源 # 將ISO文件掛載后復(fù)制到/var/www/html目錄即可 [root@localhost ~]# mount -o loop,ro -t iso9660 CentOS-7-x86_64-DVD-1810.iso /media # cdrom光盤掛載(根據(jù)自己的情況二選一) [root@localhost ~]# mount /dev/cdrom /media [root@localhost ~]# cp -r /media /var/www/html/centos7.6
備注:
修改httpd服務(wù)默認(rèn)文件夾路徑,修改/etc/httpd/conf/httpd.conf文件,將里面的DocumentRoot “/var/www/html”修改為想要修改的路徑,如/redhat,再修改<Directory “/var/www/html”>改為想要的路徑,重啟httpd服務(wù)即可httpd -t查看狀態(tài),如果有AH00558報(bào)錯(cuò),修改/etc/httpd/conf/httpd.conf文件的第95行取消注釋,改為ServerName localhost:80
4 、配置支持PXE啟動(dòng)
4.1 掛載安裝源(nfs方法配置)
創(chuàng)建共享目錄/redhat
mkdir /redhat
掛載redhat7.4的安裝源iso到/mnt/目錄。
光驅(qū)掛載方式:mount /dev/sr0 /mnt/
之后把整個(gè)鏡像放到/redhel/目錄下
4.2 配置uefi 啟動(dòng)和legacy啟動(dòng)設(shè)置
(1)進(jìn)入在tftpboot目錄下創(chuàng)建一個(gè)uefi目錄,上述步驟已經(jīng)提及
cd /var/lib/tftpboot/ mkdir -p uefi(UEFI模式) pxelinux/pxelinux.0(Legacy模式)
(2)解壓shim文件并拷貝shim.ufi啟動(dòng)文件到/vat/lib/tftpboot/uefi目錄下。
cp /mnt/Packages/shim-x64-12-1.el7.centos.x86_64.rpm /tmp/ cp /mnt/Packages/grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm /tmp/ cd /tmp rpm2cpio shim-x64-12-1.el7.aarch64.rpm |cpio -idmv rpm2cpio grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm |cpio -idmv cp /tmp/boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/uefi/(UEFI模式) cp /tmp/boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/uefi/(UEFI模式) cp /tmp/boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/pxelinux/ (Legacy模式) cp /tmp/boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/pxelinux/ (Legacy模式)
(3)拷貝安裝源中的相應(yīng)文件到/var/lib/tftpboot/uefi/目錄下。
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/uefi/ cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/uefi/
(4.1)UEFI創(chuàng)建grub.cfg引導(dǎo)文件。(注意中文空格和中文字符)
cd /var/lib/tftpboot/uefi/ vi grub.cfg
(編輯內(nèi)容如下)
set timeout=60
menuentry 'REDHAT 7' {
linuxefi uefi/vmlinuz ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/rhel-server-7.9-x86_64-dvd.iso
inst.resolution=1024x768
initrdefi uefi/initrd.img
}備注:inst.repo 為安裝源路徑,inst.resolution設(shè)置分辨率,ip=dhcp設(shè)置dhcp動(dòng)態(tài)IP。
如果后續(xù)需要配置別的系統(tǒng),可以如下配置
menuentry 'centos 7.8' {
linuxefi uefi/centos7.8/vmlinuz ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/CentOS-7-x86_64-Everything-2003.iso
inst.resolution=1024x768
initrdefi uefi/centosl7.8/initrd.img在uefi文件夾中創(chuàng)建對(duì)應(yīng)文件夾即可
(4.2)LEGACY創(chuàng)建default引導(dǎo)文件。(注意中文空格和中文字符)
cd /var/lib/tftpboot/pxelinux/pxelinux.cfg/ vi default
(編輯內(nèi)容如下)
default linux prompt 1 timeout 600 label rhel7.9 menu label ^Install system kernel rhel7.9/vmlinuz append initrd=rhel7.9/initrd.img ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/rhel-server-7.9-x86_64-dvd.iso
執(zhí)行下面兩個(gè)命令查看有這些文件
[root@localhost ~]# tree /var/lib/tftpboot/uefi/
? /var/lib/tftpboot/uefi/
? ├── grub.cfg
? ├── grubx64.efi
? ├── initrd.img
? ├── shim.efi
? └── vmlinuz
[root@localhost ~]# tree /var/lib/tftpboot/pxelinux/
? /var/lib/tftpboot/pxelinux/
? ├── initrd.img
? ├── pxelinux.0
? ├── pxelinux.cfg
? │ └── default
? └── vmlinuz最后在個(gè)文件夾中執(zhí)行命令chmod 777 *
至此PXE搭建完成。
后續(xù)添加系統(tǒng)到PXE服務(wù)器中:
1、nfs只需要把鏡像放在/redhat/文件夾中,httpd需要把鏡像放在/var/www/html/文件夾中(默認(rèn)沒有修改路徑的情況下)
2、修改grub.cfg和pxelinux.cfg/default文件
3、在uefi文件夾中和pxelinux文件夾中創(chuàng)建對(duì)應(yīng)系統(tǒng)名文件夾,將OS的vmlinuz和initrd.img文件放進(jìn)去
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS系統(tǒng)下Apache配置多域名或多端口映射的方法
我們大多情況是一臺(tái)服務(wù)器一個(gè)IP,這樣配置起來很簡單,但是如何想多域名多端口映射的話就沒那么簡單了,下面這篇文章主要介紹了CentOS系統(tǒng)下Apache配置多域名或多端口映射的方法,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2016-12-12
Linux使用/proc/meminfo和free命令查看內(nèi)存信息
/proc/meminfo和free都是Linux系統(tǒng)查看內(nèi)存使用情況的工具,但free更直觀易用,而/proc/meminfo提供了更底層的詳細(xì)數(shù)據(jù),下面小編為大家詳細(xì)說說Linux使用/proc/meminfo和free命令查看內(nèi)存信息的方法,需要的朋友可以參考下2026-01-01
Linux中du-查看文件夾大小并按大小進(jìn)行排序詳解
這篇文章主要介紹了Linux中du-查看文件夾大小并按大小進(jìn)行排序詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
Linux 文件系統(tǒng)的操作實(shí)現(xiàn)
這篇文章主要介紹了Linux 文件系統(tǒng)的操作實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Linux系統(tǒng)下的重啟,關(guān)機(jī)命令以及reboot掛死問題解決方案
本文介紹了Linux系統(tǒng)中關(guān)機(jī)和重啟的命令及其作用,以及系統(tǒng)運(yùn)行等級(jí)的差別,此外,還分享了一個(gè)解決reboot關(guān)機(jī)卡死問題的方法2024-11-11
linux: centos設(shè)置ip以及連接外網(wǎng)的方法
本篇文章主要介紹了linux: centos設(shè)置ip以及連接外網(wǎng)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
在Ubuntu系統(tǒng)中快速查看apt包信息的多種方法
本文介紹了在Ubuntu系統(tǒng)中快速查看軟件包信息的多種方法,主要包括:使用apt show或apt-cache show查看包的基本信息,通過 dpkg 命令查詢已安裝包的文件列表或命令對(duì)應(yīng)的包,以及利用在線資源獲取更詳細(xì)信息,文章還提供了一個(gè)標(biāo)準(zhǔn)操作流程,需要的朋友可以參考下2026-01-01
詳解linux中nginx啟動(dòng) 重啟 關(guān)閉命令
本篇文章主要介紹了詳解linux中nginx啟動(dòng) 重啟 關(guān)閉命令,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02

