自定义Ubuntu 22.04 LiveCD无法启动:Squashfs GPG签名/密钥环相关问题
自定义Ubuntu 22.04 LiveCD无法启动:Squashfs GPG签名/密钥环相关问题
我完全理解你的困扰——Ubuntu 22.04及以后的版本确实对LiveCD的Squashfs验证机制做了更新,旧指南里的步骤已经跟不上了,尤其是GPG签名这块,很容易踩坑。我来一步步帮你解决这两个核心问题:
一、重新生成SquashFS时,GPG签名是必须的吗?
答案是可选:你可以选择跳过签名验证快速解决问题,也可以按照新机制生成合规的签名来保留验证功能。
情况1:跳过GPG签名(快速绕过错误)
新版本LiveCD默认会校验Squashfs的签名,如果你不想折腾GPG流程,直接关闭验证即可:
- 挂载你的自定义ISO的启动分区(或者chroot到live环境后),找到
grub.cfg文件(通常在/boot/grub/或/EFI/boot/目录下) - 定位到启动项里的
linux行,比如类似:linux /casper/vmlinuz quiet splash --- - 在
---前面添加casper/verify=no参数,修改后变成:linux /casper/vmlinuz quiet splash casper/verify=no --- - 如果是legacy BIOS启动的ISO,还要找到
isolinux.cfg文件,在append行里同样添加casper/verify=no - 重新打包ISO后,启动时就不会校验Squashfs签名,应该能绕过“找不到live文件系统”的错误。
情况2:生成合规的GPG签名(保留验证功能)
如果需要保留签名验证(比如合规或安全需求),得按照Ubuntu新的密钥环机制操作:
- 生成GPG密钥对:
在宿主机终端运行:
按照提示创建RSA密钥(建议4096位),记住输出里的密钥ID(类似gpg --gen-keyXXXXXXXXX的一串字符)。 - 导出公钥并替换到ISO:
将生成的gpg --export --armor XXXXXXXXX > casper.pub.gpgcasper.pub.gpg文件放到ISO的/casper/目录下,替换原来的同名文件。 - 签名新生成的Squashfs文件:
用你的私钥对新的filesystem.squashfs签名:
将这个签名文件gpg --default-key XXXXXXXXX --output filesystem.squashfs.gpg --sign filesystem.squashfsfilesystem.squashfs.gpg也放到/casper/目录下,和对应的Squashfs文件配对。 - 更新ISO的校验文件:
进入ISO根目录,重新生成MD5校验文件并签名:
替换原来的find . -type f -print0 | xargs -0 md5sum > MD5SUMS gpg --default-key XXXXXXXXX --output MD5SUMS.gpg --sign MD5SUMSMD5SUMS和MD5SUMS.gpg文件。
二、如何调试LiveCD启动错误?
如果跳过签名后还是有问题,或者想找到根本原因,可以通过以下方法调试:
- 开启Verbose启动模式:
在GRUB启动界面按e编辑启动项,找到linux行,删掉quiet和splash参数,替换成debug initrd=/casper/initrd.lz,然后按Ctrl+X启动。这会输出详细的启动日志,能看到哪一步找不到文件系统或验证失败。 - 进入救援shell查看日志:
启动失败后如果进入了救援shell,可以查看/var/log/syslog或/var/log/boot.log(Live环境下可能需要先挂载临时存储)。另外也可以添加console=tty0 console=ttyS0,115200参数,把日志输出到串口(如果有硬件条件的话)。 - 手动检查Squashfs路径:
在救援模式下,手动挂载ISO的casper分区,确认filesystem.squashfs是否在正确的/casper/路径下,文件权限是否正常。有时候打包ISO时文件复制不全或路径错误,也会触发这个错误。
额外小建议
其实Ubuntu官方提供了live-build工具,专门用于制作自定义LiveCD,它会自动处理新版本的签名、验证等机制,比手动跟着旧指南修改要靠谱得多,推荐你试试这个工具。
备注:内容来源于stack exchange,提问作者ojek
相关产品推荐
相关产品推荐

