几周前,我配置了一台双启动笔记本电脑,在磁盘的第三个分区上运行 Xubuntu 10.4(即我必须手动设置安装位置)。一切都很顺利,直到我安装了一堆自动更新(包括一个新的内核),这些更新是在 Wifi 终于正常工作后发现的。重启后,Grub 不再启动 Xubuntu(之前可以启动几次),而只是显示一个提示。我设法使用实时 CD 和一小时的互联网阅读修复了系统。
几周以来一切都很好,包括自动更新。昨天我通过自动更新获得了一个新内核。你猜怎么着?笔记本电脑后来拒绝启动。
在我看来,每次内核更新都会让我的系统无法启动。除了显而易见的“不要安装更新”之外,我还能如何防止这种情况发生?我还应该检查或监控该系统上的其他内容吗?或者我对内核更新的结论完全错误,我应该寻找导致这些症状的其他原因?
编辑:评论中要求的更多细节:我在更新和崩溃之间没有启动 Windows,所以对我来说,这似乎只与 Xubuntu 有关。Grub 是 Grub2(版本 1.98 左右)。/boot/grub/grub.cfg 如下所示:
# # 请勿编辑此文件 # # 它由 /usr/sbin/grub-mkconfig 使用模板自动生成 # 来自 /etc/grub.d 和 /etc/default/grub 中的设置 # ### 开始 /etc/grub.d/00_header ### 如果 [ -s $prefix/grubenv ]; 那么 加载环境 菲 设置默认值=“0” 如果 [ ${prev_saved_entry} ]; 那么 设置 saved_entry=${prev_saved_entry} 保存环境已保存条目 设置上一个保存的条目= save_env 上一个_保存的条目 设置 boot_once=true 菲 函数保存默认值 { 如果 [ -z ${boot_once} ]; 那么 saved_entry=${选择} save_env saved_entry 菲 } 函数记录失败 { 设置记录失败=1 如果 [ -n ${have_grubenv} ]; 那么如果 [ -z ${boot_once} ]; 那么 save_env recordfail; fi; fi } 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 如果 loadfont /usr/share/grub/unicode.pf2 ; 那么 设置 gfxmode=640x480 修改 gfxterm 修改vbe 如果终端输出 gfxterm ; 则为真 ; 否则 # 为了向后兼容不具备以下功能的 terminal.mod 版本 # 理解 terminal_output 终端 gfxterm 菲 菲 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 设置 locale_dir=($root)/boot/grub/locale 设置语言=de 修改 gettext 如果 [ ${recordfail} = 1 ]; 那么 设置超时=-1 别的 设置超时=10 菲 ### 结束 /etc/grub.d/00_header ### ### 开始 /etc/grub.d/05_debian_theme ### 设置菜单颜色正常=白色/黑色 设置 menu_color_highlight=black/light-gray ### 结束 /etc/grub.d/05_debian_theme ### ### 开始 /etc/grub.d/10_linux ### 菜单项'Ubuntu,mit Linux 2.6.32-24-generic'--class ubuntu --class gnu-linux --class gnu --class os { 記錄失敗 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 linux /boot/vmlinuz-2.6.32-24-generic root=UUID=c1550ae8-66af-414c-874d-15cb43176ba5 ro 安静飞溅 initrd /boot/initrd.img-2.6.32-24-generic } 菜单项“Ubuntu,使用 Linux 2.6.32-24-generic(扩展模式)”--class ubuntu --class gnu-linux --class gnu --class os { 記錄失敗 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 echo ‘Linux 2.6.32-24-generic 已下载 …’ linux /boot/vmlinuz-2.6.32-24-generic root=UUID=c1550ae8-66af-414c-874d-15cb43176ba5 ro单个 echo ‘将加载初始 Ramdisk …’ initrd /boot/initrd.img-2.6.32-24-generic } 菜单项'Ubuntu,mit Linux 2.6.32-21-generic'--class ubuntu --class gnu-linux --class gnu --class os { 記錄失敗 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 linux /boot/vmlinuz-2.6.32-21-generic root=UUID=c1550ae8-66af-414c-874d-15cb43176ba5 ro 安静飞溅 initrd /boot/initrd.img-2.6.32-21-generic } 菜单项“Ubuntu,使用 Linux 2.6.32-21-generic(扩展模式)”--class ubuntu --class gnu-linux --class gnu --class os { 記錄失敗 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 echo ‘Linux 2.6.32-21-generic 已下载…’ linux /boot/vmlinuz-2.6.32-21-generic root=UUID=c1550ae8-66af-414c-874d-15cb43176ba5 ro单个 echo ‘将加载初始 Ramdisk …’ initrd /boot/initrd.img-2.6.32-21-generic } ### 结束 /etc/grub.d/10_linux ### ### 开始 /etc/grub.d/20_memtest86+ ### 菜单项“内存测试 (memtest86+)”{ 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 linux16 /boot/memtest86+.bin } menuentry“内存测试(memtest86+,串行控制台115200)”{ 修改 ext2 设置根='(hd0,5)' 搜索--no-floppy--fs-uuid--set c1550ae8-66af-414c-874d-15cb43176ba5 linux16 /boot/memtest86+.bin 控制台=ttyS0,115200n8 } ### 结束 /etc/grub.d/20_memtest86+ ### ### 开始 /etc/grub.d/30_os-prober ### 菜单项“Microsoft Windows XP Professional (在 /dev/sda1 上)”{ 修改ntfs 设置根='(hd0,1)' 搜索--no-floppy--fs-uuid--设置 883cb1b73cb1a09c 驱动器映射 -s (hd0) ${root} 链式装载机 +1 } ### 结束 /etc/grub.d/30_os-prober ### ### 开始 /etc/grub.d/40_custom ### # 此文件提供了一种添加自定义菜单项的简单方法。只需输入 # 个要在此注释后添加的菜单项。请注意不要更改 # 上面的‘exec tail’行。 ### 结束 /etc/grub.d/40_custom ###
答案1
我在笔记本电脑上安装新的 Ubuntu 12.10(桌面版)时遇到过这种情况。初始安装后,系统启动正常,然后在获取内核更新(来自初始更新集)后,它会通过 GRUB 菜单,启动内核,然后出现黑屏,没有密码提示。
问题似乎与视频有关。我发现一个可以不断修复此问题但不太好的方法,即编辑 /etc/default/grub,从 中删除quiet
和splash
选项GRUB_CMDLINE_LINUX_DEFAULT
,然后运行update-grub
。如果您已经无法启动,则当 GRUB 菜单出现时,按 E 编辑 GRUB 命令行并删除这些选项,然后按 ctrl-X 启动。
这个错误建议尝试将plymouth:force-drm
其作为 GRUB 启动选项,这样它就不会使用内核帧缓冲驱动程序。这似乎也有效,只是它仍然不使用启动画面,而是以文本模式启动。
值得一提的是,我的笔记本电脑有两个图形芯片组:Intel(使用 i915 内核驱动程序)和 Nvidia GTX680M(仍在努力加速这项工作)。可能是两个不同的图形设备的存在导致启动不确定。
答案2
如果 grub 无法启动,则意味着它的配置已损坏,或者其代码已被覆盖。
可能的原因如下:
某些 Windows 软件会覆盖硬盘上的隐藏(随机)空间。他们这样做是出于 DRM 原因。不过,我认为升级内核并重新启动后会立即出现此问题,因此可能不是这个问题。
您的 ubuntu 分区(或至少是存放 grub 的分区)上没有剩余可用空间。请确保您有剩余空间。目前,我押注于此。
每次安装新内核时,grub 都会自动重新配置。尝试手动重新配置它,看看是否有任何错误输出。在终端中运行“sudo update-grub”即可执行此操作。您必须输入密码,然后它会输出一些内容。
你说这是你磁盘的第三个分区;它是可移动磁盘吗?比如外部硬盘或内部硬盘?因为在这种情况下,设备编号可能与安装时不同。
答案3
每次在软件更新中添加新内核时,grub 配置都会更新。因此,Javier Rivera 要求的信息非常重要。相关配置文件是/boot/grub/grub.cfg
- 如果您找不到它,请查找/boot/grub/menu.lst
另外,您可以运行update-grub
并检查是否出现任何错误 - 请发布结果。但是,如果 update-grub 成功,则解决方法是每次更新包含新内核时手动运行它。