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

posted @ 2022-12-05 16:08  青山牧云人  阅读(2985)  评论(0编辑  收藏  举报