https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
カーネルソースのdownload先
https://github.com/raspberrypi/linux
一番参考になったサイトは
64bit 版 Raspberry Pi OS のカーネルモジュールのビルド環境設定
1.gcc のビルドという部分は実はクロスコンパイル環境の構築するための作業になっている。
なのでこれをintel-CPUのPC上で行えばクロスコンパイル環境が出来る。
ただしrpi-sourceは使用しなかった。
このソース取得部分はたかじん氏のサイトの方法を真似させていただきましたm(_ _)m
このサイトの説明で大変に重要な事は最後の2行です(笑)
$ KERNEL=kernel8 make ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
※ ビルドコマンドが make の場合
とにかく例外なくこの呪文を使えと
たとえばKERNEL=kernel8 make menuconfig ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
使用したソース等
2021-05-07-raspios-buster-arm64-lite.img
linux-9299025206cb3f9b1146aa2c3c1de5df8fc92e9c
(linux-rpi-5.16.y.zip)
patch-5.16-rc3-rt7.patch.xz
binutils-2.37.tar.xz
gcc-8.4.0.tar.xz
ここまで来ればもう根性しかない(笑)という事で
パッチを当てたソースをコンパイルじゅうたん爆撃をした結果として
root@raspberrypi:~# uname -a
Linux raspberrypi 5.16.0-rc3-rt7-v8 #1 SMP PREEMPT Sat Dec 4 19:35:24 JST 2021 aarch64 GNU/Linux
「rt7」です。憧れ?のリアルタイムカーネルです。
root@raspberrypi:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndallodigione [snd_allo_digione], device 0: Allo DigiOne HiFi wm8804-spdif-0 [Allo DigiOne HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
問題なくサウンドカードを認識しています。
音出し成功です。
肝心の音は疲れすぎで後日コメントします(笑)
とりあえずddコマンドでバックアップを取り
それを書き戻して動作が確認できたので一安心です。
ところが...
追記12/05 えふさんのコメントからプリエンプションのミスが発覚しました!
本来Fully Preemptible Kernel (Real-Time)を選択すべき部分でした。
再度configしてコンパイルをやり直してSDカードに反映しました。
コンパイル終了後に残っている.configをエディターで開いて再度確認しました。
CONFIG_HAVE_PREEMPT_LAZY=y
CONFIG_PREEMPT_LAZY=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_RT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_PREEMPTION=y
大丈夫な様です^^;
この記事に対するコメント・トラックバック [8件]
1. えふ — 2021/12/05@15:31:00
当方も暇だったので(^^;、後追いでチャレンジしてみました。
こちらでは、ちょっと古いソースを使いました。というか新しめのソースではRTパッチをいくつか試してみたけど、menuconfigでrt-kernelが選択に出てこないという…(^^;
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.4.83-rt39-v8+ #1 SMP PREEMPT_RT Sat Dec 4 12:36:06 GMT 2021 aarch64 GNU/Linux
NFD基板は持っていないけど、amazonで買ったSP/DIF基板では…
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndallodigione [snd_allo_digione], device 0: Allo DigiOne HiFi wm8804-spdif-0 [Allo DigiOne HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
当方は、主に英語サイトを参考にしました。書いてあることは日本語サイトとほぼ同じですがこちらは外部で作成する手順でした。最終的には、rpi-sourceを使ってrpi4上でビルドしました。
なかなか忘れていることが多くて、頭の体操になしました(笑)
くま 2021/12/05@16:41:16
自分は試行錯誤4日程度時間がかかりました。
APUなら何度かArchlinuxでrt-kernelを作った事はあったのですが
ラズパイはほとんど初めてで不明点の連続でした^^;
ところで
ノーマルカーネルと比較すると肝心の音はどうでしょうか?
当方では予想に反してタイト方向では無く分解能を維持しながら
おおらかな鳴り方に変化した様に感じます。
3. えふ — 2021/12/05@16:49:46
ちなみにですが、aplay -lでの無関係な表示を消すには、/boot/
config.txtでコメントすれば良いです。特にこれとか…
#dtparam=audio=on
#dtoverlay=vc4-kms-v3d
くま 2021/12/05@17:22:34
#dtoverlay=vc4-kms-v3d
おお!情報ありがとうございます。消えました。
>NFD基板は持っていないけど、amazonで買ったSP/DIF基板では…
この基板は音が良い様に思います。
自分は生基板から三枚も組み立ててしまいました(笑)
>新しめのソースではRTパッチをいくつか試してみたけど、menuconfigでrt-kernelが選択に出てこないという…(^^;
これってKernel Future -> Timer Frequency の事なのかな?
であれば make menuconfig ではなく
KERNEL=kernel8 make menuconfig ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
とすれば出て来ると思うのですが...
5. えふ — 2021/12/05@18:03:51
そこではなくて
General setup → Preemption Model → Fully Preemptible Kernel(Real-Time)
のことです。config手順としては、bcm2711_defconfigの後menuconfigの実行ということで合っていますよね?
くま 2021/12/05@18:35:43
ああぁ自分----Low-Latency Desktop を選択していました。
で!
KERNEL=kernel8 make bcm2711_defconfig ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
(make bcm2711_defconfig)
KERNEL=kernel8 make menuconfig ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
これで出現するはずです。
7. えふ — 2021/12/06@13:35:21
ちなみに、比較したノーマル64bit kernelは、
Linux raspberrypi 5.10.82-v8+ #1497 SMP PREEMPT Fri Dec 3 16:30:35 GMT 2021 aarch64
ノーマルも良いと思いましたが、やはりプラシーボ効果か(^^;、rt-kernelの方に軍配を上げたいと思います。
空気感というかとても音の抜けの良さを感じます。でも駄耳なので話半分で(笑)
ところで、別記事のupmpdcliのインストールでハマったので、その記事にもコメント入れます(^^;
くま 2021/12/06@19:55:07
>空気感というかとても音の抜けの良さを感じます。
リベンジで上書きした今度こそのrt-kernelの音は
失敗ローレイテンシーとは明らかに違う音が出ます(笑)
音の消え方が何か花火を連想させます。
ババーンと広がってスーット消える感じがします。
加えてDACにAK4493を使っているサブシステムで聴いているので
音が何処までも温かく疲れた体に滲み込みます。
今回は(も)数々の誤りの指摘ありがとう御座いますm(_ _)m
この記事に対するこれ以上のコメントはありません