如何在双启动机器上更新grub?

我有一台机器在一个分区上安装了ubuntu 16.04,在另一个分区上安装了ubuntu 16.10。 我有一个200米的分区,可以安装/ boot / efi。

基本上我使用16.04并使用16.04安装的grub。

有时我上16.10并更新内核。 但是,如果没有输入,我无法更新16.04的grub。 所以我必须在16.10上进行grub-install才能启动新内核。 然后当我回到16.04时,我更新了grub和grub-install,我认为这是愚蠢的。

如何在不输入的情况下更新16.04的grub,有一个很好的解决方案吗?

我可以执行更新grub配置文件或使用其他分区作为/ boot的操作吗? 这种操作危险吗?

您可以直接引导分区,而不是特定内核。 基于Debian(不确定其他发行版)在最新内核中添加链接,在最新内核中添加第二个链接。 所以你启动链接到最新的内核。 关闭os-prober,将驱动器和分区的启动节复制到40_custom。

备份当前grub.cfg然后编辑40_custom

sudo cp -a /boot/grub/grub.cfg /boot/grub/grub.cfg.backup sudo nano /etc/grub.d/40_custom 

将这样的条目添加到40_custom,使用您的驱动器和分区代替(hd1,1)和sdb1:

 menuentry "Install on sdb1" { set root=(hd1,1) linux /vmlinuz root=/dev/sdb1 ro quiet splash initrd /initrd.img } 

编辑grub以关闭os-prober:

 sudo nano /etc/default/grub 

将此行添加到grub,以便它不添加其条目并更新grub:

 GRUB_DISABLE_OS_PROBER=true 

并使用所有更改更新grub:

 sudo update-grub 

较旧的类似条目,也有UUID版本:

如何添加GRUB2菜单项以在USB驱动器上启动已安装的Ubuntu?

详细信息:如何:创建免维护的自定义GRUB2屏幕.- Cavsfan

https://help.ubuntu.com/community/MaintenanceFreeCustomGrub2Screen

https://help.ubuntu.com/community/Grub2/CustomMenus

您已经描述了GRUB的一个基本限制:它依赖于只能在Ubuntu(或其他支持GRUB的操作系统)中生成的配置文件。 通常,在控制GRUB的OS /发行版中运行sudo update-grub应该可以解决问题。 在某些情况下(但可能不是你的),可能存在会导致失败的问题,在这种情况下,需要更加笨拙的箍跳。

有几种替代方法:

  • 我自己的rEFInd启动管理器不依赖于预先配置的内核列表; 相反,它会在引导时扫描引导加载程序和Linux内核,并动态创建新的引导列表。 (有一些与文件系统驱动程序,配置选项和内核名称有关的警告;但这适用于典型的Ubuntu安装。)这种方法使得rEFInd比具有多个Linux发行版的计算机更容易处理,因为rEFInd将会提升无论您使用哪个发行版安装rEFInd以及哪个发行版都有新内核,每当您重新启动时都会使用新内核。
  • 如果使用引导加载程序(如GRUB Legacy或ELILO),它使用存储在EFI System Partition(ESP)上的更简单的配置文件格式,则可以手动维护它。 这增加了内核升级的工作量,但是如果您有多个发行版,那么在更新发行版A的内核时,这可能比重新启动到发行版B更可取。 有关Linux的备用EFI引导加载程序的信息,请参阅我的此页面 。
  • 引导加载程序规范是一种在引导加载程序配置中强制执行某些标准化的方法。 如果采用它,它将使分发A能够以分发B的引导加载程序立即识别和兑现的方式更新其内核配置。 就个人而言,我认为这个提案有一些严重的缺陷,但它也解决了一个重要的问题。 我看到很少有证据表明任何一个大玩家(Canonical,Red Hat,Novell等)都支持它,所以今天这不是一个实际的可能性,并且不太可能在不久的将来成为一个。 我以为我会提到它,所以你可以考虑自己编写工具,使Ubuntu与它兼容,和/或游说Canonical采用这种方法。

当然,我有偏见,但现在恕我直言,rEFInd是解决您遇到的问题的最佳方式。 OTOH,rEFInd还不是官方的Ubuntu软件包(虽然它应该在未来;它现在在Debian测试中,所以最终应该进入Ubuntu)。 如果你想使用安全启动,它还需要一些额外的跳跃。

那么……当你不执行sudo update-grub命令时,GRUB怎么知道安装了新的内核? 所以这是不可避免的,但另一方面重新安装GRUB并不是必须要做的 – 您可以选择从GRUB菜单中的高级启动选项启动新内核。 在您正在使用的主操作系统上重新安装GRUB会带来更多便利,因为您可以直接从启动菜单的第一级启动其他系统。 不幸的是,没有其他选择来处理这种双启动设置……