如何使用较旧的内核版本启动?

Sha*_*yan 72 grub2 kernel

最新的内核导致我的声音出现问题,在旧版本上运行良好。因为我只安装了 Ubuntu,所以 Grub 在启动时没有显示。如何在启动时手动选择我的内核版本?

fos*_*dom 70

显示 Grub 的最简单方法是SHIFT在启动时按住按钮。

作为替代方案,您可以始终显示 Grub,而无需启动任何特定内核:

gksudo gedit /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

更改GRUB_TIMEOUT为 -1 并注释掉GRUB_HIDDEN_TIMEOUT

运行结束

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

  • `警告:不再支持在设置 GRUB_HIDDEN_TIMEOUT 时将 GRUB_TIMEOUT 设置为非零值。` 我评论了 `GRUB_HIDDEN_TIMEOUT` 并设置了 `GRUB_TIMEOUT=0` (9认同)
  • “SHIFT”不适用于 UEFI。尝试“ESC”。 (3认同)
  • 在 Grub 2.04 中,该设置称为“GRUB_TIMEOUT_STYLE=hidden”。评论出来就足够了。 (2认同)

mar*_*tin 28

启动时按住 shift 键,将显示 Grub 菜单。您现在可以选择较旧的内核版本。

要选择较旧的内核作为默认内核,请参阅帖子

  • 在我的情况下(Ubuntu 16.04),它是左移。右移不起作用。 (2认同)
  • 如果旧内核未显示在 grub 中(它们已被删除)怎么办?这是否意味着无法访问这些内核? (2认同)
  • 我必须使用转义(而不是移位) (2认同)

Nam*_*lai 28

使用以下命令获取当前安装的内核菜单条目。

ubuntu:~$ sudo grub-mkconfig | grep -iE "menuentry 'Ubuntu, with Linux" | awk '{print i++ " : "$1, $2, $3, $4, $5, $6, $7}'

0 : menuentry 'Ubuntu, with Linux 5.4.0-80-generic' --class ubuntu
1 : menuentry 'Ubuntu, with Linux 5.4.0-80-generic (recovery mode)'
2 : menuentry 'Ubuntu, with Linux 4.15.0-159-generic' --class ubuntu
3 : menuentry 'Ubuntu, with Linux 4.15.0-159-generic (recovery mode)'
4 : menuentry 'Ubuntu, with Linux 4.15.0-45-generic' --class ubuntu
5 : menuentry 'Ubuntu, with Linux 4.15.0-45-generic (recovery mode)'
Run Code Online (Sandbox Code Playgroud)

GRUB_DEFAULT=0根据您的需要修改该值。

目前我的服务器启动5.4.0-80-generic

ubuntu:~# uname -srn
Linux ubuntu 5.4.0-80-generic
Run Code Online (Sandbox Code Playgroud)

所以我想用4.15.0-45-generic菜单项启动我的系统4

执行以下命令中的修改GRUB_DEFAULT="1>4"值,/etc/default/grub 以使用修改后的 GRUB_DEFAULT 设置重新生成 grub 配置文件。

此处解释"1>4"格式

sudo update-grub

重新启动ubuntu系统。

sudo systemctl reboot

重启后我的 ubuntu 服务器使用旧内核启动4.15.0-45-generic

ubuntu:~# uname -srn
Linux ubuntu 4.15.0-45-generic
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案。非常感谢 (4认同)

小智 12

如果您的系统中有几个内核,您可以手动设置将启动的内核版本:

  1. BIOS 启动后,按下 Shift 按钮重新启动 PC 以显示 GRUB。你会看到类似的东西: GRUB 起始页

  2. 选择“Ubuntu的高级选项”并记住该菜单行的索引(从0开始计数)在图片索引为1

选择混凝土内核

  1. 选择启动的具体内核并记住该菜单行的索引(从0开始计数) 所选内核的图片索引为2

  2. 启动系统。此操作用于在具体内核上进行一次引导。如果您想一直从具体内核开始,您应该执行以下步骤:

4.1. 打开并编辑 GRUB 安装文件:

sudo nano /etc/default/grub
Run Code Online (Sandbox Code Playgroud)

4.2. 找到行 GRUB_DEFAULT=...(默认情况下 GRUB_DEFAULT=0)并将引号菜单路径设置为具体内核(记住步骤 2 和 3 中的菜单索引)。在我的系统中,第一个索引是 1,第二个是 2。我设置为 GRUB_DEFAULT

GRUB_DEFAULT="1>2"
Run Code Online (Sandbox Code Playgroud)

保存存档。

4.3. 更新 GRUB 信息以应用更改:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)

4.4. 重新启动后,您会通过选择的菜单路径在内核上自动启动。我机器上的一个例子 1 -> 2

4.5. 重启后检查内核版本:

用户名 -r


Sur*_*esh 8

引导时,当 GRUB 出现并带有条目时,选择第二个条目,即Ubuntu 的高级选项,在那里您可以看到以前安装的不同旧内核版本,您可以选择其中一个对您有用。否则,您转到grub.cfg并将所需的内核版本粘贴到当前安装的内核条目之上。在这两种方式中它都有效


小智 7

请使用以下命令安装以前的内核:

sudo apt-get install linux-image-3.0.0-12-generic linux-headers-3.0.0-12-generic
Run Code Online (Sandbox Code Playgroud)

然后重启。系统将提示您选择内核。


kar*_*rel 7

16.04 及更高版本

\n
    \n
  1. 计算机启动时出现主板/计算机制造商徽标闪屏后,在BIOS中快速按住该键Shift,将调出GNU GRUB菜单。(如果您看到 Ubuntu 徽标,则说明您错过了可以进入 GRUB 菜单的位置。)使用 UEFI,按(可能多次)该Esc键即可进入 GRUB 菜单。有时,制造商的启动屏幕是 Windows 引导加载程序的一部分,因此当您启动计算机时,它会直接进入 GRUB 屏幕,然后Shift无需按。

    \n
  2. \n
  3. 从 GRUB 屏幕中选择Ubuntu 的高级选项,然后按Enter

    \n
  4. \n
\n

在此输入图像描述

\n
    \n
  1. 将出现一个新的紫色屏幕,显示内核列表。使用 \xe2\x86\x91 和 \xe2\x86\x93 键选择突出显示的条目。按 Enter 启动选定的内核,按 \'e\' 在启动前编辑命令,或按 \'c\' 启动命令行。按 Esc 键返回上一级菜单。
  2. \n
\n

在此输入图像描述

\n

防止 Ubuntu 卸载旧内核版本

\n

如果您确定可以使用较旧的内核版本成功启动 Ubuntu,那么接下来要做的就是按照此答案中的说明阻止 Ubuntu 自动卸载该内核版本。如果您希望 autoremove 不删除特定的内核版本包,您可以使用以下形式的命令将其标记为手动安装sudo apt-mark manual package-name。有关将哪些 Linux 内核软件包标记为手动安装的更多信息,请阅读链接的答案。

\n


use*_*687 5

通过https://help.ubuntu.com/community/Grub2

GRUB_HIDDEN_TIMEOUT=0

此设置确定没有 GRUB 2 菜单的屏幕将显示多长时间。在屏幕空白时,用户可以按任意键显示菜单。

如果只存在一个操作系统,则默认行为是隐藏菜单。如果只有 Ubuntu 的用户希望显示菜单,请在此行的开头放置 # 符号以禁用隐藏菜单功能。

降级内核:如何在 11.10 上降级内核

升级内核:如何将内核升级到 3.1?