关键词:
文档修改日志
日期 | 修改内容 | 修改人 | 备注 |
---|---|---|---|
2022年1月25日 | 创建 | 荣涛 | |
2022年1月26日 | PXE BIOS/UEFI | 荣涛 | |
2022年1月27日 | Kickstart | 荣涛 | |
2022年2月11日 | 补充 | 荣涛 |
引言
PXE(预启动执行环境,在操作系统之前运行)是由Intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
1. 搭建需要满足的条件
- 客户端
- 客户机的网卡要支持PXE协议(集成BOOTROM芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在BIOS设置中允许从 Network 或 LAN 启动即可。
- 客户端一旦启动,先向服务端DHCP请求IP地址,从TFTP接收启动文件。
- 服务端
- 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
- 服务器要通过 TFTP服务(简单文件传输协议)来提供系统内核和引导镜像文件的下载。
- 通过HTTP(s),FTP,NFS提供镜像安装源服务;
2. PXE装机流程
- 将ISO镜像或者安装树到HTTP(s),FTP,NFS服务器;
- 配置TFTP服务和DHCP服务,并且在PXE服务器上启动TFTP服务;
- 启动客户端开始安装;
GRUB2 boot loader不仅支持TFTP,而且支持HTTP的网络启动。但是使用HTTP发送vmlinuz和initrd启动文件可能失败,推荐使用TFTP服务器。
相关的参考链接:
- Creating installation sources for Kickstart installations
- Configuring a TFTP server for BIOS-based clients
- Configuring a TFTP server for UEFI-based clients
- Configuring a network server for IBM Power systems
搭建 PXE 远程安装服务器
1. 为基于BIOS的客户端配置PXE服务器
- 安装tftp
$ sudo dnf install tftp-server dhcp-server
- 允许外界访问tftp
$ sudo firewall-cmd --add-service=tftp
success
$ sudo firewall-cmd --reload
- 使用
SYSLINUX
配置DHCP服务,配置文件/etc/dhcp/dhcpd.conf
内容如下:
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 192.168.122.0 netmask 255.255.255.0
option routers 192.168.122.1;
range 192.168.122.221 192.168.122.224;
class "pxeclients"
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.122.22;
if option architecture-type = 00:07
filename "BOOTX64.efi";
else
filename "pxelinux/pxelinux.0";
我的PXE服务器的IP地址为192.168.122.22/24
,子网掩码255.255.255.0
,网关192.168.122.1
。
注意:如果你已经配置了DHCP服务,那么需要在DHCP服务器配置这一步。
- 访问
SYSLINUX
的pxelinux.0
文件
首先挂载ISO镜像,并重中找到syslinux-tftpboot
数据包(在ISO镜像中的路径可能为./AppStream/Packages/syslinux-tftpboot
,如果没有,使用syslinux-nonlinux
);
- 然后将其解压:
$ rpm2cpio syslinux-tftpboot-6.04-0.19.el9.noarch.rpm | cpio -div
解压后包含的文件如下:
$ pwd
/home/rongtao/syslinux-tftpboot/tftpboot
$ ls
cat.c32 dir.c32 ifcpu64.c32 libmenu.c32 pcitest.c32 sysdump.c32
chain.c32 disk.c32 ifcpu.c32 libutil.c32 pmload.c32 syslinux.c32
cmd.c32 dmi.c32 ifmemdsk.c32 linux.c32 poweroff.c32 vesa.c32
cmenu.c32 dmitest.c32 ifplop.c32 lpxelinux.0 prdhcp.c32 vesainfo.c32
config.c32 elf.c32 kbdmap.c32 ls.c32 pwd.c32 vesamenu.c32
cptime.c32 ethersel.c32 kontron_wdt.c32 lua.c32 pxechn.c32 vpdtest.c32
cpu.c32 gfxboot.c32 ldlinux.c32 mboot.c32 pxelinux.0 whichsys.c32
cpuid.c32 gpxecmd.c32 lfs.c32 memdisk reboot.c32 zzjson.c32
cpuidtest.c32 hdt.c32 libcom32.c32 meminfo.c32 rosh.c32
debug.c32 hexdump.c32 libgpl.c32 menu.c32 sanboot.c32
dhcp.c32 host.c32 liblua.c32 pci.c32 sdi.c32
- 创建
/var/lib/tftpboot/pxelinux/
文件夹,将上面的文件都拷贝到/var/lib/tftpboot/pxelinux
下
$ sudo mkdir -p /var/lib/tftpboot/pxelinux
$ sudo cp /home/rongtao/syslinux-tftpboot/tftpboot/* /var/lib/tftpboot/pxelinux
- 创建
/var/lib/tftpboot/pxelinux/pxelinux.cfg/
文件夹
$ sudo mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
- 在
/var/lib/tftpboot/pxelinux/pxelinux.cfg/
中创建名为default
的配置文件,内容如下:
default vesamenu.c32
prompt 1
timeout 600
display boot.msg
label linux
menu label ^Install CCLinux 2203 rc1
menu default
kernel images/cclinux-2203-rc1-x86_64/vmlinuz
append initrd=images/cclinux-2203-rc1-x86_64/initrd.img ip=dhcp inst.repo=http://192.168.122.22/CCLinux-2203-x86_64-rc1/
label vesa
menu label Install CCLinux 2203 rc1 with ^basic video driver
kernel images/cclinux-2203-rc1-x86_64/vmlinuz
append initrd=images/cclinux-2203-rc1-x86_64/initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://192.168.122.22/CCLinux-2203-x86_64-rc1/
label rescue
menu label ^Rescue installed CCLinux 2203 rc1
kernel images/cclinux-2203-rc1-x86_64/vmlinuz
append initrd=images/cclinux-2203-rc1-x86_64/initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
注意
- 没有运行时镜像,安装程序将不起作用。使用
inst.stage2
启动选项指定安装镜像的位置;- 安装源位置用
inst.repo
指定,必须包含.treeinfo
文件;- 当你选择一个DVD作为安装源,
.treeinfo
文件指向BaseOS
和AppStream
仓库。- 当使用kickstart时,需要添加
inst.ks=
选项,具体参考Kickstart的配置文档(在/var/lib/tftpboot/pxelinux/pxelinux.cfg/default
配置文件对应位置添加inst.ks=http://192.168.122.174/kickstart/cclinux-2203-x86_64.cfg
选项。)
- 在
/var/lib/tftpboot/
中创建子目录,并拷贝启动镜像文件。例如:
$ sudo mkdir -p /var/lib/tftpboot/pxelinux/images/cclinux-2203-rc1-x86_64/
$ pwd
/var/www/html/CCLinux-2203-x86_64-rc1
$ sudo cp images/pxeboot/vmlinuz,initrd.img /var/lib/tftpboot/pxelinux/images/cclinux-2203-rc1-x86_64/
- 在DHCP服务器上,开启使能DHCP服务。
$ sudo systemctl start dhcpd
$ sudo systemctl enable dhcpd
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service.
- 开启使能tftp服务
$ sudo systemctl start tftp.service
$ sudo systemctl enable tftp.service
并查看tftp服务端口
$ netstat -a | grep tftp
udp6 0 0 [::]:tftp [::]:*
PXE启动服务器现在就配置完成了,你可以用PXE方式启动客户端了。
如果说PXE服务器是虚拟机环境,那么可以在组主机上测试使用pxe安装,如下:
#!/bin/bash
OS_NAME=os-1
sudo virt-install \\
--virt-type=kvm \\
--name $OS_NAME\\
--memory 8192 \\
--vcpus 8 \\
--os-type=linux \\
--os-variant=centos-stream9 \\
--pxe \\
--network=default,model=virtio \\
--disk path=/var/lib/libvirt/images/$VM_NAME.qcow2,size=10,format=qcow2 \\
--check all=off
安装过程中仍旧需要手动配置anaconda流程,这需要kickstart,后文将对kickstart简述。
注意:
- 防火墙导致PXE的下载成功和失败。
- PXE过程可以进行抓包测试
tcpdump -i enp0s8 port 67 or port 68 or port 69 or port 80 -n -e -vv
。
2. 为基于UEFI的客户端配置PXE服务器
重要
- 本章节所有配置文件都为示例。配置详情取决于你的架构和需求;
- 红帽UEFI PXE启动支持基于小写MAC地址格式的grub菜单文件,例如,
grub.cfg-01-aa-bb-cc-dd-ee-ff
步骤
- root用户,安装tftp和dhcp服务(与BIOS章节相同)
- 允许外界访问tftp(与BIOS章节相同)
- 配置DHCP服务器,(与BIOS章节相同)
- 挂载ISO镜像,获取rpm包
shim
和grub2-efi
; - 从
shim
包中提取BOOTX64.efi
文件,从grub2-efi
中提取grubx64.efi
文件(BOOTX64.EFI
文件注意大小写):
$ rpm2cpio shim-x64-15-15.el8_2.x86_64.rpm | cpio -div
$ rpm2cpio grub2-efi-x64-2.06-13.el9.x86_64.rpm | cpio -div
于是乎就得到了BOOTX64.EFI
(注意大小写)和grubx64.efi
文件。
- 创建文件夹
mkdir /var/lib/tftpboot/uefi
并拷贝文件
$ pwd
/home/rongtao/grub2-efi/boot/efi/EFI/centos
$ sudo cp grubx64.efi /var/lib/tftpboot/uefi
- 在
/var/lib/tftpboot/
目录中添加一个配置文件grub.cfg
,内容如下:
set timeout=60
menuentry 'CCLinux 2203 rc1'
linuxefi images/cclinux-2203-rc1-x86_64/vmlinuz ip=dhcp inst.repo=http://192.168.122.22/CCLinux-2203-x86_64-rc1/
initrdefi images/cclinux-2203-rc1-x86_64/initrd.img
这可以参考上文BIOS配置过程中创建的文件/var/lib/tftpboot/pxelinux/pxelinux.cfg/default
。
注意:参考BIOS配置过程中的注意事项(关于
repo
,.treeinfo
,BaseOS
,AppStream
)
- 在
/var/lib/tftpboot/
中创建子目录,并拷贝启动镜像文件。(与BIOS章节相同) - 启动并使能dhcp;(与BIOS章节相同)
- 启动并使能tftp;(与BIOS章节相同)
TODO:由于我是在虚拟机环境测试的,我的virt-install版本
2.2.1
不支持uefi,所以并没有测试。
3. 为IBM Power系统配置网络服务器
略。
安装过程可能遇到的问题
1. No DEFAULT or UI configuration directive found!
注意在配置文件/var/lib/tftpboot/pxelinux/pxelinux.cfg/default
指定的default vesamenu.c32
在/var/lib/tftpboot/pxelinux/vesamenu.c32
是否存在。
2. DHCP: via enp1s0: unknown lease 192.168.122.34.
2. PXE: No more network device
2. PXE: Nothing to boot: No such file or directory
查看systemctl status dhcpd
显示
2月 11 15:08:14 localhost.localdomain dhcpd[1920]: DHCPDISCOVER from 52:54:00:ee:17:09 via enp1s0
2月 11 15:08:15 localhost.localdomain dhcpd[1920]: DHCPOFFER on 192.168.122.191 to 52:54:00:ee:17:09 via enp1s0
2月 11 15:08:22 localhost.localdomain dhcpd[1920]: DHCPREQUEST for 192.168.122.34 (192.168.122.1) from 52:54:00:ee:17:09 via enp1s0: unknown lease 192.168.122.34.
参考链接
检查
Firewall – Check ufw has rules setup for Port 69
tftpd – Check daemon listening on Port 69
dhcpd – Check Running and no lease issues.
No File – Check the pxelinux.0 file is actually on the server!
TFTP命令
使用tftp命令下载tftp服务上的文件。
查看
[rongtao@localhost ~]$ arp -a| grep 192
? (192.168.122.191) at <incomplete> on enp1s0
? (192.168.122.190) at <incomplete> on enp1s0
? (192.168.122.110) at <incomplete> on enp1s0
? (192.168.122.109) at 52:54:00:0e:41:1e [ether] on enp1s0
? (192.168.122.42) at <incomplete> on enp1s0
? (192.168.122.34) at <incomplete> on enp1s0
_gateway (192.168.122.1) at 52:54:00:28:f6:80 [ether] on enp1s0
使用命令arp -d 192.168.122.191
删除<incomplete>
IP地址。
=====================================================================================================
搭建 PXE 远程安装服务器-OLD-Fatal
1. 安装并启用 TFTP 服务
1.1. 安装TFTP服务
$ sudo dnf -y install tftp-server xinetd
1.2. 修改TFTP服务的配置文件并启动
vim /etc/xinetd.d/tftp
protocol = udp #TFTP默认使用UDP协议
wait = no #no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
server_args = -s /var/lib/tftpboot #指定TFTP根目录(引导文件的存储路径)
disable = no #no表示开启TFTP服务
# default: off
# Description: The tftp server serves files using the trivial file transfer
# protocol, Thsi tftp protocol is oftern used to boot diskless
# workstations, download configuration file to network-aware printers,
# and to start the installation process for some operation systemds.
# https://blog.csdn.net/ItookapillinNJ/article/details/114122524
service tftp
socket_type = dgram
protocol = udp
wait = no
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
开启服务
systemctl start tftp
systemctl start xinetd
2. 安装DHCP服务
$ sudo dnf install dhcp-server
配置:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
ddns-update-style interim;
ignore client-updates;
filename "grubaa64.efi";
next-server 192.168.122.22;
subnet 192.168.122.0 netmask 255.255.255.0
range dynamic-bootp 192.168.122.213 192.168.122.215;
default-lease-time 600;
max-lease-time 7200;
3. 准备 Linux 内核、初始化镜像文件
$ sudo cp vmlinuz /var/lib/tftpboot/
$ sudo cp initrd.img /var/lib/tftpboot/
4. 准备 PXE 引导程序
$ sudo dnf install syslinux
$ sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
5. 安装FTP服务,准备CentOS 7 安装源
我先使用httpd试试。
6. 配置启动菜单文件
$ sudo mkdir /var/lib/tftpboot/pxelinux.cfg
7. 关闭防火墙,验证 PXE 网络安装
8. 验证pxe安装
参考PERFORMING AN ADVANCED RHEL INSTALLATION
参考链接
- PERFORMING AN ADVANCED RHEL INSTALLATION
- Chapter 14, Preparing to install from the network using PXE.
- Creating installation sources for Kickstart installations
- Configuring a TFTP server for BIOS-based clients
- Configuring a TFTP server for UEFI-based clients
- Configuring a network server for IBM Power systems
- 搭建PXE装机服务器(实验详解)
- Troubleshoot: PXE boot Server
Copyright (C) CESTC Com.
通过pxe服务器批量安装系统(代码片段)
通过PXE服务器批量安装系统一、环境介绍1.PXE服务器版本2.挂载光盘3.配置yum仓库二、部署DHCP服务器1.安装相关软件包2.编辑DHCP配置文件3.重启dhcp服务4.放行防火墙端口5.关闭selinux三、部署TFTP服务器1.安装相关包2.修改TFTP服务配置... 查看详情
centos7搭建pxe批量安装系统(代码片段)
实现环境为在win7上虚拟机cenots7系统;pxe:一般服务器安装系统,都是通过光盘或u盘安装,使用pxe则可通过网络引导安装系统,而且还能自动完成所有安装步骤,下面是具体配置步骤;1、配置文件共享服务器,可以是nfs、http、f... 查看详情
pxe+kickstart(代码片段)
...务程序DHCP服务程序用于为客户端主机分配可用的IP地址,服务器与客户端主机进行文件传输的基础注意:虚拟机的虚拟网络编辑器中关闭自身的DHCP服务##安装DHCP服务程序软件包yuminstalldhcp##允许BOOTP引导程序协议,在让局域网内... 查看详情
pxe(代码片段)
...HCP服务批量装机装系统,自动获得入网参赛,很少拿一台服务器做DHCP服务,一般都是在路由器网络设备上去搭建。DHCP概述及原理?DynamicHostConfigurationProtocol–动态主机配置协议,由IETF(Internet网络工程师任务小组)组织制定,用来简化... 查看详情
虚拟机console基础环境配置——pxe引导无人值守安装环境配置(代码片段)
1.概述2.部署过程2.1部署DHCP服务器2.1.1YUM安装依赖环境2.1.2配置/etc/dhcp/dhcpd.conf2.2部署TFTP服务器2.2.1安装xinetd服务2.2.2安装tftp-server2.2.3配置tftp-server2.2.4启动xinetd服务2.3配置pxelinux引导环境2.3.1安装syslinux2.3.2编辑default和oslist2.3.3无 查看详情
linux网络服务——pxe服务器实现linux安装自动部署(包含操作详解)(代码片段)
PXE服务器实现Linux安装自动部署预启动执行环境PXE简介实验环境准备PXE服务器配置准备工作PXE服务器配置PXE无人值守自动化装机测试预启动执行环境预启动执行环境(PrebooteXecutionEnvironment,PXE)也被称为预执行环境... 查看详情
pxe网络装机之centos7(批量自动装机)(代码片段)
PXE远程服务器(192.168.1.1)所需准备:安装源(系统盘文件);TFTP服务;DHCP服务;Linux内核;能够向客户机裸机发送PXE引导程序;启动菜单及无人应答文件等。客户端要求:客户端的网卡支持PXE协议,且主板支持网络引导(现在... 查看详情
pxe服务器配置(代码片段)
PXE服务器配置荣涛2022年1月25日文档修改日志日期修改内容修改人备注2022年1月25日创建荣涛2022年1月26日PXEBIOS/UEFI荣涛2022年1月27日Kickstart荣涛2022年2月11日补充荣涛引言PXE(预启动执行环境,在操作系统之前运行)是由I... 查看详情
vmware实现pxe+kickstart无人值守安装centos7系统(代码片段)
文章目录PXE实现无人值批量部署服务器一、PXE概述1.1什么是PXE1.2什么是KickStart1.3安装的必要条件二、PXE工作原理2.1工作原理2.2本次实验环境2.3执行PXE+KiskStart安装需要准备内容三、安装步骤3.1配置YUM源3.2关闭防火墙、selinux3.3安... 查看详情
vmware实现pxe+kickstart无人值守安装centos7系统(代码片段)
文章目录PXE实现无人值批量部署服务器一、PXE概述1.1什么是PXE1.2什么是KickStart1.3安装的必要条件二、PXE工作原理2.1工作原理2.2本次实验环境2.3执行PXE+KiskStart安装需要准备内容三、安装步骤3.1配置YUM源3.2关闭防火墙、selinux3.3安... 查看详情
vmware实现pxe+kickstart无人值守安装centos7系统(代码片段)
文章目录PXE实现无人值批量部署服务器一、PXE概述1.1什么是PXE1.2什么是KickStart1.3安装的必要条件二、PXE工作原理2.1工作原理2.2本次实验环境2.3执行PXE+KiskStart安装需要准备内容三、安装步骤3.1配置YUM源3.2关闭防火墙、selinux3.3安... 查看详情
linux❀pxe+kickstart服务教研笔记(代码片段)
文章目录1、安装服务2、图形化界面配置Kickstart:是一种无人值守的安装方式,提前定义好Linux安装过程的配置文件,名为ks.cfg,这个文件预先定义了安装要求从而进行自动化安装;PXE:预启动执行环境是... 查看详情
通过使用pxe实现无人值守安装操作系统(代码片段)
一、环境准备一台centos7操作系统,地址:172.16.16.253/24关闭防火墙、selinux配置本地yum源二、服务安装yuminstall-ydhcptftp-serverhttpdsyslinux三、服务配置[root@pxe~]#cat/etc/dhcp/dhcpd.confsubnet172.16.16.0netmask255.255.255 查看详情
pxe自动装机(代码片段)
...术,工作再Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建PXE网络体系,必须要满足以下条件:①客户机的网卡支持PXE协议(集成BOOTROM芯片),且主板支持网络引... 查看详情
pxe实现自动化部署linux系统(代码片段)
...人值守背景说明在数据中心,一次几十台甚至几百台服务器上线,系统安装将变得非常麻烦,系统安装好了,还会涉及很多配置,工作量都非常大。很多虚拟化平台如VMware,FusionCompute等安装一般通过ISO逐... 查看详情
vmware实现pxe+kickstart无人值守安装centos7系统(代码片段)
文章目录PXE实现无人值批量部署服务器一、PXE概述1.1什么是PXE1.2什么是KickStart1.3安装的必要条件二、PXE工作原理2.1工作原理2.2本次实验环境2.3执行PXE+KiskStart安装需要准备内容三、安装步骤3.1配置YUM源3.2关闭防火墙、selinux3.3安... 查看详情
pxe网络装机-->jluocc(代码片段)
...导时,从网卡芯片中把PXEclent调入内存执行,获取PXEserver配置、显示菜单,根据用户选择将远程引导程序下载到本机运行需要服务套件:DHCP,分配ip地址,定位引导程序TFTP(简单的文件传输协议,69),提 查看详情
通过使用pxe实现无人值守安装操作系统(代码片段)
...围default-lease-time3600;#默认超时时间next-server172.16.16.253;#TFTP服务器地址filename"pxelinux.0";#引导文件syslinux[root@pxe~]#cat/etc/xinetd.d/tftp#default:off#description:Thetftpserverservesfilesusingthetrivialfiletransfer\\#protocol.Thetftpprotocolisoftenusedtobootdis... 查看详情