Ubuntu 内核管理
查看内核
# 查看内核列表
sudo dpkg --get-selections | grep linux-image
# Linux 已安装内核:
dpkg --get-selections | grep linux
# or
dpkg --list | grep linux
安装内核
# 显示所有可以获取的内核版本
apt-cache search linux
# 安装指定版本 <version> 内核
sudo apt-get install -y linux-headers-<version>-generic \
linux-image-<version>-generic \
linux-image-extra-<version>-generic
删除内核
```bash
# 删除多余内核
sudo apt-get purge linux-image-<版本号> 命令
```
切换内核
-
查找内核名称
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' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-078e99ce-eb46-4324-bd9b-6dc10573508b' { # submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-184-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-184-generic-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-184-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-184-generic-init-upstart-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-184-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-184-generic-recovery-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-179-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-179-generic-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-179-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-179-generic-init-upstart-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-179-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-179-generic-recovery-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-178-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-178-generic-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-178-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-178-generic-init-upstart-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-178-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-178-generic-recovery-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-21-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-21-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-init-upstart-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Ubuntu, with Linux 4.4.0-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-recovery-078e99ce-eb46-4324-bd9b-6dc10573508b' { # menuentry 'Memory test (memtest86+)' { # menuentry 'Memory test (memtest86+, serial console 115200)' {
比如我当前的内核是 Ubuntu,Linux 4.4.0-184-generic。我现在要切换为 Ubuntu,Linux 4.4.0-21-generic
-
修改配置文件
// /etc/default/grub GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX=""
GRUB_DEFAULT 配置说明
GRUB_DEFAULT 表示了开机的时候的默认选项(包括二级菜单选项)。
图1 一级菜单 (从 0 开始编号)
Ubuntu 对应 0 Advanced options for Ubuntu 对应 1 Memory test (memtest86+) 对应 2 ...
对于二级菜单也是一样的道理,每个菜单项下的子菜单都是从 0 开始编号。那么这里如果我要配置 Advanced options for Ubuntu 下的 Ubuntu,Linux 4.4.0-21-generic,我们的内核顺序就应该是 1>9,这里注意在填写 GRUB_DEFAULT 的时候一定要加上有引号,如:
GRUB_DEFAULT="Ubuntu,Linux 4.4.0-21-generic" # 默认一级菜单 # or GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu,Linux 4.4.0-21-generic" # or GRUB_DEFAULT="Advanced options for Ubuntu>9" # or GRUB_DEFAULT="1>Ubuntu,Linux 4.4.0-21-generic" # or GRUB_DEFAULT="1>9"
-
更新启动项
# 更新启动项 sudo update-grub
这时候会有 WARNING 提示修改 GRUB_DEFAULT 的名称
Warning: Please don't use old title `Ubuntu, with Linux 4.4.0-179-generic' for GRUB_DEFAULT, use `Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-179-generic' (for versions before 2.00) or `gnulinux-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b>gnulinux-4.4.0-179-generic-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b' (for 2.00 or later)
根据提示可以使用 “Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-179-generi” 或者 “gnulinux-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b>gnulinux-4.4.0-179-generic-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b” 将上面的代码放在 GRUB_DEFAULT=’’ 单引号里面
GRUB_DEFAULT='gnulinux-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b>gnulinux-4.4.0-179-generic-advanced-078e99ce-eb46-4324-bd9b-6dc10573508b'
-
验证
# 重启 sudo reboot # 验证 uname -a