[Share Experiences] 编译deepin主线内核
Tofloor
poster avatar
fslong
deepin beta test group
2023-09-20 03:03
Author

今天给大家带来deepin主线内核编译的教程。

〇、写在前面

1、为什么要自己编译内核

官方内核是一个比较通用的版本,自己在编译内核的时候内核的脚本会根据自己电脑做一些配置,理论上跟自己的电脑更加匹配

我对比过官方的 .config文件,在执行 make menuconfig之后即使你啥都不改,某些配置项都跟官方的不太一样。

应该是有脚本控制了这块,导致一些区别。

deepin的主线内核会一直跟随linux最新版本迭代的,比源里的新,尤其是使用新硬件的朋友,非常需要这个。

2、为什么使用deepin主线内核

相比于linux官方内核,deepin内核会多一些 配置驱动这样跟我们的系统就更加匹配了。

我们自己用linux官方内核编译的内核,本质上跟搬运其他系统内核区别不算太大。

3、免责声明

本教程需要一定的动手能力,要求会以下技能:

  1. 懂得合理使用搜索引擎解决编译过程中遇到的各种幺蛾子
  2. 会解决依赖缺失
  3. 掌握基本的git用法
  4. 会手动安装、卸载内核

本教程只是我个人研究分享,老司机能承受风险的可以试试,出了啥意外,比如损毁硬件(理论上内核有问题,也可能导致的),我概不负责。

本教程只是我个人研究分享,老司机能承受风险的可以试试,出了啥意外,比如损毁硬件(理论上内核有问题,也可能导致的),我概不负责。

本教程只是我个人研究分享,老司机能承受风险的可以试试,出了啥意外,比如损毁硬件(理论上内核有问题,也可能导致的),我概不负责。

一、获取主线内核

deepin 主线内核的地址在:https://github.com/deepin-community/kernel

找一个剩余空间大于12g的地方,然后使用git拉下来主线内核

git clone git@github.com:deepin-community/kernel.git --depth=1 --branch=kernel-mainline

这里面加了 --depth=1是只拉去最新版本,后面 branch=kernel-mainline 这个 main-line就是主线内核的意思,当然这里还有uos的分支,我们今天不需要。

如果要编译6.4版本的内核,大家可以拉取另一个分支:

git clone git@github.com:deepin-community/kernel.git --depth=1 --branch=linux-6.4.y

运气好的时候速度还是不错的,一会就拉取完了。

拉取完之后会多这么一个文件夹:

image.png

二、配置文件

1、cd到刚才那个kernel文件夹中

image.png

2、拷贝现有系统的 .config文件

要获取 .config需要在root下。

sudo su

然后使用cp命令,复制想用的内核配置文件到当前文件夹,比如我就用的:

cp /boot/config-6.4.12-dppve-fslong+ .config

可以先输入 cp /boot/config,然后按 tab键代码补全,选中你想要的内核配置文件,后面第二个参数 .config是粘贴的名字。

然后使用 exit命令退出 root即可。

3、配置内核配置文件

使用 make menuconfig可以打开图形化配置文件程序,这个命令会自动加载我们刚才拷贝过来的 .config文件。

就这一步会对 .config进行针对性优化,生成的会是比较匹配自己电脑的配置。

个人建议新手就别改东西了,直接保存即可。

个人建议新手就别改东西了,直接保存即可。

个人建议新手就别改东西了,直接保存即可。

image.png

image.png

image.png

不出意外的话会是下面这个界面了:

image.png

三、编译内核

到这我们就可以编译内核了,我推荐编译成deb包的方式,虽然打包会消耗一些时间,但方便后续的安装、删除、分享

可能很多朋友怕编译内核的时候电脑发烫,这里有个小技巧,我们可以临时关闭cpu睿频功能。

关闭睿频之后,cpu就不那么烫了,也比较稳定,甚至没你打游戏时候占用高。

当然编译时间也会稍微久一点,如果是intel的cpu,可以使用下面命令关闭睿频:

sudo chmod 777 /sys/devices/system/cpu/intel_pstate/no_turbo
sudo echo '1' >> /sys/devices/system/cpu/intel_pstate/no_turbo

大家也不用担心时间会特别久,我测试过不关闭睿频我电脑35分钟编译完,关闭睿频大概45分钟编译完。

个人猜测不关闭睿频电脑发烫碰到温度墙之后也会降频

到了真正的编译阶段,反而就只有一行命令,这一行命令会生成四个deb包:

make bindeb-pkg -j8

上面的数字8代表8个进程编译,虽然我电脑只有6个核心,但我就喜欢j8编译,如果你核心更多的话数字可以改大点,更快一些。

这一步肯定会各种报错和幺蛾子,就需要大家根据报错情况看缺啥安装啥

这一步肯定会各种报错和幺蛾子,就需要大家根据报错情况看缺啥安装啥

这一步肯定会各种报错和幺蛾子,就需要大家根据报错情况看缺啥安装啥

直到不报错了,那么我们就静等编译完成即可。

四、安装内核

在漫长的等待之后,会在和kernel文件夹所在目录下生成四个deb包,一般情况下我们安装下面两个就可以了:

image.png

推荐使用apt命令安装,比如我这个就可以用下面命令安装:

sudo apt install ./linux-headers-6.5.3-dppve-fslong_6.5.3-gc669c1fa83b2-1_amd64.deb ./linux-image-6.5.3-dppve-fslong_6.5.3-gc669c1fa83b2-1_amd64.deb

你们就需要看自己打包成的是啥样的,然后自己安装。

安装完,重启选择新内核进入即可。

五、编译清理

还是cd到kernel文件夹内:

image.png

然后执行清理命令:

make clean

就能够释放我们刚才编译内核时候生成占用的空间。

六、内核更新

后面如果deepin主线内核更新了,为了干净还是重新挂机拉取吧,重新执行上面的**一、**二、三、四步。

七、写在最后

今天就分享到这,这些操作还是有一定风险性的,大家在操作时候一定要心细,不要犯错了。

Reply Favorite View the author
All Replies
1 / 2
To page
阿尼樱奈奈
Moderator
2023-09-20 03:06
#1

like

Reply View the author
WangZhongyun
deepin
2023-09-20 03:17
#2

这是好文。老司机们承受风险一般是可以的,但网上下载资源速度慢就难等了。能否把资源放到国内服务器上,并且做一个好用的脚本来自动编译?

Reply View the author
fslong
deepin beta test group
2023-09-20 03:19
#3
WangZhongyun

这是好文。老司机们承受风险一般是可以的,但网上下载资源速度慢就难等了。能否把资源放到国内服务器上,并且做一个好用的脚本来自动编译?

现在github还行,运气好有大几百kb/s,运气不好的话就慢一点了,也得有几十kb/s。

我的拉取脚本限定了拉取最新的一个版本和只拉取主线分支,速度还是可以接受的。

差不多抽根烟的功夫就能下来。

后续更新也只需要 git pull,只拉取更新了的,不用全都拉取,应该不会太慢。

Reply View the author
WangZhongyun
deepin
2023-09-20 03:26
#4

连接这主线地址两分钟不行
截图_20230919192510.png

Reply View the author
相对湿度
deepin
2023-09-20 03:30
#5

没有PC的都玩不起这个,耗时间也算了,主要是太烫人了,害怕笔电自燃。

Reply View the author
fslong
deepin beta test group
2023-09-20 03:30
#6
WangZhongyun

连接这主线地址两分钟不行
截图_20230919192510.png

那你换下dns吧,然后不用访问这个网址,直接用git拉取就行。

Reply View the author
fslong
deepin beta test group
2023-09-20 03:31
#7
相对湿度

没有PC的都玩不起这个,耗时间也算了,主要是太烫人了,害怕笔电自燃。

可以笔记本关闭睿频跑,稳得很。

Reply View the author
相对湿度
deepin
2023-09-20 03:34
#8
fslong

可以笔记本关闭睿频跑,稳得很。

关闭睿频,跑编译。。。出去吃个饭顺便洗个澡再回来,结束了没有?

Reply View the author
TSAC
deepin
2023-09-20 03:38
#9

楼主这是倾囊相授啊

Reply View the author
qq4945286
deepin
2023-09-20 03:41
#10

正克隆到 'kernel'...
ssh: connect to host github.com port 22: Connection timed out
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。

Reply View the author
fslong
deepin beta test group
2023-09-20 03:44
#11
qq4945286

正克隆到 'kernel'...
ssh: connect to host github.com port 22: Connection timed out
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。

那这可能就是网络问题了,改下dns试试。

我这没使用任何魔法,一切正常。

Reply View the author
fslong
deepin beta test group
2023-09-20 03:45
#12
相对湿度

关闭睿频,跑编译。。。出去吃个饭顺便洗个澡再回来,结束了没有?

不会的,不关闭睿频,温度高了也会降频。

实测时间差别不会太大,我不关睿频35分钟,关了睿频45分钟。

Reply View the author
wcs4221
deepin beta test group
2023-09-20 15:13
#13

好学的人总是信心有倍smirk

Reply View the author
aurora
deepin
2023-09-20 19:02
#14

like

Reply View the author
咿呀咿
deepin
2023-09-22 20:50
#15
qq4945286

正克隆到 'kernel'...
ssh: connect to host github.com port 22: Connection timed out
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。

添加SSH KEY应该就可以了,我是这么搞定的。

Reply View the author
deepin
2023-10-05 16:05
#16

image.png

编译出现这个错误,该怎么破?

Reply View the author
shalling
Deepin Wiki Editor
2023-10-05 23:53
#17

有点难度,值得收藏。

Reply View the author
fslong
deepin beta test group
2023-10-06 03:07
#18

image.png

编译出现这个错误,该怎么破?

缺依赖,搜一下那个东西,看咋安装。

Reply View the author
deepin
2023-10-06 21:35
#19
It has been deleted!
deepin
2023-10-06 21:45
#20
fslong

缺依赖,搜一下那个东西,看咋安装。

这个依赖安装之后再进行编译一样报同样的错误,怎么解决呢
image.png

Reply View the author
1 / 2
To page