我有 Ubuntu 11.10(首先安装)和 Fedora 16 双启动系统。我实际上遇到了两个问题。
- 如何避免在 Fedora 内核更新后手动运行 update-grub?
- 运行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 中的内核更新。