制作linux可引导iso镜像的核心是区分“可安装iso”与“数据备份iso”,前者需含iso9660结构、引导程序、内核initrd及squashfs根文件系统,推荐rsync+genisoimage手工制作或mondo rescue一键生成,务必验证启动性与功能性。

制作与恢复 Linux 系统的完整 ISO 镜像,核心在于区分“可引导安装镜像”和“数据备份镜像”。运维中真正有工程价值的是前者——它能启动、能安装、能批量部署,不是简单打包文件。关键不在于命令多复杂,而在于结构对不对、引导链通不通、运行时目录是否适配只读环境。
明确需求:你要的是可安装 ISO,不是 dd 备份盘
很多运维人员第一步就踩坑:用 dd if=/dev/sda of=backup.iso,结果生成的文件在 VirtualBox 里根本无法启动。原因很直接——ISO9660 是只读光盘文件系统,而 dd 产出的是 raw 磁盘镜像(含 MBR/GPT 和 ext4 分区),两者引导机制完全不同。可安装 ISO 必须包含:
- 符合 ISO9660 标准的目录结构
- 引导程序(isolinux.bin 或 grub.efi)
- 内核(vmlinuz)和 initramfs(initrd.img)
- 根文件系统镜像(常为 squashfs 格式,支持只读挂载+写入 overlay)
所以,dd 不适合做 ISO,适合做裸机灾备;而 rsync + mkisofs(或 xorriso)才是制作可分发 ISO 的正路。
推荐方案:rsync 同步 + genisoimage 打包(稳定可控)
这是运维最常用、最易调试的方式,以 Ubuntu/Debian 或 CentOS/RHEL 为例,流程清晰、无图形依赖、便于脚本化:
- 准备一个干净工作目录(如 /tmp/iso-build),创建标准 ISO 引导骨架:isolinux/ 目录放 isolinux.bin、boot.cat、isolinux.cfg;EFI/BOOT/ 放 grubx64.efi 和 BOOTX64.CSV(支持 UEFI)
- 用 rsync -aHAX --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} 把当前系统根目录同步到 /tmp/iso-build/livefs/
- 将 livefs 目录压缩为 squashfs:mksquashfs /tmp/iso-build/livefs /tmp/iso-build/live/filesystem.squashfs -comp xz -e boot
- 复制内核与 initrd:cp /boot/vmlinuz-* /tmp/iso-build/ 和 cp /boot/initrd.img-* /tmp/iso-build/,重命名为 vmlinuz 和 initrd.lz
- 最后用 genisoimage 打包:genisoimage -joliet-long -o system.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -J -V "LINUX-CUSTOM" /tmp/iso-build
生成的 system.iso 可直接用于 VirtualBox、VMware 或物理机 BIOS/UEFI 启动,进入 Live 环境或调用安装器部署。
高效替代:Mondo Rescue(一键生成带恢复能力的 ISO)
如果目标是快速生成具备完整系统还原能力的 ISO(比如给客户交付“开箱即用”的灾备盘),Mondo Rescue 是更优选择。它不是简单打包,而是自动处理分区识别、LVM/RAID 支持、驱动注入、引导配置,并输出可启动的 ISO 或 USB 镜像。
- 安装:yum install -y mondo(CentOS/RHEL)或 apt install -y mondorescue(Debian/Ubuntu)
- 执行:mondoarchive -O -i -d /tmp -s 4g -9 -k "vmlinuz initrd.img"(-O 表示输出 ISO,-s 指定分卷大小,-9 开启最高压缩)
- 输出路径默认为 /var/cache/mondo/,生成的 mondorescue-*.iso 支持 BIOS/UEFI,启动后可选择“Restore”一键还原整机状态
它会自动备份 /etc/fstab、/boot/grub、LVM 卷组信息等关键元数据,比手工方案更适合生产环境容灾场景。
验证与恢复:别跳过这一步
ISO 制作完成不等于可用。必须验证两件事:
- 启动性:用 qemu-system-x86_64 -cdrom system.iso -m 2048 快速测试能否进入引导菜单或 Live 桌面
- 功能性:在 Live 环境中检查网络、磁盘识别、关键服务(如 sshd)是否就绪;若含安装器,还需测试能否识别目标磁盘并完成格式化/写入
- 恢复时,Mondo 生成的 ISO 直接选择 “Nuke mode” 即可覆盖式还原;手工 ISO 若含安装器,则按常规安装流程操作,注意提前备份原 /home 或 /data 分区
恢复前务必确认目标机器硬件兼容性,特别是 NVMe 控制器、网卡驱动。建议在制作阶段用 modprobe --list 检查所需模块是否已打入 initrd。











