我正在使用一个仅与较旧的 Linux 内核版本兼容的特定软件包。通过以下命令安装旧版本后
$ sudo apt-get install linux-image-3.19.0-49-generic \
linux-headers-3.19.0-49 linux-headers-3.19.0-49-generic
我重新启动,但无法打开 GRUB GUI 屏幕。在网上查了一下,我发现了这个:
我没有使用数字来 pick GRUB_DEFAULT
,而是使用了以下建议:
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.19.0-49-generic"
请注意,我在编辑之前创建了备份/etc/default/grub
。启动时,这次机器使用正确的内核启动,但它进入了看起来像终端的地方,但没有键盘响应。看到这一点,我决定恢复到原始内核,但它没有在 GRUB GUI 上列出(它现在由于某种原因可以工作,或者只是可能没有足够快地按下密钥)。
相反,我在 GUI 上只有 Ubuntu 和高级选项。因此我能够进入 grub 提示符,即:
grub>
我觉得这应该是一个非常直接的修复,要么让旧内核正确启动,要么启动原始内核。要么有效。
然而,我对 GRUB 命令行的经验或知识绝对为零。任何帮助将不胜感激。
答案1
就我个人而言,在开始编辑 grub.cfg 文件之前,我会尝试先从 GRUB 命令行启动它。从 CLI 启动后,您就会知道要在文件中放入哪些正确设置;-)
在 GRUB 命令行中,首先键入insmod ext2
以安装 ext2 文件系统模块。然后,键入ls
,这将显示您有哪些可用分区以及 GRUB 对这些分区使用的名称(与 Linux 不同)。
获得该信息后,请输入:
root=<insert GRUB path to /boot partition>
linux <insert path to relevant vmlinuz file> root=<insert Linux path to root partition> ro <insert any other kernel boot parameters you want>
initrd <insert path to initrd file>
boot
它应该使用该内核启动。例如,在我的笔记本电脑上,我会输入:
root=(ahci0,gpt2)
linux /vmlinuz-4.13.1 root=/dev/sda4 ro
initrd /initrd.img-4.13.1
boot
然后,如果您想将其添加到 GRUB 启动菜单中,只需将这些命令添加到 grub.cfg 文件中即可。
(请注意,我假设您正在使用 initrd,因为您正在使用 Ubuntu)