CentOS 5.11使用Mondo Rescue恢复ISO时触发Kernel Panic错误求助
我之前在CentOS 5.11上用Mondo Rescue制作系统镜像时,也碰到过和你一模一样的Nuke模式启动内核panic问题,结合你的命令参数和场景,给你几个实际可行的排查修复方向:
1. 修复临时目录与排除规则的冲突
你的命令里用-E "/tmp|/var/spool/squid|/var/log"排除了/tmp目录,但同时又用-T /tmp/centos_iso指定Mondo的工作临时目录在/tmp下——这会导致Mondo生成的初始化文件(比如initramfs里的关键脚本)被误排除,最终启动时找不到init进程。
修改命令,把临时目录换成一个不在排除列表里的路径,比如/var/tmp/mondo_temp,重新生成镜像:
mondoarchive -Oi -9 -L -d /tmp/centos_iso -I / -T /var/tmp/mondo_temp -p centos_image -s 4480m -E "/var/spool/squid|/var/log"
注意确保新的临时目录有足够的空间,并且Mondo有读写权限。
2. 检查镜像中initramfs的完整性
镜像生成后,挂载ISO并解压initramfs文件,确认里面是否存在init文件:
# 挂载ISO文件 mount -o loop /tmp/centos_iso/centos_image.iso /mnt/mondo_iso # 复制initramfs文件到临时目录 cp /mnt/mondo_iso/isolinux/initrd.img /tmp cd /tmp # 解压文件 gunzip initrd.img cpio -idv < initrd.img # 检查是否存在init文件 ls -l ./init
如果找不到init文件,说明Mondo在打包时遗漏了关键文件,这时候需要:
- 确认你安装的Mondo Rescue是适配CentOS 5.11的版本(比如
mondo-3.2.2-1.el5),旧版本可能存在兼容性问题; - 原系统中
/sbin/init文件是否存在且权限正常(权限应为-rwxr-xr-x),如果原系统的init文件损坏或缺失,镜像自然也会有问题。
3. 手动指定init启动参数绕过错误
如果重新生成镜像后还是报错,在Mondo的启动菜单中,选中"Nuke"选项后按Tab键编辑启动命令,手动添加init=/sbin/init参数,比如把启动行改成:
vmlinuz initrd=initrd.img nuke init=/sbin/init
如果这样能正常启动,说明镜像中的init路径配置有误,大概率是排除目录时误删了/sbin/init的符号链接或者相关启动配置文件,需要检查原系统的/etc/inittab和/sbin/init的关联是否正常。
4. 确认原系统的根分区与启动配置
如果你的原系统使用了LVM、RAID等特殊存储方式,需要在mondoarchive命令中添加对应参数来支持,比如加上-r /dev/mapper/VolGroup00-LogVol00(替换成你的根分区设备名),确保Mondo能正确识别根分区并打包相关驱动模块到initramfs中。同时检查原系统的/etc/fstab,确认根分区的挂载配置正确,没有无效的挂载项。
内容的提问来源于stack exchange,提问作者Alessandro Cardoso

