![为什么使用持久 Live USB 时内核无法更新?](https://linux22.com/image/818137/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%E6%8C%81%E4%B9%85%20Live%20USB%20%E6%97%B6%E5%86%85%E6%A0%B8%E6%97%A0%E6%B3%95%E6%9B%B4%E6%96%B0%EF%BC%9F.png)
我创建了一个带有 4GB 持久文件的 Ubuntu 12.04 实时 USB。运行更新管理器时,Firefox 和其他软件会得到更新。但是,Linux 内核不会更新,我无法安装 synaptic 包管理器、ubuntu tweak 等。有办法解决此问题吗?提前致谢。
答案1
我也在 askubuntu 上找到了这个解决方案,我应用了它并且对我有用,我在这里再次分享:
gksudo gedit /etc/kernel/postinst.d/zz-update-grub
**
注释掉第 15 行
**
前
*/postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
exec update-grub
;;
后
*/postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
# exec update-grub
;;
运行配置脚本:
$ sudo dpkg --configure -a
(lots of debugging)
$
您应该会看到很多调试,而不是最后的错误行。
为确保万无一失,请重新运行配置。它应该立即结束,并且没有任何日志:
$ sudo dpkg --configure -a
$
现在,您可以恢复 zz-update-grub 文件,以防您稍后想要安装其他内核并且 Grub 开始与 overlayfs 一起工作……
答案2
这显然是一个常见的问题,但没有人正确回答。
现有的基于 ISO9660 的实时操作系统均不提供内核更新功能:内核和 initrd 是实时操作系统唯一无法更新的组件,因为它们位于数据持久分区(如果有)之外,并且系统分区是 ISO9660 格式的。
经过几年的自我反省,我发现利文请参阅白皮书,了解详情。
liveng 项目的完整目标是为社区提供一套最佳实践,以便将常见的 Debian Linux live 转变为 live(ng) 操作系统,其特点是:
native encrypted persistence; kernel update (on a live ISO 9660 filesystem!); UEFI, with UEFI Secure Boot compatibility, with a real efi partition.
Tails 是具有内核更新功能的实时系统的另一个示例,但是它的文件系统是 FAT,对于实时系统来说不太好......