我在一台新机器(2 周前)上运行着全新的 Ubuntu 16.04.2,但两天前(5 月 2-3 日)的一次内核更新彻底破坏了我的系统。我有理由相信,如果我能让 grub 在启动时选择一个较旧的内核,我就能修复它。
问题是,这是一个单启动安装,因此默认情况下 grub 的菜单是禁用的,我无法通过反复按 Shift 来显示它(或按空格键或其他方式)。到目前为止,我只能通过按 Esc 来显示 grub 的命令行界面。这就是我目前所拥有的一切,因为我甚至无法打开会话,更不用说终端了,所以我无法编辑 grub 的配置文件或其他任何东西。
我尝试过
grub> configfile /boot/grub/grub.cfg
但它只是尝试照常启动我的系统,而我无法干预选择另一个内核。
我听说可以从 CLI 启动 grub 的菜单界面,但是没有解释如何在手动的。目前,这似乎是我唯一的选择。有什么想法吗?
编辑:由于我无法编辑配置文件或使用 Shift 调出 grub 菜单,因此这不是另一个问题
答案1
您可以从 GRUB 命令行手动选择内核和 initrd。但这只会改变一次启动。系统启动后,您必须对 GRUB 进行必要的调整,以使其永久生效。
grub> set root=(hd<disk with kernel and initrd>,msdos<partition with kernel and initrd>)
grub> linux /boot/vmlinuz-<kernel version you want to boot from> root=/dev/<root device>
grub> initrd /boot/initrd-<same version as chosen kernel>
grub> boot
如果 /boot 是单独的分区,上述内容可能会略有不同。您可以将初始 root= 设置为 /boot 磁盘和分区,然后在 delcaring 时linux
不要boot
包含它,boot/
因为它将从该目录开始。root=
不过,linux 行中的 仍将指向根磁盘/分区。
---编辑以包含来自评论的信息---
根据我们在评论中讨论的内容,您应该尝试以下命令来启动:
grub> set root=(hd1,gpt2)
grub> linux /boot/vmlinuz-<version you want to boot from> root=/dev/sdb2
grub> initrd /boot/initrd-<same version as chosen kernel>
grub> boot