M5Stack ModuleLLMのカスタムカーネル化手順
急いで書いているので、タイポ等あるかもしれません。m(_ _)m違ったら教えてください。
1.カスタムカーネルの目的
M5StackからリリースされているModuleLLMのカーネルは必要最低限のconfigしかされておらず、標準のUSBドライバや、USB-WiFiのドライバを組み込んでも正常に動作してくれません。
その問題を解消するために、カスタムカーネルを組み込む必要があります。
※ Module LLMと LLM630 Compute Kitは手順や設定ファイル、リポジトリが異なるので注意してください。
2.用意するリポジトリ
-
m5stack/LLM_buildroot-external-m5stack
こちらのリポジトリはgit cloneして作業します。 -
dianjixz/module_LLM_linux
こちらのリポジトリをforkしてconfigを追加したり削除したりします。
検証した実行環境
- Ubuntu22.04(実機にインストールしたもの)
恐らく、IntelWin上のWSL2のUbuntuでもできると思います。(未検証)
AppleシリコンのUbuntuだとビルドできなかったという報告あり。(恐らく、クロスコンパイラをリポジトリ内にあるものを参照しているから?)
3.LLM_buildroot-external-m5stackの使い方
このリポジトリの概要は、nnn112358さんの記事が分かりやすいです。
★ 2025/1/28現在、母艦PCで下記のコマンド実行が必要かもしれません。
sudo apt install -y simg2img
toolsフォルダに移動して、creat_Module_LLM_ubuntu22_04_image.shを実行すると、build_Module_LLM_ubuntu22_04配下にaxpファイルが作成されます。
4.module_LLM_linux
こちらは、LLM_buildroot-external-m5stackのconfigsにあるファイルに下記のように設定されていてtoolsのシェル実行時にカーネルの差分として読み込まれます。
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,dianjixz,module_LLM_linux,7e780e6644667f16e466a835619291dba77d9c36)/linux-7e780e6644667f16e466a835619291dba77d9c36.tar.gz"
configの設定を変更して後から参照する必要があるのでforkして自分のリポジトリにしておきましょう。
configの変更例(追加)
下記のようにlinux-enable-m5stack.configへ追加します。
5.カーネルのカスタマイズ項目の確認・変更
こちらは、4のシェルを実行した後に作成されるフォルダで確認できます。
(1)カーネルが展開されるフォルダ
下記のフォルダにカーネルソースが展開されます。
LLM_buildroot-external-m5stack/tools/build_Module_LLM_buidlroot/buildroot/output/build/linux-custom/build/linux-4.19.125/
上記のフォルダに移動して、make menuconfigを行い、.configファイルの差分を拾います。
(2)module_LLM_linuxの編集
5-(1)で行ったパラメータ変更部分をmodule_LLM_linuxの設定に追加します。
6.m5stack_module_llm_4_19_defconfigの変更
module_LLM_linuxの変更したCOMMITのfull SHAを取得します。
4の設定ファイルを書き換えます。私の例の場合は、COMMITのfull SHAは80371b286713c5607cbc4b113d48ad80132f12d3
なので、下記のようになります。
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,mongonta0716,module_LLM_linux,80371b286713c5607cbc4b113d48ad80132f12d3)/linux-80371b286713c5607cbc4b113d48ad80132f12d3.tar.gz"
7.axpファイルの作成
toolsフォルダで作業します。
build*の削除
念のため、tools配下で最初に作成した作業フォルダを削除しておきましょう。
rm -rf build*
シェルの実行
下記のシェルを実行
creat_Module_LLM_ubuntu22_04_image.sh
8.AXDLでファームウェア書き込み
出来上がったaxpファイルをAXDLで書き込みます。
9.動作確認
差分が反映されているか確認しましょう。私の場合はUSB関連のドライバが動くように設定したのでUSBマイクとUSB-EthrenetとUSB-WiFiで確認してみました。
lsusb -t -v
を実行してDriverのところに表示されていればOKです。
Discussion