必须通过系统级打包与ISO构建流程制作标准ISO镜像备份;需清理母机、生成排除动态路径的根文件系统快照,配置isolinux.cfg和grub.cfg实现UEFI/BIOS双启动,最后用xorriso构建带MD5校验的可启动ISO并实测验证。

您需要将当前已配置完成的银河麒麟系统(含所有软件、服务、用户环境与定制设置)打包为可分发、可批量部署的标准ISO镜像,而非仅用于本机恢复的.kyimg或dd格式备份。
准备标准化母机环境
这一步必须完成,否则生成的ISO会在其他机器上启动失败或配置错乱。母机不是越“干净”越好,而是要处于“可复现、可交付”的标准状态——所有必要组件已就位,所有临时扰动已清除。
以管理员身份打开终端,执行日志与包缓存清理:sudo apt clean && sudo journalctl --vacuum-size=50M。
删除用户级干扰项:rm -rf ~/Desktop/* ~/Downloads/* ~/.cache/* ~/.local/share/Trash/*。这步跳过会导致ISO内混入个人测试文件,分发后可能泄露敏感信息或触发误操作。
检查系统标识是否符合发行规范:cat /etc/.kyinfo | grep milestone。输出必须包含类似 【milestone=Desktop-V10-SP3-General-Release-2303】 的字段;若显示为自定义构建号(如dev-20260928),需联系IT架构组同步基线版本,否则无法通过下游签名验证。
确认关键服务运行正常:systemctl is-active sshd nginx docker 2>/dev/null | grep -q "active" || echo "警告:至少一项基础服务未运行"。
构建静态根文件系统快照
ISO不能直接打包正在运行的系统,必须提取一份排除伪文件系统、冻结运行时状态的只读快照目录。这是后续所有引导与安装逻辑的基础源。
创建带日期标记的目标目录:sudo mkdir -p /backup/iso-root-$(date +%Y%m%d)。
用rsync执行归档同步,严格排除动态路径:sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/run/*","/tmp/*","/mnt/*","/media/*","/lost+found","/backup/*","/var/log/*","/var/cache/*"} / /backup/iso-root-$(date +%Y%m%d)/。注意:此处--exclude参数必须完整复制,漏掉/run/*会导致initrd加载失败,漏掉/var/cache/*会使ISO体积膨胀40%以上且包含过期deb缓存。
补全ISO启动必需组件:sudo cp -r /usr/lib/ISOLINUX /backup/iso-root-$(date +%Y%m%d)/isolinux。
复制当前内核与initrd至isolinux目录:sudo cp /boot/vmlinuz-$(uname -r) /boot/initrd.img-$(uname -r) /backup/iso-root-$(date +%Y%m%d)/isolinux/。这一步不可用旧内核替代,否则UEFI启动时会报Failed to load /isolinux/vmlinuz错误。
配置双模式启动引导
分发版ISO必须同时支持Legacy BIOS和UEFI启动,否则在部分国产服务器(如百信恒山TS02F-F30)或新主板上无法识别。
方法一:手动编写isolinux.cfg
编辑/backup/iso-root-$(date +%Y%m%d)/isolinux/isolinux.cfg,写入以下内容:
default live<br>prompt 0<br>timeout 10<br>label live<br> kernel /isolinux/vmlinuz<br> append initrd=/isolinux/initrd.img boot=live config hooks=live-config keyboard-layouts=cn locales=zh_CN.UTF-8。
方法二:配置grub.cfg支持UEFI
创建目录sudo mkdir -p /backup/iso-root-$(date +%Y%m%d)/EFI/BOOT,然后生成/backup/iso-root-$(date +%Y%m%d)/EFI/BOOT/grub.cfg,内容为:
set default=0<br>set timeout=5<br>menuentry 'Live Kylin Desktop' {<br> linux /isolinux/vmlinuz boot=live config hooks=live-config keyboard-layouts=cn locales=zh_CN.UTF-8<br> initrd /isolinux/initrd.img<br>}。
注意:两个配置文件中的kernel和linux路径必须指向/isolinux/vmlinuz,不可写成/boot/vmlinuz——ISO内无/boot挂载点,写错将导致黑屏且无错误提示。
生成带校验的可启动ISO
使用xorriso构建最终镜像,该工具比mkisofs更适配银河麒麟的UEFI签名机制,且内置MD5校验生成能力。
第一步:切换到快照根目录:cd /backup/iso-root-$(date +%Y%m%d)。
第二步:执行ISO构建命令:
sudo xorriso -as mkisofs \
-iso-level 3 \
-full-iso9660-filenames \
-joliet \
-rock \
-volid "Kylin-Desktop-V10-SP3-DIST-$(date +%Y%m%d)" \
-output "/backup/Kylin-Desktop-V10-SP3-DIST-$(date +%Y%m%d).iso" \
-eltorito-boot isolinux/isolinux.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-catalog isolinux/boot.cat \
-eltorito-alt-boot \
-e EFI/BOOT/efiboot.img \
-no-emul-boot \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-r -J -V "Kylin-Desktop-V10-SP3-DIST-$(date +%Y%m%d)" \
-graft-points \
"/isolinux=isolinux" \
"/EFI=EFI" \
"."。
第三步:自动附加MD5校验值:sudo implantisomd5 --force "/backup/Kylin-Desktop-V10-SP3-DIST-$(date +%Y%m%d).iso"。此步骤不可跳过,缺少MD5签名的ISO在麒麟安全启动策略下会被拒绝加载。
第四步:验证镜像可启动性:sudo losetup -P -f --show "/backup/Kylin-Desktop-V10-SP3-DIST-$(date +%Y%m%d).iso",观察是否返回类似/dev/loop2设备路径;若报错failed to setup loop device,说明xorriso命令中-eltorito-alt-boot与-e参数顺序有误,需重新执行第二步。

















