几周前,我配置了一台双启动笔记本电脑以在我磁盘的第三个分区上运行 Xubuntu 10.4(即我必须手动设置安装位置)。一切都很好,直到我安装了一堆自动更新(包括一个新内核),这些更新是在 Wifi 最终工作后发现的。重新启动后,Grub 不再启动到 Xubuntu(它之前曾多次启动),只是显示了一个提示。我设法使用 Live 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 保存的条目 设置 prev_saved_entry= save_env prev_saved_entry 设置 boot_once=true 菲 功能保存默认{ 如果 [ -z ${boot_once} ]; 然后 保存条目=${选择} save_env 保存的条目 菲 } 函数记录失败{ 设置记录失败=1 如果 [ -n ${have_grubenv} ]; 那么如果 [ -z ${boot_once} ]; 然后 save_env 记录失败;菲; 菲 } insmod ext2 设置根='(hd0,5)' 搜索 --no-floppy --fs-uuid --set c1550ae8-66af-414c-874d-15cb43176ba5 如果加载字体 /usr/share/grub/unicode.pf2 ;然后 设置 gfxmode=640x480 insmod gfxterm insmod vbe 如果终端输出 gfxterm ; 然后是真的;别的 # 为了向后兼容不支持的 terminal.mod 版本 # 理解终端输出 终端 gfxterm 菲 菲 insmod ext2 设置根='(hd0,5)' 搜索 --no-floppy --fs-uuid --set c1550ae8-66af-414c-874d-15cb43176ba5 设置 locale_dir=($root)/boot/grub/locale 设置 lang=de insmod 获取文本 如果 [ ${recordfail} = 1 ]; 然后 设置超时=-1 别的 设置超时=10 菲 ### END /etc/grub.d/00_header ### ### 开始 /etc/grub.d/05_debian_theme ### 设置 menu_color_normal=白色/黑色 设置 menu_color_highlight=黑色/浅灰色 ### END /etc/grub.d/05_debian_theme ### ### 开始 /etc/grub.d/10_linux ### menuentry 'Ubuntu,mit Linux 2.6.32-24-generic' --class ubuntu --class gnu-linux --class gnu --class os { 记录失败 insmod 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 quiet splash initrd /boot/initrd.img-2.6.32-24-generic } menuentry 'Ubuntu,mit Linux 2.6.32-24-generic (Wiederherstellungsmodus)' --class ubuntu --class gnu-linux --class gnu --class os { 记录失败 insmod ext2 设置根='(hd0,5)' 搜索 --no-floppy --fs-uuid --set c1550ae8-66af-414c-874d-15cb43176ba5 echo 'Linux 2.6.32-24-generic wird geladen ...' linux /boot/vmlinuz-2.6.32-24-generic root=UUID=c1550ae8-66af-414c-874d-15cb43176ba5 ro单 echo 'Initiale Ramdisk wird geladen ...' initrd /boot/initrd.img-2.6.32-24-generic } menuentry 'Ubuntu,mit Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os { 记录失败 insmod 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 quiet splash initrd /boot/initrd.img-2.6.32-21-generic } menuentry 'Ubuntu,mit Linux 2.6.32-21-generic (Wiederherstellungsmodus)' --class ubuntu --class gnu-linux --class gnu --class os { 记录失败 insmod ext2 设置根='(hd0,5)' 搜索 --no-floppy --fs-uuid --set c1550ae8-66af-414c-874d-15cb43176ba5 echo 'Linux 2.6.32-21-generic wird geladen ...' linux /boot/vmlinuz-2.6.32-21-generic root=UUID=c1550ae8-66af-414c-874d-15cb43176ba5 ro单 echo 'Initiale Ramdisk wird geladen ...' initrd /boot/initrd.img-2.6.32-21-generic } ### END /etc/grub.d/10_linux ### ### 开始 /etc/grub.d/20_memtest86+ ### menuentry "内存测试 (memtest86+)" { insmod ext2 设置根='(hd0,5)' 搜索 --no-floppy --fs-uuid --set c1550ae8-66af-414c-874d-15cb43176ba5 linux16 /boot/memtest86+.bin } menuentry "内存测试 (memtest86+, 串行控制台 115200)" { insmod ext2 设置根='(hd0,5)' 搜索 --no-floppy --fs-uuid --set c1550ae8-66af-414c-874d-15cb43176ba5 linux16 /boot/memtest86+.bin 控制台=ttyS0,115200n8 } ### END /etc/grub.d/20_memtest86+ ### ### 开始 /etc/grub.d/30_os-prober ### menuentry "Microsoft Windows XP Professional (on /dev/sda1)" { 安装ntfs 设置根='(hd0,1)' 搜索 --no-floppy --fs-uuid --set 883cb1b73cb1a09c drivemap -s (hd0) ${root} 链式装载机 +1 } ### END /etc/grub.d/30_os-prober ### ### 开始 /etc/grub.d/40_custom ### # 此文件提供了一种添加自定义菜单条目的简单方法。只需键入 # 您要在此评论之后添加的菜单条目。注意不要改变 # 上面的 'exec tail' 行。 ### END /etc/grub.d/40_custom ###
我在笔记本电脑上安装了新的 Ubuntu 12.10(桌面)时发生了这种情况。系统在初始安装后正常启动,然后在获得内核更新(来自初始更新集)后,它会通过 GRUB 菜单,启动内核,然后是黑屏,没有密码提示。
问题似乎与视频有关。我发现一直修复它,但不太漂亮的是编辑 /etc/default/grub,并从和 running中删除
quiet
andsplash
选项。如果您已经无法启动,那么当 GRUB 菜单出现时,按 E 编辑您的 GRUB 命令行并删除这些选项,然后按 ctrl-X 启动。GRUB_CMDLINE_LINUX_DEFAULT
update-grub
这个错误建议尝试
plymouth:force-drm
作为 GRUB 引导选项,这使得它不使用内核帧缓冲区驱动程序。这似乎也有效,只是它仍然没有使用启动画面,而是以文本模式启动。值得一提的是,我的笔记本电脑有两个图形芯片组:英特尔(使用 i915 内核驱动程序)和 Nvidia GTX680M(仍在努力加速这项工作)。可能是两个不同的图形设备的存在导致启动不确定。
grub 无法启动,这意味着它的配置已损坏,或者其代码已被覆盖。
这有可能的原因:
某些 Windows 软件会覆盖硬盘驱动器上的隐藏(随机)空间。他们这样做是出于 DRM 的原因。但是,我认为问题在升级内核后立即弹出,然后重新启动,所以这可能不是。
您的 ubuntu 分区(或至少一个持有 grub 的分区)上没有任何可用空间。确保你这样做。我现在把钱花在这个上。
每次安装新内核时,grub 都会自动重新配置。尝试手动重新配置,看看是否有错误输出。在终端中运行“sudo update-grub”来执行此操作。你必须输入你的密码,它应该输出一些东西。
你说它是你磁盘的第三个分区;它是可移动磁盘吗?像外置硬盘还是内置硬盘?因为在这种情况下,设备编号可能与安装时间不同。
每次作为软件更新的一部分添加新内核时,都会更新 grub 配置。因此,Javier Rivera 要求的信息非常重要。相关的配置文件是
/boot/grub/grub.cfg
- 如果你没有找到它然后寻找/boot/grub/menu.lst
此外,您可以运行
update-grub
并检查是否有任何错误 - 请同时发布结果。但是,如果 update-grub 成功,则解决方法是每次更新包含新内核时手动运行它。