政企信创项目中批量部署数百台银河麒麟终端须采用PXE网络化自动安装:先确认目标机为Kylin V11 SP1 aarch64版本,再在部署服务器上集成dnsmasq(DHCP+TFTP)与nginx(HTTP),配置pxe-installer或手动构建引导环境,编写含定制化post脚本、禁用SELinux/firewalld的ks.cfg应答文件,最后通过BIOS启用PXE启动实现无人值守批量装机。

在政企信创项目中批量部署数百台银河麒麟终端,不能靠一台台插入U盘手动安装,必须用网络化、自动化方式完成系统分发与初始化配置,否则光装机就要耗费数周人力且极易出错。
确认部署环境与前置条件
先登录其中一台目标终端,运行 nkvers 查看系统版本号,例如输出为 Kylin V11 SP1 aarch64,这决定了后续镜像、PXE引导文件、驱动包的匹配精度——【版本不一致会导致内核模块加载失败,整批机器启动黑屏】。
检查局域网是否具备DHCP+TFTP+HTTP三服务共存能力:DHCP分配IP并指向PXE启动服务器,TFTP传输引导内核和initrd,HTTP提供完整安装源。缺一不可,否则PXE流程会在加载vmlinuz后卡死。
准备一台部署服务器(建议银河麒麟V11 x86_64),安装dnsmasq(集成DHCP+TFTP)、nginx(提供HTTP源),并确保该服务器能访问外网或已同步好麒麟官方ISO镜像中的os/目录结构。
制作可网络启动的PXE引导环境
方法一:使用麒麟官方提供的pxe-installer工具包
从麒麟软件官网信创支持门户下载对应V11 SP1的kylin-pxe-installer-11.0-sp1.tar.gz,解压后执行./install.sh --mode=server,脚本会自动配置dnsmasq监听地址、生成pxelinux.cfg/default菜单、将vmlinuz/initrd.img复制至tftp根目录。
方法二:手动构建(适用于定制化需求强的场景)
挂载银河麒麟V11 SP1桌面版ISO,提取isolinux/vmlinuz和isolinux/initrd.img到/var/lib/tftpboot/kylin11/;编辑/var/lib/tftpboot/pxelinux.cfg/default,写入启动项:
label install
kernel kylin11/vmlinuz
append initrd=kylin11/initrd.img inst.ks=http://192.168.10.1/ks.cfg ip=dhcp quiet splash
注意:inst.ks参数后的URL必须是部署服务器上nginx可直接访问的kickstart文件路径,且nginx需开启目录浏览或配置精确location路由,否则客户端读取ks.cfg超时失败。
编写无人值守安装应答文件(ks.cfg)
第一步:用图形化安装器生成基础模板
在一台测试机上运行system-config-kickstart(麒麟V11默认已预装),勾选“安装后重启”“使用网络时间协议NTP”,设置root密码哈希值(用openssl passwd -6生成),保存为/var/www/html/ks.cfg。
第二步:注入批量定制逻辑
在%post段追加以下内容:%post --log=/root/ks-post.logmkdir -p /etc/kylin/deployecho "DEPLOY_BATCH_ID=20261105-A" > /etc/kylin/deploy/infowget -O /tmp/agent-installer.sh http://192.168.10.1/agent.sh && sh /tmp/agent-installer.sh
这一步让每台机器装完后自动拉取统一运维代理脚本并标记批次ID,便于后续Ansible纳管。
第三步:关闭SELinux并禁用firewalld
在ks.cfg开头添加selinux --disabled,在%packages段加入@^minimal-environment,并在%post中执行systemctl disable firewalld——银河麒麟V11默认启用firewalld,若未显式关闭,批量装完后SSH端口可能被拦截,导致远程管理中断。
启动终端批量安装
将所有目标终端BIOS设置为“PXE Boot First”,网线接入与部署服务器同网段,通电开机。
观察部署服务器的tail -f /var/log/dnsmasq.log,出现多条DHCPDISCOVER→DHCPOFFER→TFTP请求即表示终端已进入PXE流程;再查看nginx日志,确认有大量GET /ks.cfg和GET /os/路径访问。
首批10台终端启动后,登录其中一台,执行systemctl status anaconda验证安装进程是否处于active状态;若显示inactive或报Failed to load kickstart,立即检查ks.cfg文件权限(需为644)、nginx是否监听80端口、防火墙是否放行80/69/67端口。
待所有终端完成安装并自动重启,用nmap -sn 192.168.10.0/24扫描存活主机,筛选出新上线的IP段,逐台执行ssh root@IP 'nkvers && hostname'确认系统版本与主机名已按ks.cfg设定生效。











