必须搭建UEFI/BIOS双模PXE服务:挂载ISO至/mnt/kylin,用rsync -a同步镜像到/var/www/html/kylin;UEFI引导文件(grubx64.efi等)放入/var/lib/tftpboot/uefi/,Legacy引导文件(pxelinux.0、vmlinuz等)放入/var/lib/tftpboot/legacy/;DHCP按vendor-class-identifier区分架构并指定对应filename与next-server;Kickstart脚本需含zerombr、clearpart --all --initlabel、EFI分区及LVM配置,且UEFI模式强制inst.ks.device=eth0、Legacy模式加net.ifnames=0;最后通过GRUB或Syslinux菜单关联ks URL完成无人值守安装。

要在生产环境中批量部署麒麟OS并自动完成磁盘分区,必须搭建支持UEFI/BIOS双模引导的PXE服务,让裸机开机即从网络加载安装镜像与Kickstart脚本,全程无需人工干预。
准备麒麟系统镜像与启动文件
挂载麒麟V10 SP3服务器ISO镜像到/mnt/kylin目录:mount -o loop Kylin-Server-V10-SP3-General-Release-2212-X86_64.iso /mnt/kylin。
创建HTTP服务根目录并同步镜像内容:mkdir -p /var/www/html/kylin && rsync -a /mnt/kylin/ /var/www/html/kylin/。这一步必须用rsync -a而非cp -r,否则软链接丢失会导致内核模块加载失败。
提取UEFI引导所需文件:将/mnt/kylin/EFI/BOOT/grubx64.efi和/mnt/kylin/EFI/BOOT/MokManager.efi复制到/var/lib/tftpboot/uefi/;Legacy引导则需从syslinux-nonlinux包中获取pxelinux.0,并复制/mnt/kylin/isolinux/{vmlinuz,initrd.img,boot.msg}到/var/lib/tftpboot/legacy/。
【/var/lib/tftpboot目录下严禁混放UEFI与Legacy文件,必须严格按uefi/和legacy/子目录隔离,否则客户端可能因固件识别错误而卡在PXE-E61错误】。
配置DHCP服务以区分引导模式
编辑/etc/dhcp/dhcpd.conf,启用客户端架构识别:
在全局段添加:option architecture-type code 93 = unsigned integer 16;;
在subnet段内分别定义两套引导策略:
UEFI x86_64客户端匹配:class "uefi-x64" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009"; filename "uefi/grubx64.efi"; next-server 192.168.1.10; };
Legacy BIOS客户端匹配:class "bios" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000"; filename "legacy/pxelinux.0"; next-server 192.168.1.10; }。
务必确认next-server指向的是本机TFTP服务IP,且该IP已绑定在对应网卡上——若填错,客户端将永远停留在“PXE-M0F”超时状态。
编写Kickstart自动分区与安装脚本
在/var/www/html/ks/下新建kylin-auto.ks,开头强制指定分区方案:
zerombr → 清除所有MBR/GPT标记;clearpart --all --initlabel → 彻底清空磁盘并初始化标签;part /boot/efi --fstype="efi" --size=200 --fsoptions="umask=0077,shortname=winnt" → UEFI必需的EFI系统分区,大小不足200MB将导致grub-install失败;
主系统分区采用LVM逻辑卷:part pv.100000 --size=1024 --grow → 创建物理卷;volgroup vg0 --pesize=4096 pv.100000 → 建立卷组;logvol / --vgname=vg0 --size=10240 --name=root --fstype="xfs" → 根分区10GB;logvol swap --vgname=vg0 --size=2048 --name=swap → 交换分区2GB。
关键参数--fstype="xfs"不可省略,麒麟V10默认不支持ext4作为根文件系统,漏写将触发安装中断并回退到交互式分区界面。
发布Kickstart并关联PXE菜单
方法一(UEFI GRUB菜单):编辑/var/lib/tftpboot/uefi/grub.cfg,在menuentry块中加入:kernel /kylin/isolinux/vmlinuz inst.ks=http://192.168.1.10/ks/kylin-auto.ks inst.ks.device=eth0 inst.ks.delay=0 → initrd /kylin/isolinux/initrd.img。
方法二(Legacy Syslinux菜单):编辑/var/lib/tftpboot/legacy/pxelinux.cfg/default,在label块中追加:append initrd=/legacy/initrd.img inst.ks=http://192.168.1.10/ks/kylin-auto.ks inst.ks.device=eth0 net.ifnames=0 biosdevname=0。
注意:UEFI模式下必须使用inst.ks.device=eth0显式指定网卡,因为grub无法自动识别多网卡设备名;Legacy模式需添加net.ifnames=0 biosdevname=0关闭新式网卡命名规则,否则ks脚本中的network --bootproto=dhcp --device=eth0会找不到设备。
重启dnsmasq或dhcpd、xinetd、nginx服务后,裸机开机选择Network Boot即可自动拉取配置、格式化磁盘、安装系统。
















