tokita.shinichi
2023年2月21日 15時44分
お世話になります。
製品マニュアルを参考に、ビルドしたLinuxカーネルを使用してルートファイルシステムをビルドし、SDブートさせたところ、WLAN(mlan0)が使用できませんでした。
以下に実施した内容を記載します。
(1)「9.4.1. ブートローダーをビルドする」を実施、imx-boot_armadillo_x2を生成
(2)「9.4.2. Linux カーネルをビルドする」を実施、
Image
armadillo_iotg_g4.dtb
armadillo_iotg_g4-aw-xm458.dtboを生成
カーネルコンフィグレーションは変更していません。
(3)「9.4.3.2. Alpine Linux ルートファイルシステムをカスタマイズする」、「9.9.4. DTS overlays によるカスタマイズ」
これらを参考に、ax2/packages からlinux-atを削除し、ax2/resources/boot/に
Image
armadillo_iotg_g4.dtb
armadillo_iotg_g4-aw-xm458.dtbo
を配置、また以下の内容のoverlays.txtを作成しました。
fdt_overlays=armadillo_iotg_g4-aw-xm458.dtbo
(4)「9.5.1. ブートディスクの作成」を参考に、build_image.shを実行しブートディスクイメージを生成し、microSDカードに書き込み
(5)「9.5.2. SD ブートの実行」を参考に、SDブートを実施
起動後、nmtuiを実行したところ、mlan0が見つからなかった
ビルドしたLinuxカーネルを使用しない((3)を実施しない)場合は、mlan0を使用できました。
両者を比較したところ、ビルドしたカーネルの方では/lib/modulesがなく、lsmodを実行してもモジュールが表示されませんでした。
ビルドしたカーネルを使用しない方では、/lib/modulesが存在し、lsmodを実行したところ、mlanを含めたモジュールが表示されました。
このことからモジュールがロードされていないのではと思うのですが、解決方法がわからず投稿させていただきました。
実施の手順の間違いや、対処法についてご教授いただければ幸いです。
以上、宜しくお願い申し上げます。
コメント
tokita.shinichi
2023年2月21日 18時51分
マルティネ様
お世話になります。ご回答ありがとうございます。
教えていただいた手順を試してみたところ、ax2/resourcesに/lib/modules/[kernel_version]が作成されました。
しかしながら、イメージを作成して起動してみると、lsmodでモジュールが表示されませんでした。
modprobe moalを実行したところ、ロードされ、WLANを使用することができました。
起動時からモジュールがロードされているようなイメージを作成することはできますでしょうか。
お手数ですがご教授いただければ幸いです。
以上、宜しくお願い申し上げます。
at_dominique.m…
2023年2月22日 8時53分
tokita.shinichiさん
> 教えていただいた手順を試してみたところ、ax2/resourcesに/lib/modules/[kernel_version]が作成されました。
> しかしながら、イメージを作成して起動してみると、lsmodでモジュールが表示されませんでした。
> modprobe moalを実行したところ、ロードされ、WLANを使用することができました。
> 起動時からモジュールがロードされているようなイメージを作成することはできますでしょうか。
申し訳ございません、最後まで確認しておらず、提供した手順の「busybox depmod」では /lib/modules/[kernel_version]/modules.alias.bin が正しく作成されてませんでした。
手順が少し面倒になりますが、ひとまずインストールした Armadillo に以下のコマンドを実行していただければ、再起動の際に自動的にロードされるはずです。
armadillo:~# depmod armadillo:~# persist_file -rv /lib/modules/ removed '/mnt/lib/modules/[kernel_version]/modules.builtin.bin' '/lib/modules/[kernel_version]/modules.builtin.bin' -> '/mnt/lib/modules/[kernel_version]/modules.builtin.bin' removed '/mnt/lib/modules/[kernel_version]/modules.symbols.bin' '/lib/modules/[kernel_version]/modules.symbols.bin' -> '/mnt/lib/modules/[kernel_version]/modules.symbols.bin' removed '/mnt/lib/modules/[kernel_version]/modules.alias.bin' '/lib/modules/[kernel_version]/modules.alias.bin' -> '/mnt/lib/modules/[kernel_version]/modules.alias.bin' removed '/mnt/lib/modules/[kernel_version]/modules.dep.bin' '/lib/modules/[kernel_version]/modules.dep.bin' -> '/mnt/lib/modules/[kernel_version]/modules.dep.bin' removed '/mnt/lib/modules/[kernel_version]/modules.symbols' '/lib/modules/[kernel_version]/modules.symbols' -> '/mnt/lib/modules/[kernel_version]/modules.symbols' removed '/mnt/lib/modules/[kernel_version]/modules.alias' '/lib/modules/[kernel_version]/modules.alias' -> '/mnt/lib/modules/[kernel_version]/modules.alias' removed '/mnt/lib/modules/[kernel_version]/modules.dep' '/lib/modules/[kernel_version]/modules.dep' -> '/mnt/lib/modules/[kernel_version]/modules.dep'
このコマンドで作成された /lib/modules/*/modules.* を再び build-rootfs の resources ディレクトリにコピーすればイメージも無事に使えると思いますが、手順としてはちょっと満足できないのでこれから ATDE で正しく depmod を実行する方法を確認します。
確認ができたらまたご連絡致します。
お手数をお掛けしますが、それまでは Armadillo上の depmod で進んでみてください。
もう問題ないと思いますが、それでも自動的にロードできなかった場合は「modinfo moal」コマンドの出力を提供していただければ助かります。
よろしくお願いします。
at_dominique.m…
2023年2月22日 16時30分
tokita.shinichiさん
納得できた解決ではありませんが、とりあえず原因が分かって、ATDE で modules.dep を作成することができました。
問題は、モジュールの圧縮です。
kmod の depmod (debian がデフォルトで使っている実装)では圧縮を完全に対応してないようで、modules.alias が生成されていません。
busybox の depmod は確かに圧縮をサポートしていますし、 modules.alias を生成できましたが、実際に使われている modules.alias.bin を生成しません。
Armadillo上で .bin まで生成されるのは、昔から alpine 側でその機能を追加しているからです…
なので、カーネルのコンフィグから CONFIG_MODULES_COMPRESS を無効化すれば解決はされますが、ファイルサイズに影響がありますのでワークアラウンドとしては alpine の busybox を使えます。
以下のコマンドで生成したモジュールディレクトリで問題ないかと思います。
[ATDE ~/linux-[VERSION]]$ INSTALL_MOD_PATH=/home/atmark/build-rootfs-[build_rootfs_version]/ax2/resources \ make modules_install [ATDE ~/linux-[VERSION]]$ ls /home/atmark/build-rootfs-[VERSION]/ax2/resources/lib/modules [kernel_version] [ATDE ~/linux-[VERSION]]$ podman run --rm \ -v /home/atmark/build-rootfs-[VERSION]/ax2/resources:/install \ -v $PWD:/linux docker.io/alpine \ depmod -ae -F /linux/System.map -b /install [kernel_version]
これからもう少し「良い」生成方法がないかも調べてみて、3月のアップデートにちゃんとした手順を用意します。
at_dominique.m…
2023年2月21日 16時47分
tokita.shinichiさん、
お世話になっています、
アットマークテクノのマルティネです。
> ビルドしたLinuxカーネルを使用しない((3)を実施しない)場合は、mlan0を使用できました。
> 両者を比較したところ、ビルドしたカーネルの方では/lib/modulesがなく、lsmodを実行してもモジュールが表示されませんでした。
> ビルドしたカーネルを使用しない方では、/lib/modulesが存在し、lsmodを実行したところ、mlanを含めたモジュールが表示されました。
>
> このことからモジュールがロードされていないのではと思うのですが、解決方法がわからず投稿させていただきました。
> 実施の手順の間違いや、対処法についてご教授いただければ幸いです。
申し訳ございません、マニュアルにある手順の問題ですね。今までの製品はモジュールをあまり使っていませんでしたのでモジュールのインストール方法をちゃんと説明してませんでした。
調査していただいた通りに、WLAN の動作にモジュールが必要です。
以下のコマンドでモジュールのツリーを作成できますので、インストール先を build-rootfs/ax2/resources にすれば起動できると思います。
(modules_install はすでに depmod を実行していますが、私の環境では debian kmod の depmod が空の modules.dep を生成していて、使えません。busybox の depmod で問題なかったです。今まであまり意識していなかったので、ちゃんと調査してマニュアルに正しい手順を3月のアップデートに追加させていただきます。)
お手数をお掛けして大変失礼致しました。
この手順でも動作しない場合はまた聞いてください。
よろしくお願いします。