找回密码
 -注册-
查看: 9438|回复: 59
打印 上一主题 下一主题

【更新】也许是全网唯一的6.5.x树莓派实时内核代码

[复制链接]
跳转到指定楼层
1
发表于 2023-9-2 17:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式 来自 北京
标题党一回

楼主一直维护着Gentoo Linux的xanmod内核、cachy内核、naa补丁、RoonServer/RoonBridge、HQPlayerd/naa、airplay1/2、airplay转upnp以及nvidia-drivers实时补丁、zfs 6.4内核补丁等软件包【1】。之前的帖子【2, 3】中介绍过其中一些内容。

本帖简单介绍一下昨天开始维护的树莓派4b/cm4实时内核的6.5版的食用方法,据我了解是目前全网唯一的,不仅限于Gentoo发行版。当然了上面这些Gentoo安装包目前也几乎都只有我的源在维护,之前GP作者维护过一段时间现已闭源很久了,github上也能找到xanmod/cachy的安装包但很不及时且不正规。


【1】https://github.com/zhjie/zhjie_gentoo_repo
【2】http://erji.net/forum.php?mod=viewthread&tid=2283776
【3】http://erji.net/forum.php?mod=viewthread&tid=2253401



来自 44楼
 楼主| 发表于 2024-8-6 16:59 | 只看该作者 来自 北京
话说audiolinux现在HZ2000的补丁都是抄的我的也不说一声...
回复

使用道具 举报

2
 楼主| 发表于 2023-9-2 18:00 | 只看该作者 来自 北京
本帖最后由 中关村东路 于 2023-9-2 18:04 编辑

先贴个图吧下图是我维护的内核补丁列表。在我的HQPlayer兼编译服务器上都测试安装了。



接下来就以 sys-kernel/raspberrypi-rt-sources 为例介绍一下 Gentoo用户和其他Linux发行版用户的使用方法。


回复

使用道具 举报

3
 楼主| 发表于 2023-9-2 18:02 | 只看该作者 来自 北京
本帖最后由 中关村东路 于 2023-9-2 18:06 编辑

Gentoo用户应该都是Linux高手了,为了保持本帖内容完整还是说一下。首先要添加我的源到你的系统中,添加下面文件即可。

  1. zhjie@zhjie-server ~ $ cat /etc/portage/repos.conf/zhjie-repo.conf
  2. [zhjie-repo]
  3. location = /var/db/repos/zhjie-repo
  4. priority = 10
  5. masters = gentoo
  6. sync-type = git
  7. sync-uri = https://github.com/zhjie/zhjie_gentoo_repo.git
  8. auto-sync = yes
复制代码


还要简单配置软件协议。举个例子,hqplayerd-bin是Signalyst的私有软件,而airplay软件Shairport-Sync是MIT协议。如果读者是没有强迫症的个人用户,只需在/etc/portage/make.con文件增加下面一行即可。


  1. ACCEPT_LICENSE="*"
复制代码


如果您编译了系统要再次分发,就请注意协议了。



接下来即可安装了。例如需要安装树莓派的实时版内核,只需执行


  1. zhjie@zhjie-server ~ $ sudo emerge sys-kernel/raspberrypi-rt-sources -va

  2. These are the packages that would be merged, in order:

  3. [ebuild   R    ] sys-kernel/raspberrypi-rt-sources-6.5:6.5::zhjie-repo  USE="cachy naa symlink xanmod -build" 0 KiB

  4. Total: 1 package (1 reinstall), Size of downloads: 0 KiB
复制代码


注意右侧,USE一段,表示了本内核包含了哪些特性,-build就是不build的意思。举个例子,如果你的树莓派不是作为网桥用,那就不需要naa补丁,只需在/etc/portage/make.conf里增加


  1. USE="-naa"
复制代码


如果你之前已经配置过USE,就把-naa加到之前的USE后面即可,例如:


  1. USE="bindist minimal pgo lto graphite firmware initramfs udev threads openmp symlink
  2.         rt -naa"
复制代码


因为树莓派6.5内核尚在密集更新,我暂时用的git方式维护,建议在USE里不要删除cachy,以确保内核代码安装正常。



回复

使用道具 举报

4
 楼主| 发表于 2023-9-2 18:03 | 只看该作者 来自 北京
如果您是其他Linux发行版用户是不能直接使用emerge安装树莓派实时内核代码的,但依然有办法使用。首先git clone下来我的repo【1】地址见主贴。

找到sys-kernel/raspberrypi-rt-sources目录,其中files就是所需的补丁,ebuild文件就是补丁使用的Gentoo脚本。用文档编辑器或者网页打开ebuild文件可以看到其中一些代码:

  1. K_BASE_VER="6.5"
  2. EGIT_BRANCH="rpi-${K_BASE_VER}.y"
  3. EGIT_REPO_URI="https://github.com/raspberrypi/linux.git"
复制代码


这标明了我维护的树莓派实时内核所基于的原版树莓派内核是 EGIT_REPO_URI,branch是EGIT_BRANCH。接下来你就可以去github上下载了。用git clone或者网页打包都可以。


接着看ebuild文件的补丁部分:


  1. # naa patch
  2.         if use naa; then
  3.                 eapply "${FILESDIR}"/naa/*.patch
  4.         fi

  5.         # cachy patch
  6.         if use cachy; then
  7.                 eapply "${FILESDIR}/cachy/6.5/all/0001-cachyos-base-all.patch"
  8.                 eapply "${FILESDIR}/cachy/6.5/misc/0001-high-hz.patch"
  9.                 eapply "${FILESDIR}/cachy/6.5/misc/0001-lrng.patch"
  10.         fi

  11.         # rt patch
  12.         eapply "${FILESDIR}/cachy/6.5/misc/0001-rt.patch"
  13.             eapply "${FILESDIR}/rt-arm-arm64-6.5.patch"

  14.         # xanmod patch
  15.         if use xanmod; then
  16.                 eapply "${FILESDIR}/xanmod/linux-6.5.y-xanmod/net/tcp/cloudflare/0001-tcp-Add-a-sysctl-to-skip-tcp-collapse-processing-whe.patch"
  17.                 eapply "${FILESDIR}/xanmod/linux-6.5.y-xanmod/futex/0001-futex-Add-entry-point-for-FUTEX_WAIT_MULTIPLE-opcode.patch"
  18.         fi
复制代码


读者可以进入内核目录,执行


  1. patch -p1 < xxx.patch
复制代码


需要注意,要顺序执行,且每一条都执行。

patch之后就得到可以正常食用的6.5版树莓派实时内核了。祝贺!


回复

使用道具 举报

5
 楼主| 发表于 2023-9-2 18:10 | 只看该作者 来自 北京
发个效果


回复

使用道具 举报

6
 楼主| 发表于 2023-9-2 21:59 | 只看该作者 来自 北京
附树莓派内核编译脚本,我是在macbook pro上编译的,正巧也是arm64,很快

  1. cd /usr/src/linux
  2. make CC=clang-16 LD=ld.lld-16 NM=llvm-nm-16 AR=llvm-ar-16 LLVM_IAS=1 LLVM=1 oldconfig
  3. make CC=clang-16 LD=ld.lld-16 NM=llvm-nm-16 AR=llvm-ar-16 LLVM_IAS=1 LLVM=1 nconfig
  4. make CC=clang-16 LD=ld.lld-16 NM=llvm-nm-16 AR=llvm-ar-16 LLVM_IAS=1 LLVM=1 dtbs
  5. make CC=clang-16 LD=ld.lld-16 NM=llvm-nm-16 AR=llvm-ar-16 LLVM_IAS=1 LLVM=1 -j6

  6. rm /mnt/cm4.old -rf
  7. mv /mnt/cm4 /mnt/cm4.old
  8. mkdir -p /mnt/cm4/boot/overlays
  9. mkdir -p /mnt/cm4/lib/modules

  10. make CC=clang-16 LD=ld.lld-16 NM=llvm-nm-16 AR=llvm-ar-16 LLVM_IAS=1 LLVM=1 modules_install INSTALL_MOD_PATH=/mnt/cm4

  11. cp -v /usr/src/linux/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dtb /mnt/cm4/boot/bcm2711-rpi-cm4.dtb
  12. cp -v /usr/src/linux/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb /mnt/cm4/boot/bcm2711-rpi-4-b.dtb
  13. cp -v /usr/src/linux/arch/arm64/boot/Image /mnt/cm4/boot/kernel8.img
  14. cp -v /usr/src/linux/.config /mnt/cm4/boot/config

  15. cp -vR /usr/src/linux/arch/arm64/boot/dts/overlays/*.dtbo /mnt/cm4/boot/overlays
复制代码


回复

使用道具 举报

7
发表于 2023-9-2 22:16 | 只看该作者 来自 中国
中关村东路 发表于 2023-9-2 21:59
附树莓派内核编译脚本,我是在macbook pro上编译的,正巧也是arm64,很快

非常感谢,太详细了!
回复

使用道具 举报

8
发表于 2023-9-3 02:50 来自手机 | 只看该作者 来自 广东
对了,其他arm开发板能使用树莓派的内核源码编译吗?
回复

使用道具 举报

9
 楼主| 发表于 2023-9-3 03:21 | 只看该作者 来自 北京
Mirros 发表于 2023-9-3 02:50
对了,其他arm开发板能使用树莓派的内核源码编译吗?

不能。不过一般板子都有自己的文档说怎么安装内核,不装rt内核应该都没问题
回复

使用道具 举报

10
发表于 2023-9-5 16:59 来自手机 | 只看该作者 来自 意大利
楼主,能给个树莓派的config文件,然后加个clang+lto的交叉编译教程吗?
回复

使用道具 举报

11
 楼主| 发表于 2023-9-5 18:22 | 只看该作者 来自 北京
andrea74 发表于 2023-9-5 16:59
楼主,能给个树莓派的config文件,然后加个clang+lto的交叉编译教程吗?

搜一下到处都是啊,装了clang,前面的脚本执行了就行。
回复

使用道具 举报

12
发表于 2023-9-5 22:40 来自手机 | 只看该作者 来自 意大利
中关村东路 发表于 2023-9-5 18:22
搜一下到处都是啊,装了clang,前面的脚本执行了就行。

搞定,谢谢
回复

使用道具 举报

13
 楼主| 发表于 2023-9-6 15:10 | 只看该作者 来自 北京

恭喜
回复

使用道具 举报

14
发表于 2023-9-6 20:15 来自手机 | 只看该作者 来自 意大利
感觉用了lto声音更凝聚了,可以给个你的config文件吗?
回复

使用道具 举报

15
 楼主| 发表于 2023-9-6 20:48 | 只看该作者 来自 北京
andrea74 发表于 2023-9-6 20:15
感觉用了lto声音更凝聚了,可以给个你的config文件吗?

发给别人过,不能兼容。可能和Gentoo有关
回复

使用道具 举报

16
发表于 2023-9-6 21:09 | 只看该作者 来自 浙江杭州
楼主技术大牛!
顺便问一下,有没有方法把LMS/Daphile squeezelite桥的功能也整合进去?
玩到现在发现自己用的最多的还是NAA和squeeze这两种
回复

使用道具 举报

17
发表于 2023-9-6 22:53 来自手机 | 只看该作者 来自 意大利
中关村东路 发表于 2023-9-6 20:48
发给别人过,不能兼容。可能和Gentoo有关

我在使用gentoo,就是想更精简一点
回复

使用道具 举报

18
 楼主| 发表于 2023-9-7 01:46 | 只看该作者 来自 北京
Devastat0r 发表于 2023-9-6 21:09
楼主技术大牛!
顺便问一下,有没有方法把LMS/Daphile squeezelite桥的功能也整合进去?
玩到现在发现自 ...

可以是可以不过我平时不用这个很难一直维护
回复

使用道具 举报

19
 楼主| 发表于 2023-9-7 22:34 | 只看该作者 来自 北京
andrea74 发表于 2023-9-6 20:15
感觉用了lto声音更凝聚了,可以给个你的config文件吗?

https://github.com/zhjie/zhjie_gentoo_repo/blob/master/sys-kernel/raspberrypi-rt-sources/files/6.5-networkaudio-rt
https://github.com/zhjie/zhjie_gentoo_repo/blob/master/sys-kernel/raspberrypi-sources/files/6.5-networkaudio
回复

使用道具 举报

20
 楼主| 发表于 2023-9-7 22:35 | 只看该作者 来自 北京
Devastat0r 发表于 2023-9-6 21:09
楼主技术大牛!
顺便问一下,有没有方法把LMS/Daphile squeezelite桥的功能也整合进去?
玩到现在发现自 ...

https://gpo.zugaina.org/media-sound/squeezelite

刚搜了一下看到有人维护着这个呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2024-11-25 23:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表