0%

Ubuntu 设置默认启动内核版本

b.s. 今天武汉下雪了。

由于实验室服务器上不是一个人在用,所以一个节点会编译了多种版本的内核,默认启动好像是自带的版本,然后今天就遇到这个问题。

我需要的是 4.10.2 自己编译的版本,但是同学重启之后就变成默认的 5.0.37 了,所以就搜了一下,怎么让默认启动就是 4.10.2。

其实方法也挺简单的:

  1. 查看内核的顺序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>> grep 'menuentry' /boot/grub/grub.cfg

if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' 'gnulinux-simple-xxxx' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advancedxxx' {
0 menuentry 'Ubuntu, with Linux 5.0.0-37-generic' 'gnulinux-5.0.0-37-generic-advancedxxx' {
1 menuentry 'Ubuntu, with Linux 5.0.0-37-generic (recovery mode)' 'gnulinux-5.0.0-37-generic-recovery-xxx' {
2 menuentry 'Ubuntu, with Linux 5.0.0-36-generic' 'gnulinux-5.0.0-36-generic-advancedxxx' {
3 menuentry 'Ubuntu, with Linux 5.0.0-36-generic (recovery mode)' 'gnulinux-5.0.0-36-generic-recovery-xxx' {
4 menuentry 'Ubuntu, with Linux 4.18.20' 'gnulinux-4.18.20-advancedxxx' {
5 menuentry 'Ubuntu, with Linux 4.18.20 (recovery mode)' 'gnulinux-4.18.20-recovery-xxx' {
6 menuentry 'Ubuntu, with Linux 4.10.2' 'gnulinux-4.10.2-advancedxxx' {
7 menuentry 'Ubuntu, with Linux 4.10.2 (recovery mode)' 'gnulinux-4.10.2-recovery-xxx' {
8 menuentry 'Ubuntu, with Linux 3.12.13' 'gnulinux-3.12.13-advancedxxx' {
9 menuentry 'Ubuntu, with Linux 3.12.13 (recovery mode)' 'gnulinux-3.12.13-recovery-xxx' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {
menuentry 'Ubuntu 18.04.3 LTS (18.04) (on /dev/sdc1)' 'osprober-gnulinux-simple-xxxxx' {
submenu 'Advanced options for Ubuntu 18.04.3 LTS (18.04) (on /dev/sdc1)' $menuentry_id_option 'osprober-gnulinux-advanced-xxxxx' {
menuentry 'Ubuntu (on /dev/sdc1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz-4.15.0-55-generic--xxxxx' {
menuentry 'Ubuntu, with Linux 4.15.0-55-generic (on /dev/sdc1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz-4.15.0-55-generic--xxxxx' {
menuentry 'Ubuntu, with Linux 4.15.0-55-generic (recovery mode) (on /dev/sdc1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz-4.15.0-55-generic-root=UUID=xxx ro recovery nomodeset-xxx' {

显然要选自己编译的内核版本是要进高级选项的(Advanced options for Ubuntu),然后可以看到下面就有一堆版本,我所需要的 Linux 4.10.2(Ubuntu, with Linux 4.10.2)是第 7 个(看我在上面每个 menuentry 前标的序号),所以怎么改配置文件呢?

  1. 修改配置文件
1
2
3
sudo vim /etc/default/grub

GRUB_DEFAULT=0 => GRUB_DEFAULT="1>6"

这个修改也好懂,之前的 0 代表着在主菜单就直接选择第一项;而 1>6 则代表着先选择第二项(Advanced options for Ubuntu),然后选择第 7 个内核。

  1. 更新 grub
1
sudo update-grub

这一步很重要,我配置了好几次就是因为没有 update 所以重启一直都不对。。。

  1. 重启

参考

Welcome to my other publishing channels