pxe-e53错误主因是tftp服务问题:pxelinux.0未置于/var/lib/tftpboot/根目录、权限非644、pxelinux.cfg/default缺失或大小写错误,而非dhcp配置失败。

能实现,但“无盘”是常见误解——PXE只负责引导和安装,安装目标仍是本地磁盘;所谓“无盘”通常指安装后运行在内存或网络存储上,Kickstart本身不提供该能力。
pxelinux.0 加载失败:TFTP路径和权限最常踩坑
客户端报 PXE-E53: No boot filename received 或卡在 Failed to load ldlinux.c32,基本不是DHCP没配好,而是 TFTP 根目录里缺文件或路径不对。
-
pxelinux.0必须放在/var/lib/tftpboot/下(不能嵌套子目录),且属主为root、权限为644 -
pxelinux.cfg/目录必须存在,且是小写,大小写敏感;default文件必须放在此目录下,不能叫Default或DEFAULT - CentOS 7+/RHEL 8+ 默认用
syslinux包提供pxelinux.0,别从旧镜像里复制;安装命令是yum install syslinux,然后手动拷贝:cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ -
tftp服务由xinetd管理,改完/etc/xinetd.d/tftp后必须重启xinetd,不是只 restart tftp
ks.cfg 被忽略:启动参数里必须显式指定 ks=
即使你把 ks.cfg 放在 HTTP/NFS 上,如果 PXE 配置文件 pxelinux.cfg/default 里没写 ks= 参数,anaconda 安装程序根本不会去读它——它默认走交互模式。
- 在
default文件的append行末尾加完整路径,例如:ks=http://192.168.10.1/kickstart/ks.cfg(注意协议必须明确) - HTTP 方式最稳;NFS 要求客户端内核支持
nfsroot,且路径写法不同:ks=nfs:192.168.10.1:/nfs/kickstart/ks.cfg - 测试时可在
append行加inst.ks.sendmac,让 ks.cfg 里能用$MAC变量做主机名区分,避免所有机器装成一样配置 - 别依赖
ksdevice=bootif自动选网卡,物理机多网卡时容易绑错;建议直接写死ksdevice=eth0或用 MAC 地址匹配
安装中途卡住或报错 /dev/root does not exist
这通常不是 Kickstart 写错了,而是安装源(repo)不可达或路径错误,导致 anaconda 拿不到软件包,后续分区、包安装全部失败。
-
url --url="http://192.168.10.1/centos7/"中的路径必须以/结尾,否则会拼出http://.../centos7/images/pxeboot/vmlinuz这类错误 URL - HTTP 服务(
httpd)的 DocumentRoot 目录下,要完整包含 ISO 解压后的内容,特别是repodata/目录不能丢;可用createrepo -v /path/to/mount补全 - 物理裸机 BIOS 启动模式(Legacy vs UEFI)必须和服务端提供的内核匹配:Legacy 用
isolinux/vmlinuz,UEFI 用EFI/BOOT/grubx64.efi+ 对应内核,混用必失败 - 如果用 NFS 源,确保
/etc/exports中导出选项含no_root_squash和sync,否则安装进程无法读取大文件
真正难调的从来不是 Kickstart 语法,而是各服务间协议级的耦合:DHCP 给的 next-server 是否可达、TFTP 是否真传了 4MB 的 initrd.img、HTTP 返回码是不是 200 而非 403。建议用另一台 Linux 机器在局域网内 curl 测试所有 ks= 和 url= 的地址,比反复重启裸机高效十倍。











