【优麒麟】linux内核编译与安装(详细)

本文将介绍如何在优麒麟(UbuntuKylin)系统中编译与安装新内核,由于UBuntuKylin与Ubuntu系统类似,因此在Ubuntu系统上也可以完成。

知乎与CSDN上已经有一些此方面的教程:给Linux系统更换内核(基于优麒麟Linux) - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/254766393优麒麟 20.04 pro更换内核_kylin更换内核-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_51760563/article/details/119408113

【优麒麟】编译linux kernel + 增加系统调用 + 编写批处理脚本_在优麒麟中编译新内核-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_54129327/article/details/128092802但是我在实践过程中总是会出现各种问题,于是去bing上用英文搜索,在How to Compile and Install the Linux Kernel on Ubuntu - David AugustatI show step by step how to compile the Linux kernel from source. I also explain how to installed the compiled kernel and how to make modifications to it.icon-default.png?t=N7T8https://davidaugustat.com/linux/how-to-compile-linux-kernel-on-ubuntu#:~:text=How%20to%20Compile%20and%20Install%20the%20Linux%20Kernel,kernel%20source%20...%208%20And%20that%E2%80%99s%20it%20

这篇文章的帮助下成功更换了优麒麟的内核,鉴于原文章作者在Ubuntu上的成功经历 ,因此该过程应该适用于Ubuntu以及优麒麟。

准备工作

本文章实现的基础是VMware 上的优麒麟22.04 LTS 操作系统,虚拟机设置CPU2*4,内存4GB,磁盘50GB,没有事先安装任何工具和依赖。唯一一点需要注意的是文件系统的硬盘大小,实测需要20GB左右的大小,但是在VMware分配50GB硬盘空间的条件下,优麒麟(全盘安装)文件系统只会被分配16GB左右大小,因此有两种解决办法:

1.VMware给虚拟机分配更多的硬盘空间(例如100GB)

简单粗暴,没什么好说的。(作者空间不足只能含泪方法二)

2.优麒麟里修改磁盘空间

进入优麒麟系统后点击左下角,在里面找到磁盘选择50+GB那个硬盘,

 可以看到分区6有17GB的空间但是未挂载(未使用),我们选中后点击灰色区域最右端的“-”号删除这个分区,其中出现的提示不用管。

之后点击分区5也就是挂载文件系统的分区,点击灰色区域的齿轮选择调整大小,拉到最大即可,确认后会提示一次,此处不知道什么原因盘的大小不会改变,怎么办呢?再次调整一遍分区5的大小即可。(手动狗头,不知道为什么第二次就好了)

调整后如图所示,文件系统空间扩大了一倍:

安装依赖,下载linux内核

安装依赖之前更新一下工具:

sudo apt update

安装下列包:

sudo apt install flex bison build-essential libncurses-dev libssl-dev libelf-dev

额外安装以下包:

sudo apt install fakeroot dwarves

fakeroot包可以构建一个虚拟(fake)的管理员环境,避免在编译过程中的管理员权限需求,后续测试时发现编译时去除此命令仍然可行,所以可以不安装。

dwarves包不清楚作用,原作者说没有就不能成功,大家有时间可以尝试不安装试一下会发生什么,Debian -- 在 bullseye 中的 dwarves 软件包详细信息,这里有相关的解释。

之后在官网(kernel.org)或者镜像网站上下载linux内核源码,作者下载的是最新的longterm版本(6.6.22),可以自行选择其他版本,这里有两种方式:

1.命令式

进入资源文件夹:

sudo cd /usr/src

找到下载网址(使用你想使用的版本下载链接)后使用wget下载:

sudo wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.22.tar.xz

2.浏览器下载

在优麒麟自带的火狐浏览器里下载,之后将压缩包移动到/usr/src文件夹里,这里可能没有权限,在下载文件夹里打开终端,使用mv命令移动即可:

sudo mv linux-6.6.22.tar.xz /usr/src

下载内核源码压缩包后,进入资源文件夹解压:

cd /usr/src
sudo tar -xf linux.6.6.22.tar.xz

解压后删除压缩包即可:

sudo rm -f linux.6.6.22.tar.xz

配置内核

进入源码文件夹:

cd /usr/src/linux-6.6.22

使用本地模式生成配置文件:

sudo make localmodconfig

这里有很多种方式生成配置文件,

1.make menuconfig

此界面里各种配置信息可以自行设置,但是作者觉得非专业人士了解起来比较困难。(单纯作者懒得去了解)

2.cp -v /boot/config-$(uname -r) .config

这样是复制当前系统的配置文件,但是会包含大量不必要的驱动和内核模块,大大增加编译时间。

localmodconfig命令会查看你的系统已经装载的内核模块并使配置文件仅包含这些,减少生成的工作量。

执行上述命令时会出现很多选项让你抉择,我们一路回车就好。(不用回答)

最后需要进入.config文件修改一些信息,可以直接打开.config修改,也可以使用以下命令懒人式修改:

sudo scripts/config --disable SYSTEM_TRUSTED_KEYS
sudo scripts/config --disable SYSTEM_REVOCATION_KEYS
sudo scripts/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""
sudo scripts/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS ""

 编译

sudo fakeroot make -j4

fakeroot可以构建一个虚拟(fake)的管理员环境,避免在编译过程中的管理员权限需求,后续测试时发现编译时去除此命令仍然可行,所以可以不加。

-j后面的数字是编译的CPU核心数量,数字越大速度越快,但是不要超过虚拟机分配的数量。

此步时间比较长,在12代i5CPU,参数-j4的情况下作者使用了35分钟。

编译完成后,你可以使用以下命令查看是否成功:

sudo echo $?

 输出0则编译成功,其他数字不成功。

安装

首先安装内核模块:

sudo make modules_install

接着安装内核:

sudo make install

安装完成后重启虚拟机即可。

检查

重启后打开终端,输入:

uname -rs

查看内核信息,如果显示版本与目标版本匹配,就大功告成了。

内核切换

安装新内核后,原来的内核仍然存在,可以在开机时长按shift,进入grub引导界面,选择高级,选择目标内核就可以了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值