[Exchange and share] 新手向deepin V23b3编译内核deb包教程
Tofloor
poster avatar
昨夜的星辰
deepin
2024-04-06 22:26
Author

1、下载源码包

kernel.org清华源中科大源

以6.6.25内核为例,下载 linux-6.6.25.tar.xz ,下载linux-6.6.25.tar.gz也行,不过deepin可以直接解压xz,省点下载时间

除非是要用最最新的内核包,否则建议清华源和中科大源,第一个源通常太慢

2、解压(用图形界面工具就行)
在进入LINUX内核版本号最后一层文件夹,比如:/home/user/Downloads/linux-6.6.25,右键在终端打开
sudo apt install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison liblz4-tool debhelper #安装编译环境
sudo su
cp /boot/config-6.6.6-panpanpdj-desktop .config #善用Tab键补全,/boot里的config文件后面会不一样
exit

3、加载配置文件

make menuconfig
加载配置文件:load–>OK–>SAVE–>exit
4、编译内核并打包

make bindeb-pkg -j12 #处理器多少线程就写多少,如果有缺哪个包的,缺哪个装个,源里都有

5、安装内核

#在内核版本号上一层文件夹内会生成4个deb包,一般只需要装linux-image和linux-headers这两个开头的包就可以了

cd .. #返回上一层文件夹,cd后面是两个英文点

sudo apt install ./linux-image-6.6.25-amd64-panpanpdj_6.6.25-2_amd64.deb ./linux-headers-6.6.25-amd64-panpanpdj_6.6.25-2_amd64.deb

#以编译的6.6.25内核为例,输入命令的时候按按键盘Tab键,会自动补全

=====================================================================

以前想打包编译一直不行,今天又试了一下,发现是缺少一个包,从源里安装之后竟然顺利编译成功了

打包的好处是如果后面内核更新,卸载啥的比较方便,图形界面下可以装一个星火应用管理器,在里面卸载,当然,最好先装个星火应用商店

注意,星火应用管理器和星火应用商店是两个软件

话说,授人以鱼不如授人以渔,同时也方便自己以后忘了可以看看

Reply Favorite View the author
All Replies
阿尼樱奈奈
Moderator
2024-04-06 23:17
#1

like

Reply View the author
昨夜的星辰
deepin
2024-04-07 10:57
#2

本子是Remibook Pro 15 2022锐龙版,处理器是6600H

对于这个硬件来说,目前最稳定的内核是前面编译的6.6.6内核,盖盖子待机然后再唤醒一点没问题

前些天编译了6.8.2,不知道什么原因待机后容易出现唤醒不了的情况,所以后面又删掉了

6.6系列毕竟是LTS内核,昨天又编译了6.6.25,正在使用,看后面的使用效果

所以,内核不用一味追新,自己用着稳定才是最重要的,当然,有新功能可以尝试,保留旧内核,不行切换回来就好了

Reply View the author
186******75
deepin
2024-04-10 20:07
#3

用了这个sudo su
cp /boot/config-6.6.6-panpanpdj-desktop .config

,就是复制了自己电脑里驱动,打的包很少的,也不适合分发。怎么能打成普通通用的内核包了?就向自带的内核能适配大多部分电脑,请不吝指教。

Reply View the author
昨夜的星辰
deepin
2024-04-10 21:51
#4
186******75

用了这个sudo su
cp /boot/config-6.6.6-panpanpdj-desktop .config

,就是复制了自己电脑里驱动,打的包很少的,也不适合分发。怎么能打成普通通用的内核包了?就向自带的内核能适配大多部分电脑,请不吝指教。

举例的这个内核配置文件其实也是复制的官方配置文件

比如你装一个内测源里的6.6.25内核,安装完成/boot目录下就有一个相应的配置文件,官方的配置文件一般驱动是包括的比较全的

基本上只要不是特别特别新的硬件都是可以驱动的

Reply View the author
186******75
deepin
2024-04-10 22:20
#5
昨夜的星辰

举例的这个内核配置文件其实也是复制的官方配置文件

比如你装一个内测源里的6.6.25内核,安装完成/boot目录下就有一个相应的配置文件,官方的配置文件一般驱动是包括的比较全的

基本上只要不是特别特别新的硬件都是可以驱动的

但是自己按官方的config打的包只有13M,而官方的内核包一般都在100多M,为什么会差别那么多大了?

Reply View the author
昨夜的星辰
deepin
2024-04-10 22:26
#6
186******75

但是自己按官方的config打的包只有13M,而官方的内核包一般都在100多M,为什么会差别那么多大了?

你没有按照教程走吧,加载deepin官方的配置文件打包出来光内核deb包就有70+M

你说的官方配置文件不是kernel.org的吧

我感觉是中间你哪步搞错了,不然不可能就十几M的,内核源码包里默认的那个配置文件好像是这么大

Reply View the author
昨夜的星辰
deepin
2024-04-10 22:30
#7

这个好验证,你把内核源码解压出来后,显示隐藏文件看看有没有.config文件,有的话改个名字

然后cp系统已有config文件过来,在文件夹里确认配置文件是真复制过来了,然后再往下走

Reply View the author
昨夜的星辰
deepin
2024-04-11 16:58
#8
186******75

但是自己按官方的config打的包只有13M,而官方的内核包一般都在100多M,为什么会差别那么多大了?

我自己试了一下,发现跟你用的命令是有不同的,你可能是按本机的硬件配置进行编译的,这样的话编译出来的内核比较小,缺点就是换别的机器上大概率就用不了了

我刚试过用本机配置编译的内核deb确实挺小,只有十几M。。。

现在用的就是这版,编译速度贼快。。。

Reply View the author
186******75
deepin
2024-04-11 18:09
#9
昨夜的星辰

我自己试了一下,发现跟你用的命令是有不同的,你可能是按本机的硬件配置进行编译的,这样的话编译出来的内核比较小,缺点就是换别的机器上大概率就用不了了

我刚试过用本机配置编译的内核deb确实挺小,只有十几M。。。

现在用的就是这版,编译速度贼快。。。

就是的,我6.8.0的config编译6.8.5下来也只有20多M,所以我就问你怎么编译出普通包的内核。高版本的内核的编译(在官网下载源码)出的内核对wine打包的程序支持不是很友好,会出现问题,今天我就遇到了。但换回用deepin以前的低版本内核就能正常使用。

Reply View the author
昨夜的星辰
deepin
2024-04-12 11:13
#10
186******75

就是的,我6.8.0的config编译6.8.5下来也只有20多M,所以我就问你怎么编译出普通包的内核。高版本的内核的编译(在官网下载源码)出的内核对wine打包的程序支持不是很友好,会出现问题,今天我就遇到了。但换回用deepin以前的低版本内核就能正常使用。

可能的原因有两个,一个是配置文件用错了,一个是命令执行错了

第一个原因是你导入的配置文件本身就没有开那么多的编译项,最好用官方配置文件去搞,编译出来不会这么点

第二个原因是你用的命令不对,看了你的帖子,帖子里那个 make local.....的命令应该是根据本机配置生成配置文件的,按这个教程来就是正常的大内核包

Reply View the author
186******75
deepin
2024-04-12 12:22
#11
昨夜的星辰

可能的原因有两个,一个是配置文件用错了,一个是命令执行错了

第一个原因是你导入的配置文件本身就没有开那么多的编译项,最好用官方配置文件去搞,编译出来不会这么点

第二个原因是你用的命令不对,看了你的帖子,帖子里那个 make local.....的命令应该是根据本机配置生成配置文件的,按这个教程来就是正常的大内核包

方法1

sudo make mrproper
sudo cp /boot/config-uname -r ./.config
sudo make localmodconfig #中间过程会让你做选择题,我们全部直接敲“回车”键就行了#
sudo make bindeb-pkg -j12
exit

方法2

make mrproper
sudo cp -v /boot/config-$(uname -r) .config ;
sudo make defconfig
sudo make menuconfig
#加载配置文件:load–>OK–>SAVE–>exit #
make bindeb-pkg -j12 ;
exit

.
截图_选择区域_20240412121516.png

我看你也是用的本机的.config吗,都是从boot里复制过来的呀。昨天我特意下了6.8.5内核解压后也没有发现有其他.config,如果编译过程不复制自己的.config也能编译,但最后自己加载新内核时,没有声音及wifi的。

那在编译过程要怎么用,用那个.config

最后问一下能不能给一个打包通用内核包的方法及完整的命令过程,先谢谢了!

Reply View the author
昨夜的星辰
deepin
2024-04-12 14:25
#12
186******75

方法1

sudo make mrproper
sudo cp /boot/config-uname -r ./.config
sudo make localmodconfig #中间过程会让你做选择题,我们全部直接敲“回车”键就行了#
sudo make bindeb-pkg -j12
exit

方法2

make mrproper
sudo cp -v /boot/config-$(uname -r) .config ;
sudo make defconfig
sudo make menuconfig
#加载配置文件:load–>OK–>SAVE–>exit #
make bindeb-pkg -j12 ;
exit

.
截图_选择区域_20240412121516.png

我看你也是用的本机的.config吗,都是从boot里复制过来的呀。昨天我特意下了6.8.5内核解压后也没有发现有其他.config,如果编译过程不复制自己的.config也能编译,但最后自己加载新内核时,没有声音及wifi的。

那在编译过程要怎么用,用那个.config

最后问一下能不能给一个打包通用内核包的方法及完整的命令过程,先谢谢了!

你下载的6.8.5内核里面的.config是不行的,那是kernel.org的默认配置文件,这种估计只能是启动,会少很多特性,甚至有可能启动不了都

你需要用的是deepin源里安装的内核的配置文件,源里的内核安装后会在/boot文件夹下有相应的配置文件,这种配置文件是通用型的

这个教程里我是复制的6.6.6配置文件,但这个6.6.6是从以前的deepin源里的6.4.7用过来的,是通用型配置

注意,我现在的内核是根据本地硬件配置的那种小内核6.6.25,如果现在我用这个版本的配置文件导入去编译6.9,那么这个6.9也是个小内核,这下总该明白了吧,否则的话我劝你还是放弃吧。。。

Reply View the author
昨夜的星辰
deepin
2024-04-12 14:30
#13
186******75

方法1

sudo make mrproper
sudo cp /boot/config-uname -r ./.config
sudo make localmodconfig #中间过程会让你做选择题,我们全部直接敲“回车”键就行了#
sudo make bindeb-pkg -j12
exit

方法2

make mrproper
sudo cp -v /boot/config-$(uname -r) .config ;
sudo make defconfig
sudo make menuconfig
#加载配置文件:load–>OK–>SAVE–>exit #
make bindeb-pkg -j12 ;
exit

.
截图_选择区域_20240412121516.png

我看你也是用的本机的.config吗,都是从boot里复制过来的呀。昨天我特意下了6.8.5内核解压后也没有发现有其他.config,如果编译过程不复制自己的.config也能编译,但最后自己加载新内核时,没有声音及wifi的。

那在编译过程要怎么用,用那个.config

最后问一下能不能给一个打包通用内核包的方法及完整的命令过程,先谢谢了!

先在deepin源里装一个6.6.21,这样你会在/boot下找到相应的配置文件,这个配置文件就是通用型的

cp这个配置文件,用这个帖子的教程做就可以编译出来,不要再搞你那些命令了,我没试过,不确定能不能编译成功,但是这个帖子的教程是我亲自试验过的,照着做就可以搞定

Reply View the author