我的计算机通常运行 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
答案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-initramfs
(update-initramfs 做什么?)
如果是这种情况,事前备份/boot/grub/grub.cfg
,事后恢复,apt upgrade
对解决问题没有多大帮助。最好的办法是使用 grub 子菜单下的旧内核版本进行启动Ubuntu 的高级选项。
另一件需要考虑的事情是我们经常sudo update-grub
手动运行来获取新的参数,例如nomodeset
从更新到更新/etc/default/grub
,/boot/grub/grub.cfg
所以我们只是手动完成我们认为apt upgrade
是自动完成的工作。