最近更新できてなかったですが,実はG-ClusterでArch Linuxをまともに使えないか挑戦してました.
カーネルの更新
まず,公式で提供されているのがLinux 2.6.32です.大変古いので現代のシステムはまともに動かないと思われます.
そこで,Linux 5.15.50(やり始めた時点で最新のlts)を移植することにしました.
その成果がコチラ
https://git.haru3.me/haru/linux-dsm232
gitの使い方が下手なのはさておき,現状サポートしているのは以下です.
- 起動
- USB(OHCI, EHCI)
- クロックの一部
- NAND
- GPIO(割り込みはNG)
- UART1
- OpenFirmware(dts)
中途半端な感じですが,私的には満足したのでここで終わります(多分)
taiさんがまとめて下さっているオリジナルカーネル をご覧の通り,基のソースがかなりシンプルなので,移植もなんとか私のレベルで行う事ができました.
実験に使ったconfigはここから入手できます.
努めて基のソースを変更しないようにしたのであと暫くはそのままcherry-pickで移植できるんじゃないかと思います.
ギャラリー
初めて起動した図
earlyconが出てないのと,クロックソース, イベントソースが適当なので時間がおかしいです.
クロックを追加して,時間は正常になった図
まだearlyconは出ません.
やっと出ました.これのお陰で改善の難易度がぐっと下がります.
USBメモリを認識しました.
この時点でとりあえずArchLinuxは動作しました.
GPIOが動作しました.入出力共に動いてそうです.
面倒なので割り込みは省きました…
Arch Linuxが動作した様子です. 遂に目的を達成しました!
起動ディスクはUSBメモリで,結局nandはよく分からないままです笑
なお,ArchLinux ARMは今年2月にarmv6,v5のサポートを終えたようです.なんてタイミングなんだ…
写真はネットの海で拾った2019年ぐらいのイメージで起動してます.
メモ
ビルド後は以下のスクリプトでイメージを作成してました.
|
|
起動するときはu-bootより
|
|
こんな感じで.
カーネルが結合されたdtbの読み込みに対応してくれているお陰でなんとか使えています笑
おわりに
とりあえず目的を達成できました.
G-clusterでLinux5系を動かしたのは私だけではなかろうか笑
最初に大変古いカーネルとか書きましたが,私の初めて触ったカーネルはUbuntu8.04に搭載されていた2.6(たぶん)だったりします.
なんだか複雑な気持ちですわ…
メモ2
純正の/proc/iomem
|
|
謝辞
taiさん
カーネルを大変参考にさせていただきました.
gpioblinkさん
解析の際,HDMIの強制を回避した改変済みのイメージを利用させて頂きました.