博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu 如何更换内核
阅读量:4284 次
发布时间:2019-05-27

本文共 3592 字,大约阅读时间需要 11 分钟。

作者最近在装OAI,需要频繁更换内核。网上更换内核的方法参差不齐,在经历了各种失败和尝试后,分享以下两种方式。第一种synaptic属于图形化一键更换,第二种改grub属于绝对可行方法。建议初次尝试顺序是 1 -> 2。因为1不会出任何问题,2虽然保证能完成任务,但是一定要细心才行。不过我现在更换内核都是直接用2,比较直接有效和方便。注:我不是IT专业的,所以不会手动编译内核,有需求可以参考其他文章。

警告:内核一般是涉及进程调度、内存管理等等比较核心的东西,更换不合适的内核可能会导致无法上网(驱动不兼容的原因),甚至重启后无法识别鼠标与键盘导致系统直接崩溃,请做好心理准备,谨慎操作!

BTW,换内核之前,可以查询一下自己已经安装的所有内核,一般来说,如果没有自己后来装内核,这里查到的内核都是系统预装好的,可以直接切换,不会出任何问题:

sudo dpkg --get-selections |grep linux-image

在进入本文前,先试试可否用 apt-get 一键更换:

apt install linux-image-*****

例子:

sudo apt-get install linux-image-3.19.0-61-lowlatency linux-headers-3.19.0-61-lowlatency

如果成功可忽略本文下面内容。

1、使用synaptic 一键更换内核

使用条件:需要更换的内核比default的内核版本更高。

举个例子,当前的内核是4.7-generic,需要更换为4.15-generic,完全没问题。而如果当前是4.15,需要更换成4.7,就不适用了,因为启动的时候自动选择更新的版本。这种情况就需要直接用第二种方法改grub了。

synaptic完全是个图形化界面,大部分是傻瓜操作。接下来进入教程,以需要更换4.15.0-13-generic内核为例:

(1)安装synaptic

sudo apt-get install synaptic

(2)安装好之后,打开界面

sudo synaptic

(3)搜索需要更换的内核名

点击search,搜索需要更换的版本号,如图所示:

值得一提的是,这里只能搜出来该系统可(一键使用synaptic)更换的内核版本号。

(4)选择内核

一般来说普通电脑需要更换的为headers和image,不要选错了。请直接找到需要更换的headers,如:需要更换 linux-headers-4.15.0-13-generic,右击选择“Mark for Installation”。可以看到 linux-headers-4.15.0-13也被顺便勾起来了,这个也是必要的,请不要取消。往下找,找到linux-image-4.15.0-13-generic,右击同样“Mark for Installation”。请注意务必和前面的headers对应。现在我们有三个勾选选项了。注:建议连带linux-image-extra-4.15.0-13-generic一起安装,虽然不一定用得上,还会让你的kernel列表更臃肿,但是这可以修复潜在的驱动不兼容问题 。

(5)下载内核

点击上方的Apply,展开 To be installed,可以看到选择到的三个选项(带extra就是四个),再次确认image和前面的headers是对应的。

确认后Apply,进入下载,安装,重启的傻瓜操作,重启以后输入uname -a查询内核就可以发现内核已经更换了。

2、通过更改grub更换内核

最靠谱的方法,肯定能换掉内核。操作过程:

(1)安装内核

在www.bing.com里面直接搜索内核名字,如:linux-image-4.15.0-13-generic,第一个就是了。

在download里头可以下载到deb。双击就可以用软件中心安装了(当然用dkpg -i 安装也是非常优秀的),如下:

sudo dpkg -i ***.deb

***换成实际下载的deb的名字。依次安装内核的image和headers。

此外,推荐使用方法一中的synaptic也可以下载内核包,同样安全可靠。

(2)查询可更换内核的序号

gedit /boot/grub/grub.cfg

查询已安装的内核和内核的序号。找到文件中的menuentry (图中在一大堆fi-else底下)

仔细观察图中,menuentry底下还有submenu,submenu底下就包含了 带有缩进的 menuentry。以下是计数规则:

第一个menuentry 的序号是0,第二个submenu的序号是1,以此类推

在submenu中,第一个menuentry的序号是0,第二个是1,以此类推
我摘录图中submenu中的第一个menuentry如下:

menuentry 'Ubuntu,Linux 4.15.0-34-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-34-generic-advanced-261d46dc-b223-49ee-a561-439009b15519' {

        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  261d46dc-b223-49ee-a561-439009b15519
        else
          search --no-floppy --fs-uuid --set=root 261d46dc-b223-49ee-a561-439009b15519
        fi
        echo    '载入 Linux 4.15.0-34-generic ...'
            linux    /boot/vmlinuz-4.15.0-34-generic root=UUID=261d46dc-b223-49ee-a561-439009b15519 ro  quiet splash $vt_handoff
        echo    '载入初始化内存盘...'
        initrd    /boot/initrd.img-4.15.0-34-generic
意思是,这个menuentry就是内核 Linux 4.15.0-34-generic 的序号菜单了。这里就假设我需要把内核更换为它。它在submenu 的第一个menuentry。记住它,下一步要用。

(3)修改grub更换内核

sudo gedit /etc/default/grub

打开grub的编辑窗,如图所示:

如果没有使用grub修改过内核,除注释第一行应该显示的是

GRUB_DEFAULT=0

0就是默认的kernel了。我们要做的就是把GRUB_DEFAULT=0 改成

GRUB_DEFAULT=“1 >0”

即可。请注意在(2)中提到的需要更换的内核Linux 4.15.0-34-generic在 submenu 的第一个menuentry,因此是“1 >0“。如果它在submenu的第5个,那么就是 ”1 >4“,唯一需要的就是数好这个!

同时,请注意一对英文分号""和1后面的空格也是必须的,万万不可少,也不可多!

(4)更新内核和重启

sudo update-grub

sudo reboot
重启完可以用uname -a查询内核已更换。

3、预防万一

我没有尝试过,大家自己判别。如果驱动不兼容怎么办:

https://blog.csdn.net/chaihuimin/article/details/71083397

————————————————
版权声明:本文为CSDN博主「三月柳絮不飞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42030961/article/details/82740315

你可能感兴趣的文章
数据挖掘开源软件:WEKA基础操作
查看>>
Python一些容易忽略的知识
查看>>
Ubuntu(-13.10)中安装JDK图文详解教程
查看>>
Hadoop2.2.0单节点安装和配置环境图文详解
查看>>
数据挖掘学习笔记--决策树C4.5
查看>>
数据挖掘学习笔记之人工神经网络(一)
查看>>
数据挖掘学习笔记之人工神经网络(二)
查看>>
人工神经网络关键核心知识点
查看>>
贝叶斯学习--极大后验概率假设和极大似然假设
查看>>
贝叶斯学习--极大后验假设学习
查看>>
朴素贝叶斯分类器
查看>>
贝叶斯学习举例--学习分类文本
查看>>
hadoop HDFS原理基础知识
查看>>
数据挖掘十大算法----EM算法(最大期望算法)
查看>>
android StrictMode应用
查看>>
TabHost的两种使用方法
查看>>
Android---TextView属性详解
查看>>
K近邻算法基础:KD树的操作
查看>>
数据挖掘十大算法--K近邻算法
查看>>
android对话框(Dialog)的用法
查看>>