我正在使用 Ubuntu 12.10。我自己编译了一个新内核并安装它。安装后,我更新了 grub。问题就在这里。当我的电脑重新启动时,它没有显示 GRUB 屏幕来选择旧/新内核或 Windows 7(屏幕是黑色的)。它只从新内核启动。我该如何解决这个问题?我的电脑有一张显卡:华硕 - Geforce GT430。
答案1
我对编译内核一无所知,但我觉得 Grub 已经设置为隐藏超时.您应该检查文件/etc/default/grub
,例如通过打开编辑器:
sudo gedit /etc/default/grub
看看这些行是否和你的一样:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_HIDDEN_TIMEOUT
有关和的行应该GRUB_TIMEOUT
相同。如果不一致,请相应地进行更改。before确保不使用隐藏超时,这意味着在 Grub 启动到其默认条目之前会有 10 秒的延迟。#
GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10
对 Grub 文件进行更改并保存后,您运行:
sudo update-grub
确保更改已应用。执行此操作后,您应该会返回 Grub 菜单,以便能够再次选择要启动的内核或操作系统。
答案2
尝试更改 GRUB_TIMEOUT 值以强制 grub 菜单:
sudo gedit /etc/default/grub
并改变
GRUB_TIMEOUT=0
到
GRUB_TIMEOUT=5
保存并重新运行update-grub
答案3
完成所有这些步骤后,我在终端中发现了这一点
grub-mkconfig: You must run this as root
这就是我全部的行动
ubuntu@ubuntu:~$ sudo gedit /etc/default/grub
ubuntu@ubuntu:~$ update-grub
grub-mkconfig: You must run this as root
ubuntu@ubuntu:~$ sudo gedit /etc/default/grub
ubuntu@ubuntu:~$ sudo update-grub
/usr/sbin/grub-probe: error: failed to get canonical path of /cow.
ubuntu@ubuntu:~$ ^C
ubuntu@ubuntu:~$ sudo update-grub
/usr/sbin/grub-probe: error: failed to get canonical path of /cow.
ubuntu@ubuntu:~$ sudo gedit /etc/default/grub
ubuntu@ubuntu:~$ update-grub
grub-mkconfig: You must run this as root
答案4
提到的其他线程的解决方案与该用户的问题并不完全匹配,但我确实在那里找到了解决方案。
这为我解决了这个问题:
跑步:sudo update-grub
在我的例子中,它找到了新内核,但没有写出 menu.lst 文件。我相当确定这是因为我在安装新内核时选择了“不更新”选项,即使我执行了 update-grub,grub 也不允许更新文件。
为了解决这个问题,我将我的移至/boot/grub/menu.lst
(/boot/grub/menu.lst.old
只是为了保存),然后sudo update-grub
再次运行,写入文件并反映我刚刚安装的新内核版本。
希望这可以帮助...