gksudo gedit /etc/default/grub
将 GRUB_TIMEOUT
更改为 -1 并注释掉 GRUB_HIDDEN_TIMEOUT
最后运行完成。
sudo update-grub
sudo nano /etc/default/grub
4.2. 找到行 GRUB_DEFAULT=...(默认为 GRUB_DEFAULT=0),并在引号中设置具体内核的菜单路径(请记住步骤 2 和 3 中的菜单索引)。在我的系统中,第一个索引是 1,第二个索引是 2。我将其设置为 GRUB_DEFAULT
GRUB_DEFAULT="1>2"
sudo update-grub
GRUB_DEFAULT="Advanced options for Ubuntu > Ubuntu, with Linux x.x.x-xx-generic"
,但是没有起作用... 你提供的版本 GRUB_DEFAULT="1>2"
确实有效! :) - TheQuestionerubuntu:~$ 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)'
GRUB_DEFAULT=0
的值。5.4.0-80-generic
启动。ubuntu:~# uname -srn
Linux ubuntu 5.4.0-80-generic
所以我想使用4.15.0-45-generic
来启动我的系统,这是菜单项4
修改了/etc/default/grub
中的GRUB_DEFAULT="1>4"
值,并执行以下命令以重新生成带有修改后的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
GRUB-DEFAULT
的值,将/etc/default/grub
中的值从0
改为1>4
? - Amandasudo apt-get install linux-image-3.0.0-12-generic linux-headers-3.0.0-12-generic
在计算机启动时出现主板/计算机制造商的标志性画面,与BIOS,快速按住Shift键,这将带出GNU GRUB菜单。(如果您看到Ubuntu标志,则已错过了进入GRUB菜单的时机。)对于UEFI,请按下(可能要按几次)Esc键以进入GRUB菜单。有时制造商的标志画面是Windows引导加载程序的一部分,因此当您启动计算机时,它会直接进入GRUB画面,然后按Shift键是不必要的。
从GRUB屏幕中选择Ubuntu的高级选项并按Enter。
如果您已确定可以通过使用旧的内核版本成功启动Ubuntu,下一步是按照this answer中的说明,防止Ubuntu自动卸载该内核版本。如果您不希望autoremove删除特定的内核版本包,可以使用以下命令手动标记其为已安装:sudo apt-mark manual package-name
。有关要标记为手动安装的Linux内核包的更多信息,请阅读链接的答案。
GRUB_HIDDEN_TIMEOUT=0
此设置确定在没有GRUB 2菜单的屏幕上显示多长时间。当屏幕为空白时,用户可以按任意键显示菜单。
默认行为是如果只有一个操作系统存在,则隐藏菜单。如果只有Ubuntu用户希望显示菜单,请在此行的开头放置一个#符号以禁用隐藏菜单功能。
降级内核:如何在11.10上降级内核
升级内核:如何将内核升级到3.1?
Jackkobec的回答描述了一种查看grub.cfg
并滚动浏览源代码以找到菜单编号的方法。更简单的方法是使用这个脚本:
Grub Version: 2.02~beta2-36ubuntu3.22
┌───────────┤ Use arrow, page, home & end keys. Tab toggle option ├────────────┐
│ Menu No. ----------- Menu Name ----------- │
│ │
│ 1>3 Ubuntu, with Linux 4.15.0-55-generic ↑│
│ 1>6 Ubuntu, with Linux 4.15.0-54-generic ▒│
│ 1>9 Ubuntu, with Linux 4.14.134-0414134-generic ▒│
│ 1>12 Ubuntu, with Linux 4.14.120-0414120-generic ▮│
│ 1>15 Ubuntu, with Linux 4.14.114-0414114-generic ▒│
│ 1>18 Ubuntu, with Linux 4.14.110-0414110-generic ▒│
│ 1>21 Ubuntu, with Linux 4.14.98-041498-generic ▒│
│ 1>24 Ubuntu, with Linux 4.14.89-041489-generic ▒│
│ 1>27 Ubuntu, with Linux 4.14.78-041478-generic ▒│
│ 1>30 Ubuntu, with Linux 4.14.70-041470-generic ▒│
│ 1>33 Ubuntu, with Linux 4.4.0-157-generic ▒│
│ 1>36 Ubuntu, with Linux 3.16.60-031660-generic ▒│
│ 1>36 Ubuntu, with Linux 3.16.60-031660-generic ▒│
│ 2 Ubuntu 18.04.1 LTS (18.04) (on /dev/nvme0n1p10) ▒│
│ 3 Advanced options for Ubuntu 18.04.1 LTS (18.04) (on /dev/nvme0n1p10) ▒│
│ 3>0 Ubuntu (on /dev/nvme0n1p10) ↓│
│ │
│ │
│ [Display Grub Boot] Exit │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
grub-menu.sh short
来调用脚本。参数short
会抑制这些行的显示: │ 1>10 Ubuntu, with Linux 4.14.134-0414134-generic (upstart) ▒│
│ 1>11 Ubuntu, with Linux 4.14.134-0414134-generic (recovery mode) ▒│
在浏览条目后(您可以使用鼠标滚轮或箭头键),按下Escape返回到命令行。
如果按下Enter,将显示与该条目相关的grub命令:
menuentry 'Ubuntu, with Linux 4.14.134-0414134-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.134-0414134-generic-advanced-b40b3925-70ef-447f-923e-1b05467c00e7' {
recordfail
savedefault
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root b40b3925-70ef-447f-923e-1b05467c00e7
else
search --no-floppy --fs-uuid --set=root b40b3925-70ef-447f-923e-1b05467c00e7
fi
echo 'Loading Linux 4.14.134-0414134-generic ...'
linux /boot/vmlinuz-4.14.134-0414134-generic root=UUID=b40b3925-70ef-447f-923e-1b05467c00e7 ro noplymouth fastboot acpiphp.disable=1 pcie_aspm=force vt.handoff=7 i915.fastboot=1 nopti nospectre_v2 nospec mem_sleep_default=deep
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.14.134-0414134-generic
}
Press <Enter> to continue
每个菜单项都有一组grub命令。编译后的条目都存储在/boot/grub/grub.cfg
文件中。
在这个例子中,我们想要将菜单编号`1>9>设置为默认值,所以我们使用:
sudo -H gedit /etc/default/grub
然后找到这一行:
GRUB_DEFAULT=0
GRUB_DEFAULT="1>9"
sudo update-grub
ls /boot | grep vmlinuz
命令执行中获取。$ vim.tiny kernboot.sh
kernel="5.3.0-40-generic"
kernlist="$(grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g")"
printf "%s$kernlist\n" | logger
menuline="$(printf "%s$kernlist\n"|grep -ne $kernel | grep -v recovery | cut -f1 -d":")"
menunum="$(($menuline-2))"
grub-reboot "1>$menunum"
echo "The next grub's menu entry will be choosen after the reboot:\n 1>$menunum" | logger
reboot
$ chmod +x kernboot.sh
$ sudo ./kernboot.sh
sudo crontab -e
命令放置到cron中,并使用@reboot /path/to/script
命令执行。reboot
命令,也可以通过sudo crontab -e
将其放置到root的cron中:@reboot /pathto/kernboot.sh
,结果是,在下次启动时,操作系统将使用脚本中指定的内核启动。
GRUB_HIDDEN_TIMEOUT
时将GRUB_TIMEOUT
设置为非零值不再支持。我已经注释掉了GRUB_HIDDEN_TIMEOUT
并将GRUB_TIMEOUT
设置为0。 - acidghostGRUB_HIDDEN_TIMEOUT
在/etc/default/grub
中定义。 - wjandreaGRUB_HIDDEN_TIMEOUT
的值应该是多少呢? - alphabetasoupSHIFT
在UEFI中无效。请尝试使用ESC
键。 - fokiGRUB_HIDDEN_TIMEOUT
在2.04-1ubuntu47
上似乎不再存在。设置GRUB_TIMEOUT=-1
没问题。 - RoiGRUB_TIMEOUT_STYLE=hidden
。将其注释掉就足够了。 - Raoul Steffen