1. PXE部署openEuler24.03环境准备
1.1 硬件与网络规划
PXE部署的核心在于网络引导,因此对硬件和网络环境有特定要求。服务端建议使用物理机或配置较高的虚拟机,至少2GB内存和20GB可用磁盘空间。网络方面需要确保服务端和客户端位于同一局域网段,建议使用千兆以太网环境以获得更快的传输速度。
在实际生产环境中,我曾遇到过因为网络交换机端口隔离导致PXE失败的案例。因此特别建议在部署前,先确认网络设备没有启用端口隔离或VLAN划分。一个简单的测试方法是:在服务端和客户端之间直接ping通,并且能够通过tcpdump抓取到DHCP广播包。
1.2 系统镜像准备
openEuler 24.03 LTS SP1的ISO镜像需要选择完整DVD版本(openEuler-24.03-LTS-SP1-x86_64-dvd.iso),因为其中包含了PXE引导所需的vmlinuz内核和initrd.img初始化镜像文件。这些文件通常位于ISO镜像的/images/pxeboot目录下。
这里有个实用技巧:下载完ISO后务必校验SHA256值。我曾经遇到过因为镜像下载不完整导致PXE引导失败的情况,错误现象是客户端能获取IP但无法加载内核。校验命令如下:
sha256sum openEuler-24.03-LTS-SP1-x86_64-dvd.iso然后与官网发布的校验值比对。
1.3 服务端基础配置
1.3.1 静态IP配置
PXE服务端必须使用静态IP,这是整个部署过程的基础。在openEuler上配置静态IP有两种主流方式:
- 传统network-scripts方式(适用于较老版本):
vim /etc/sysconfig/network-scripts/ifcfg-ens33配置示例:
TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.10.100 NETMASK=255.255.255.0 GATEWAY=192.168.10.2 DNS1=223.5.5.5- NetworkManager的nmcli方式(推荐新版本使用):
nmcli con mod ens33 ipv4.method manual ipv4.addresses 192.168.10.100/24 ipv4.gateway 192.168.10.2 ipv4.dns "223.5.5.5" nmcli con up ens331.3.2 关闭防火墙和SELinux
在测试环境中,为了简化部署过程,建议临时关闭防火墙和SELinux:
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config但在生产环境中,更安全的做法是精确放行所需端口:
- DHCP: 67/udp
- TFTP: 69/udp
- HTTP: 80/tcp
1.3.3 挂载系统镜像
创建挂载点并挂载ISO镜像:
mkdir -p /mnt/openeuler-iso mount -o loop openEuler-24.03-LTS-SP1-x86_64-dvd.iso /mnt/openeuler-iso为了实现开机自动挂载,可以编辑/etc/fstab添加:
/root/openEuler-24.03-LTS-SP1-x86_64-dvd.iso /mnt/openeuler-iso iso9660 loop 0 02. PXE核心服务部署
2.1 DHCP服务配置
2.1.1 安装DHCP服务器
dnf install -y dhcp-server2.1.2 配置DHCP服务
编辑/etc/dhcp/dhcpd.conf,关键配置点包括:
- 定义IP地址池(range)
- 指定PXE服务器地址(next-server)
- 根据客户端类型区分UEFI/BIOS引导文件名(filename)
完整配置示例:
ddns-update-style none; default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.50; option routers 192.168.10.2; option domain-name-servers 223.5.5.5; next-server 192.168.10.100; class "UEFI" { match if substring(option vendor-class-identifier, 0, 6) = "PXEClient"; filename "EFI/BOOT/grubx64.efi"; } class "BIOS" { match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; filename "pxelinux/pxelinux.0"; } }2.1.3 启动DHCP服务
systemctl enable --now dhcpd验证服务是否正常监听67端口:
netstat -ulnp | grep dhcpd2.2 TFTP服务配置
2.2.1 安装TFTP相关软件
dnf install -y tftp-server syslinux-tftpboot2.2.2 配置TFTP服务
编辑/etc/xinetd.d/tftp,确保disable=no:
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }2.2.3 准备TFTP引导文件
- UEFI模式文件:
mkdir -p /var/lib/tftpboot/EFI/BOOT cp /mnt/openeuler-iso/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ cp /mnt/openeuler-iso/EFI/BOOT/grubx64.efi /var/lib/tftpboot/EFI/BOOT/- BIOS模式文件:
mkdir -p /var/lib/tftpboot/pxelinux cp /usr/share/syslinux/{pxelinux.0,ldlinux.c32,libcom32.c32,libutil.c32,menu.c32} /var/lib/tftpboot/pxelinux/2.2.4 启动TFTP服务
systemctl enable --now xinetd验证TFTP服务:
tftp 192.168.10.100 -c get EFI/BOOT/grubx64.efi2.3 HTTP安装源配置
2.3.1 安装Apache HTTP服务
dnf install -y httpd2.3.2 配置安装源
创建软链接而非直接复制,节省磁盘空间:
mkdir -p /var/www/html/openeuler-24.03-pxe ln -s /mnt/openeuler-iso/* /var/www/html/openeuler-24.03-pxe/2.3.3 启动HTTP服务
systemctl enable --now httpd验证HTTP访问:
curl http://localhost/openeuler-24.03-pxe/3. PXE引导菜单配置
3.1 UEFI模式引导配置
创建/var/lib/tftpboot/EFI/BOOT/grub.cfg:
set timeout=60 set default=0 menuentry 'Install openEuler 24.03 LTS SP1 x86_64' { linuxefi vmlinuz inst.stage2=http://192.168.10.100/openeuler-24.03-pxe quiet initrdefi initrd.img } menuentry 'Rescue openEuler 24.03 LTS SP1' { linuxefi vmlinuz inst.stage2=http://192.168.10.100/openeuler-24.03-pxe rescue quiet initrdefi initrd.img }3.2 BIOS模式引导配置
创建/var/lib/tftpboot/pxelinux/pxelinux.cfg/default:
default menu.c32 prompt 0 timeout 600 MENU TITLE openEuler 24.03 LTS SP1 PXE Boot Menu LABEL install MENU LABEL Install openEuler 24.03 LTS SP1 x86_64 KERNEL ../vmlinuz APPEND initrd=../initrd.img inst.stage2=http://192.168.10.100/openeuler-24.03-pxe quiet LABEL rescue MENU LABEL Rescue openEuler 24.03 LTS SP1 KERNEL ../vmlinuz APPEND initrd=../initrd.img inst.stage2=http://192.168.10.100/openeuler-24.03-pxe rescue quiet4. 客户端安装与验证
4.1 客户端网络引导设置
- 进入BIOS/UEFI设置界面(通常按DEL、F2或F12)
- 启用网络引导(PXE Boot)选项
- 调整启动顺序,使网络引导优先于本地磁盘
- 保存设置并重启
4.2 安装过程注意事项
- 语言选择:建议选择英文,避免中文字符集可能带来的问题
- 软件选择:最小安装适合服务器,带GUI的安装适合桌面环境
- 分区方案:
- 自动分区:简单快捷
- 手动分区:建议至少划分/、/boot、swap三个分区
- 网络配置:可以在此处配置静态IP或保留DHCP
- 用户设置:强烈建议设置强密码,特别是root账户
4.3 安装后验证
- 检查内核版本:
uname -r- 验证网络连通性:
ping -c 4 223.5.5.5- 检查软件源:
dnf repolist5. 常见问题排查
5.1 客户端无法获取IP地址
排查步骤:
- 检查DHCP服务状态:
systemctl status dhcpd- 查看DHCP日志:
journalctl -u dhcpd- 确认网络连接:
tcpdump -i ens33 udp port 675.2 获取IP后无法加载引导文件
可能原因:
- TFTP服务未正常运行
- 引导文件路径不正确
- 文件权限问题
解决方案:
systemctl status xinetd chmod -R 644 /var/lib/tftpboot/5.3 引导菜单显示异常
常见于BIOS模式,检查:
- menu.c32等模块是否复制正确
- default文件语法是否正确
- 文件路径是否匹配
5.4 安装源无法访问
验证方法:
curl http://192.168.10.100/openeuler-24.03-pxe/确保返回ISO镜像文件列表
6. 高级配置:Kickstart无人值守安装
6.1 创建Kickstart文件
示例/var/www/html/ks.cfg:
# 平台配置 lang en_US.UTF-8 keyboard us timezone Asia/Shanghai auth --enableshadow --passalgo=sha512 # 网络配置 network --bootproto=dhcp --device=ens33 --activate # 安装源 url --url="http://192.168.10.100/openeuler-24.03-pxe" # 分区方案 clearpart --all --initlabel autopart --type=lvm # 软件包选择 %packages @^minimal %end # 后安装脚本 %post dnf install -y vim git systemctl enable sshd %end6.2 修改引导配置
在原有引导参数后追加:
inst.ks=http://192.168.10.100/ks.cfg6.3 验证无人值守安装
客户端启动后将自动完成整个安装过程,无需人工干预。安装完成后可以通过预先设置的SSH密钥或密码登录系统。