Ubuntu安装、卸载和更换默认kernel
安装Kernel
安装内核很简单,有了内核deb包之后,直接用以下命令:
$ sudo dpkg -i *.deb
查看当前kernel
$ uname -a
卸载Kernel
查看当前所有kernel:
$ dpkg --get-selections |grep linux-image
移除想要删除的kernel:
$ sudo apt-get remove \ <kernel_list_by_above_command>
eg:
$ dpkg --get-selections |grep linux-image linux-image-5.10.100-sriov-fix install linux-image-5.10.82-cvhb install linux-image-5.15.74-cvhb install linux-image-5.4.130-cvhb install linux-image-unsigned-5.10.9-051009-generic install $ sudo apt-get remove \ linux-image-5.10.100-sriov-fix
状态为 deinstall 即已经卸载,如果觉得看着不舒服的话可以使用 purge 连配置文件里一起彻底删除,清理内核列表
$ sudo apt-get purge \ linux-image-5.10.100-sriov-fix
然后更新grub
sudo update-grub
更换默认Kernel
Case1:
- 如果你的启动项在开机界面第一页(就是第一个菜单界面),那么就很简单了,如果是第一项,那么GRUB_DEFAULT=0(选项默认从0开始计数)
- 如果是第二项,那么GRUB_DEFAULT=1,以此类推。
Case2:
- 多内核,内核选择界面在第二页(就是第二个菜单界面),比如要启动5.4.0的内核(在第二个菜单界面的第一项),那么
GRUB_DEFAULT="1> 0"
1表示第一个菜单界面开机时选择第二项,0表示第二个菜单界面开机时选择第一项,
细节: 切记大于符号后面有个空格
- 在系统中查找自己想切换的默认kernel在内核选择的第二个页面的第几项:
查看有哪些内核可切换:
cat /boot/grub/grub.cfg | grep menuentry
想要查看更具体,可以查询 /boot/grub/grub.cfg 中的内容
我们想以submenu中 哪个kernel作为默认启动,只需要数这个kernel排在"Advanced options for ubuntu"后面的第几个(从0开始数),然后把 /etc/default/grub 中 GRUB_DEFAULT="1> 对应kernel的排序号",注意>后有1个空格。
eg:
$ cat /boot/grub/grub.cfg | grep menuentry 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-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' { submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' { menuentry 'Ubuntu, with Linux 5.15.74-cvhb' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.74-cvhb-advanced-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' { menuentry 'Ubuntu, with Linux 5.15.74-cvhb (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.74-cvhb-recovery-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' { menuentry 'Ubuntu, with Linux 5.10.100-sriov-fix' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.100-sriov-fix-advanced-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' { menuentry 'Ubuntu, with Linux 5.10.100-sriov-fix (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.100-sriov-fix-recovery-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' { menuentry 'Ubuntu, with Linux 5.10.82-cvhb' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.82-cvhb-advanced-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' { menuentry 'Ubuntu, with Linux 5.10.82-cvhb (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.82-cvhb-recovery-08ddceba-fadf-4544-8e1c-0bbbd48bb7f1' {
假如我们想把 Linux 5.10.100-sriov-fix作为默认kernel,那么他排在Advanced options for Ubuntu的第2个(从0开始数),只需要如下编辑/etc/default/grub然后update-grub即可:
$sudo vim /etc/default/grub ... GRUB_DEFAULT="1> 0" ... $ sudo update-grub $ sudo reboot $ cat /proc/cmdline #查看启动项是否正确
参考链接:
https://www.cnblogs.com/zhuangshenhao/articles/15632391.html
https://blog.csdn.net/qq_43737816/article/details/125492692
https://www.cnblogs.com/gongshunfeng91/p/15774196.html