如何避免手动更新 grub

如何避免手动更新 grub

我有 Ubuntu 11.10(首先安装)和 Fedora 16 双启动系统。我实际上遇到了两个问题。

  1. 如何避免在 Fedora 内核更新后手动运行 update-grub?
  2. 运行update-grub后,fedora传递的内核参数缺少ubuntu中的grub conf文件。

如果有解决方案,请告诉我。

谢谢。

答案1

关于将 Fedora 条目添加到生成的 Ubuntu 菜单列表,40_custom 应该看起来像这样。

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

# Boot Fedora's grub from partition
menuentry 'Fedora OS'
    recordfail
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    kernel /boot/grub/core.img

然后运行update-grub,如果这不起作用,请更改该行kernel并将其更改为linux

答案2

听起来您的双启动配置“不太理想”,您可能在 Fedora 和 Ubuntu 之间共享 /boot,并使用一个 grub(Ubuntu 的)来维护两个已安装内核列表。它们永远不会同步。

如果您希望双启动更易于管理,我建议在 Fedora 上重新安装 grub 以安装到“分区”(例如单独的 /boot 分区)而不是 MBR,然后从作为主引导加载程序(在 MBR 中)的 Ubuntu 将“仅启动 Fedora”,并且它的内核配置/grub 将自行处理。

如果您尝试在 Ubuntu 上使用 Fedora 内核,这与从头开始安装自定义内核没有什么不同,因此强烈建议不要这样做。

现在我已经有一段时间没这样做了,所以你可能需要做一些调整。要完成 grub 移动,你必须从 Fedora 运行“grub-install /dev/sdX”,其中 X 是包含 Fedora 内核的 /boot 的分区。如果它与 Ubuntu /boot 共存,那么你必须移动它并创建一个新的。

然后从 Ubuntu 编辑 /etc/grub.d/40_custom 并添加类似这样的内容。

# Boot Fedora's grub from partition
title Fedora OS
root (hd0,2)
kernel /boot/grub/core.img

(hd0,2) 假定您的 Fedora /boot 位于 sda2 上,请根据您的安装进行调整。

运行 update-grub,它应该“正常工作”。现在 Ubuntu 的 grub 只需指向 Fedora 的 grub,每当 Fedora 升级内核时,它都可以这样做,而不会受到维护 grub 菜单列表的 Ubuntu 的阻挠。每个操作系统都将维护自己的 grub,从此以后它们将幸福地共存。您永远不必再次从 Ubuntu 运行 update-grub 来反映 Fedora 中的内核更新。

相关内容