Ubuntu 如何更换内核

Ubuntu 如何更换内核##

作者最近在装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

  • 18
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值