春雨日記 about me tags

これまでtarで取得した5.15.50のソースをいじっていましたが,ある程度纏まったのでlinux-stableベースで整理しました.

https://git.haru3.me/haru/linux-stable-dsm232

量がすごいので--depth 1を付けてcloneする事をおすすめします.

サポートしている機能

カーネルバージョンを上げて整理しただけなので,Archの記事で書いたのと変更はありません.

  • 起動
  • USB(OHCI, EHCI)
  • クロックの一部
  • NAND
  • GPIO(割り込みはNG)
  • UART1
  • OpenFirmware(dts)

ダウンロード

ソースは上のgitから落としてもらうとして,ビルド済バイナリを用意してみました.

多分systemdで十分使えると思います.

*バイナリの配布がライセンス的にまずいとかあったらメールなんかで教えて下さい🙏

ビルド方法

そういえば起動方法のメモは残したけどビルドの方法は書いてなかったなということで.

一般的なARM Linuxのビルドと何ら変わらないのでわざわざ書くまでも無いですが…

1. 準備

異なるアーキテクチャ向けのビルドを生成するためにはクロスコンパイラが必要です.

ARM用だとLinaroのやつが有名なので,だいたいこれを使ってます.

https://releases.linaro.org/components/toolchain/binaries/

1
2
3
4
5
6
sudo apt install libncurses-dev gawk flex bison openssl libssl-dev libelf-dev autoconf
mkdir ~/gc/
cd ~/gc/
wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
git clone https://git.haru3.me/haru/linux-stable-dsm232.git --depth 1
tar xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz

秘伝のタレ的な環境を使ってるので足りないパッケージあるかも.

2. コンパイル

それではコンパイルしてみましょう.

1
2
3
4
5
6
7
cd linux-stable-dsm232
export ARCH=arm
export CROSS_COMPILE=~/gc/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
cp <上にある.configを落とした場所> ./.config
make -j8
INSTALL_MOD_PATH=kmods make modules_install
INSTALL_HDR_PATH=kheaders make headers_install

3. 完成

/arch/arm/boot/zImageがカーネル,/arch/arm/boot/dts/celestial-cnc1800l.dtbがDTBです.

/kmodsにカーネルモジュールが,/kheadersにヘッダができます.

これで生成されるカーネルは配布しているバイナリ相当の物になるので,USBデバイスのドライバの追加などをしたい場合,

1
make menuconfig

で設定を変更する事ができます.

変更後はmake -j8以降を再度やり直して下さい.

あとはArchの記事の最後にある手順でuImageを作って起動させることができます.

追伸

いつまで持つかわからないですが,このカーネルの(時間的な)耐久試験をやってます.

http://i.haru3.me:7654/

楽天モバイル回線からVPSまでトンネルを張ってなんとか公開してるので,時々bad gatewayになったりします.