给 ubuntu 22.04 编译换上最新的 6.2.0 内核(生成 deb 包)

编译打包和其他
回复
sxgpic
帖子: 89
注册时间: 2013-12-13 6:57

给 ubuntu 22.04 编译换上最新的 6.2.0 内核(生成 deb 包)

#1

帖子 sxgpic » 2022-08-18 18:34

6.2 内核2023年2月19日发布,我们可以从 https://kernel.org 下载回来,配置编译成 deb 包给 22.04 系统换上。

linux 6.2 源代码:
https://cdn.kernel.org/pub/linux/kernel ... 6.2.tar.xz

编译 deb 包所需的配置文件及这个配置文件的调整说明:
1、我们额外添加 APFS 文件系统,可用于读取苹果 macOS 分区,实验性写入最好不要尝试。
2、以 Canonical 官方5.x内核配置为模板,原有配置选项基本与官方内核相同。
3、zswap 和 zram 都采用 zstd 压缩。
4、将 CONFIG_CONSOLE_LOGLEVEL_DEFAULT 和 CONFIG_CONSOLE_LOGLEVEL_QUIET 都调整为1。
5、常用文件系统和块设备直接编译进内核: ext4、btrfs、xfs、reiserfs、jfs、vfat、exfat、ntfs3、udf、squashfs、overlayfs、fuse、loop、nbd
linux-6.2.0-compile.tar.xz
(1.75 MiB) 已下载 14 次
下载以上两个,然后依次执行以下指令来编译:

代码: 全选

tar Jxf linux-6.2.tar.xz
mv linux-6.2 linux-6.2.0
tar Jxf linux-6.2.0-compile.tar.xz
cp -a linux-6.2.0-compile/* linux-6.2.0/
tar czf linux-6.2.0_6.2.0.orig.tar.gz linux-6.2.0
cd linux-6.2.0
debuild
执行 debuild 时可能会提示你的系统缺一些编译内核需要用到的软件包,缺什么包就用 apt-get install --no-install-recommends 临时补上,记录下包名编译结束后再 apt-get autoremove --purge 卸载掉。全部满足后再次执行 debuild 即可开始编译,完成后得到以下几个包:

代码: 全选

linux-buildinfo-6.2.0-02-generic_6.2.0-02.22_amd64.deb
linux-headers-6.2.0-02_6.2.0-02.22_all.deb
linux-libc-dev_6.2.0-02.22_amd64.deb
linux-tools-common-6.2.0_6.2.0-02.22_all.deb
linux-cloud-tools-common-6.2.0_6.2.0-02.22_all.deb
linux-headers-6.2.0-02-generic_6.2.0-02.22_amd64.deb
linux-modules-6.2.0-02-generic_6.2.0-02.22_amd64.deb
linux-tools-host-6.2.0_6.2.0-02.22_all.deb
linux-doc_6.2.0-02.22_all.deb
linux-image-6.2.0-02-generic_6.2.0-02.22_amd64.deb
linux-source-6.2.0_6.2.0-02.22_all.deb
我们只需要安装以下几个:

代码: 全选

linux-image-6.2.0-02-generic_6.2.0-02.22_amd64.deb
linux-modules-6.2.0-02-generic_6.2.0-02.22_amd64.deb
linux-headers-6.2.0-02_6.2.0-02.22_all.deb
linux-headers-6.2.0-02-generic_6.2.0-02.22_amd64.deb
linux-libc-dev_6.2.0-02.22_amd64.deb
安装好以上新内核的 deb 包后,强迫症患者还可能需要几个meta包。下载
linux-meta-6.2.0.02.22.tar.xz
(17.3 KiB) 已下载 9 次
,解压进入 linux-meta-6.2.0.02.22 目录,执行 debuild 生成一大堆 deb 包,安装以下三个:

代码: 全选

linux-generic-hwe-22.04_6.2.0.02.22_amd64.deb
linux-headers-generic-hwe-22.04_6.2.0.02.22_amd64.deb
linux-image-generic-hwe-22.04_6.2.0.02.22_amd64.deb
需要注意的是,有些旧的 dkms 额外驱动可能还没有适配新的 6.2 内核,编译模块会出错,需要更新这些 dkms 驱动包。比如 v4l2loopback-dkms 需要升级到 0.12.7-2ubuntu2~22.04.1,broadcom-sta-dkms 需要升级到 6.30.223.271-23~22.04.1,等等。

================分割线,以下是旧的 5.9.2 内核================

主线内核 5.19.2 于今天发布,从 https://kernel.org 下载回来,配置完毕编译成 deb 包给 22.04 系统换上。

相比于 5.15.x ,新内核有一些对新机器和新硬件支持的改进,编译配置都选上,另外顺便添加了对苹果 APFS 文件系统的支持。相比于 https://kernel.ubuntu.com/~kernel-ppa/mainline/ 的测试内核,配置上做了细节调整,比如 zswap 和 zram 都采用 zstd 压缩,其他跟旧内核一致的配置选项基本跟 ubuntu 正式版的 5.15.x 保持一致,但将 CONFIG_CONSOLE_LOGLEVEL_DEFAULT 和 CONFIG_CONSOLE_LOGLEVEL_QUIET 都调整为1,关闭讨厌的 console 信息输出,在启动时不会出现一大堆文字滚屏,看起来更美观些。新内核配置补丁,包含 deiban 目录和 debian.master 目录以及 apfs 驱动:
linux-5.19.2-ubuntu22.04.patch.zst.txt
(1.72 MiB) 已下载 45 次
去掉 .txt 后缀得到 linux-5.19.2-ubuntu22.04.patch.zst ,用 zstd 解压:

代码: 全选

zstd -d linux-5.19.2-ubuntu22.04.patch.zst
https://kernel.org 下载 linux-5.19.2.tar.xz 回来:

代码: 全选

tar Jxf linux-5.19.2.tar.xz
cd linux-5.19.2
patch -p1 <../linux-5.19.2-ubuntu22.04.patch
chmod +x debian/rules
chmod +x -R debian/scripts/*
debuild
如果提示缺什么包就用 apt-get install --no-install-recommends 临时补上,记录下包名编译结束后再 apt-get autoremove --purge 卸载掉。编译过程中有两三个无关紧要的询问,直接回车过,编译完得到以下几个包:

linux-buildinfo-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-cloud-tools-common-5.19.2_5.19.2-08.18_all.deb
linux-doc_5.19.2-08.18_all.deb
linux-headers-5.19.2-08_5.19.2-08.18_all.deb
linux-headers-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-image-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-libc-dev_5.19.2-08.18_amd64.deb
linux-modules-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-source-5.19.2_5.19.2-08.18_all.deb
linux-tools-common-5.19.2_5.19.2-08.18_all.deb
linux-tools-host-5.19.2_5.19.2-08.18_all.deb

安装以下五个即可:
linux-image-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-modules-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-headers-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-headers-5.19.2-08-generic_5.19.2-08.18_amd64.deb
linux-libc-dev_5.19.2-08.18_amd64.deb

注意 linux-image-5.19.2-08-generic_5.19.2-08.18_amd64.deb 和 linux-modules-5.19.2-08-generic_5.19.2-08.18_amd64.deb 相互依赖,得手动同时安装,执行两次

代码: 全选

dpkg -i linux-image-5.19.2-08-generic_5.19.2-08.18_amd64.deb linux-modules-5.19.2-08-generic_5.19.2-08.18_amd64.deb
然后再安装其他三个包:

代码: 全选

dpkg -i linux-headers-5.19.2-08-generic_5.19.2-08.18_amd64.deb linux-headers-5.19.2-08-generic_5.19.2-08.18_amd64.deb linux-libc-dev_5.19.2-08.18_amd64.deb
另外如果想要更新几个 meta 包到最新版,下载这个
linux-meta-5.19.2.08.18.tar.xz
(17.33 KiB) 已下载 45 次
在安装好以上新内核的 deb 包后,解压进入 linux-meta-5.19.2.08.18 目录,执行 debuild 生成一大堆 deb 包,安装以下三个:
linux-image-generic-hwe-22.04_5.19.2.08.18_amd64.deb
linux-headers-generic-hwe-22.04_5.19.2.08.18_amd64.deb
linux-generic-hwe-22.04_5.19.2.08.18_amd64.deb

重启用新内核引导,一切OK,卸载掉所有 5.15.x 相关的包。
注意博通无线网卡驱动 broadcom-sta-dkms、虚拟摄像头驱动 v4l2loopback-dkms 都得手动升级到最新版才能支持 5.19 内核,在 ubuntu 仓库里下载 22.10 的包在 22.04 里装上即可。broadcom-sta-dkms 必须要更新到 6.30.223.271-20 或以上,v4l2loopback-dkms 必须要更新到 0.12.7-2ubuntu1 或以上,下载连接:

broadcom-sta-dkms_6.30.223.271-20_all.deb
v4l2loopback-dkms_0.12.7-2ubuntu1_all.deb
上次由 sxgpic 在 2023-02-23 10:28,总共编辑 3 次。
sxgpic
帖子: 89
注册时间: 2013-12-13 6:57

Re: 给 ubuntu 22.04 编译换上最新的 5.19.2 内核(生成 deb 包)

#2

帖子 sxgpic » 2022-09-02 16:06

主线内核小版本更新很快,但变化不大,主要是bug修复,对于这些新的小版本,直接把 linux-5.19.2-ubuntu22.04.patch 里的小版本号替换掉就可以套用,例如 5.19.x :

代码: 全选

mv linux-5.19.2-ubuntu22.04.patch linux-5.19.x-ubuntu22.04.patch
sed -i 's/5.19.2-08.18/5.19.x-xx.xx/g' linux-5.19.x-ubuntu22.04.patch
编译时可能会有少数几个新的配置项询问,手动选一下。

更新:
linux-5.19.8-debian.patch.zst.txt
(1.72 MiB) 已下载 33 次
回复