如何确保 apt upgrade 不会改变 grub.cfg 或者之后恢复它?

如何确保 apt upgrade 不会改变 grub.cfg 或者之后恢复它?

我的计算机通常运行 Windows,但配置为双启动 Windows/Ubuntu 18.04。我还配置了 MS Hyper-V,以便能够以 VM 的形式启动相同的 Ubuntu 安装,因为这两个操作系统位于不同的磁盘上。GRUB 是启动管理器(或 GRUB2,无论此版本的 Ubuntu 通常附带什么)。

通常情况下,我会在需要时启动 Windows,并在虚拟机中运行 Ubuntu。当我运行 apt upgrade 时,它​​有时会弄乱 grub 配置,而且由于它看不到 Windows 磁盘,所以它不会放入启动 Windows 的条目。这意味着下次系统启动时,它会启动到 Ubuntu,我必须运行 Grub Customizer 才能在菜单中恢复该条目。

那么,是否有可能阻止 apt 自动粗暴地破坏我的 grub.cfg?或者,如果失败了,apt upgrade 是否会创建 grub.cfg 的备份,以便我可以以某种方式恢复?或者,如果这两种方法都失败了,最好的方法是手动创建 grub.cfg 文件的备份,以便我可以根据需要恢复它。我的理解是,通常还有一个“人类可读”版本的文件,因此任何备份/恢复方案都应该使这两个文件保持同步。感谢您的帮助!

答案1

事先将 /boot/grub/grub.cfg 复制到 grub.bak、grub.before、grub.alt 或其他位置。这是一个文本文件,而不是二进制文件,并且有更多详情请点击此处

升级后,将当前的 grub.cfg 与副本进行比较您选择的比较工具,如果需要,从副本中复制回 grub.cfg。

如果您还想保存连接在一起构成 grub.cfg 的每个组成文件,请将 /etc/grub.d 和 /boot/grub/grub.cfg 的内容打包成 tar,然后解压到 /temp 中,并在您进行重大更改并需要检查后与您选择的工具进行比较。

答案2

您可以使用:

sudo cp -a /boot/grub/grub{.cfg,.bak} ; sudo apt update && sudo apt upgrade ; sudo cp -a /boot/grub/grub{.bak,.cfg} ; sudo rm -f /boot/grub/grub.bak

但…… 的更改grub.cfg可能不是问题的根源。 有可能事情被update-initramfsupdate-initramfs 做什么?

如果是这种情况,事前备份/boot/grub/grub.cfg,事后恢复,apt upgrade对解决问题没有多大帮助。最好的办法是使用 grub 子菜单下的旧内核版本进行启动Ubuntu 的高级选项

另一件需要考虑的事情是我们经常sudo update-grub手动运行来获取新的参数,例如nomodeset从更新到更新/etc/default/grub/boot/grub/grub.cfg所以我们只是手动完成我们认为apt upgrade是自动完成的工作。

相关内容