Armadilloフォーラム

ビルドしたLinuxカーネルでWLAN(mlan0)が使用できない

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を含めたモジュールが表示されました。

このことからモジュールがロードされていないのではと思うのですが、解決方法がわからず投稿させていただきました。
実施の手順の間違いや、対処法についてご教授いただければ幸いです。
以上、宜しくお願い申し上げます。

コメント

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月のアップデートに追加させていただきます。)

[ATDE ~/linux-[VERSION]]$ INSTALL_MOD_PATH=/home/atmark/build-rootfs-[build_rootfs_version]/ax2/resources \
    make modules_install
[ATDE ~/linux-[VERSION]]$ sudo apt install busybox
[ATDE ~/linux-[VERSION]]$ ls /home/atmark/build-rootfs-[VERSION]/ax2/resources/lib/modules
[kernel_version]
[ATDE ~/linux-[VERSION]]$ busybox depmod -ae -F System.map -b /home/atmark/build-rootfs-[build_rootfs_version]/ax2/resources [kernel_version]

お手数をお掛けして大変失礼致しました。

この手順でも動作しない場合はまた聞いてください。
よろしくお願いします。

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」コマンドの出力を提供していただければ助かります。

よろしくお願いします。

tokita.shinichi

2023年2月22日 13時00分

マルティネ様
お世話になります。

ご教授頂いた手順で、起動時にWLANが使用可能になりました。ありがとうございます。
イメージの作成方法に関しては、引き続きよろしくお願いいたします。

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月のアップデートにちゃんとした手順を用意します。

tokita.shinichi

2023年2月22日 18時12分

マルティネ様
お世話になります。

ご教授頂いた方法で起動時にWLANが使用可能なイメージを作成できました。
こちらとしてはこれで問題ありません。
この度はご教授ありがとうございました。

お世話になっております。

現在私も似た現象で悩んでおりご相談をさせていただきたいです。
手段の観点でtokita.shinichiさんと異なるのは、私はこれをSDカードではなくUSBでswuファイルを用いて行おうとしているところになります。

上でマルティネさんが挙げておられるこちらの

[ATDE ~/linux-[VERSION]]$ INSTALL_MOD_PATH=/home/atmark/build-rootfs-[build_rootfs_version]/ax2/resources \
    make modules_install
[ATDE ~/linux-[VERSION]]$ sudo apt install busybox
[ATDE ~/linux-[VERSION]]$ ls /home/atmark/build-rootfs-[VERSION]/ax2/resources/lib/modules
[kernel_version]
[ATDE ~/linux-[VERSION]]$ busybox depmod -ae -F System.map -b /home/atmark/build-rootfs-[build_rootfs_version]/ax2/resources [kernel_version]

手順を用いて/lib/modules以下にカーネルバージョンのディレクトリが作られることを確認し、build_rootfs.shを実行することでtar.zstファイルを作成してこれを添付のdescファイルを用いて作成したswuファイルによりアップデートを行いました。その上で、/etc/sw-versionsでバージョンがアップデートされていることも確認したのですが、実際に/lib/modulesを見ると別バージョンのディレクトリがあるという状況です。そこで作成したtar.zstの中身を確認したのですが問題なく/lib/modules内に目的のバージョンのディレクトリが作成されているようでした。
(具体的には今回のアップデートでmake modules_install等をした際に確認したバージョンは5.10.161で、実際armadilloをbootした際にもKernel 5.10.161 on an aarch64と表示があります。しかし、実際の/lib/modules内には5.10.155-1-atのディレクトリが存在します。)

modprobe moalを実行すると

modprobe: can't change directory to '5.10.161': No such file or directory

となるので、自分でtarzstファイルから/lib/modules/5.10.161内のsource,buildディレクトリ以外のものを全て直接armadillo上の/lib/modulesにコピーした上で再度modprobe moalを実行し、以下のようになることを確認いたしました。

armadillo:/lib/modules# lsmod
Module                  Size  Used by    Tainted: G  
moal                  712704  0 
cfg80211              720896  1 moal
mlan                  495616  1 moal

ただifconfig等ネットワークインタフェースを確認してもlo,eth0,eth1とこれまでと同様であり、mlan0を見つけることができなかったのでここで諦めご相談をさせていただきたく感じました。tokita.shinichiさんと異なり、/lib/modules以下に存在しているディレクトリがあるのですがこれがどこからきたものなのかもよくわからず、行き詰まっています。

また、3月のマニュアルに追加されるとのことで探してみたのですが見つけることができず、もし追加したものが公開されているようであればそのリンク等もいただけると大変ありがたいです。

お手数おかけします。
よろしくお願いいたします。

ファイル ファイルの説明
baseos-update.txt アップデートに用いたswuファイルのもとのdescファイルです。.desc拡張子がアップロードできないとのことだったので.txtに変更いたしました。

at_dominique.m…

2023年4月20日 10時04分

imai98さん、

お世話になっています、
マルティネです。

> 手順を用いて/lib/modules以下にカーネルバージョンのディレクトリが作られることを確認し、build_rootfs.shを実行することでtar.zstファイルを作成してこれを添付のdescファイルを用いて作成したswuファイルによりアップデートを行いました。その上で、/etc/sw-versionsでバージョンがアップデートされていることも確認したのですが、実際に/lib/modulesを見ると別バージョンのディレクトリがあるという状況です。そこで作成したtar.zstの中身を確認したのですが問題なく/lib/modules内に目的のバージョンのディレクトリが作成されているようでした。
> (具体的には今回のアップデートでmake modules_install等をした際に確認したバージョンは5.10.161で、実際armadilloをbootした際にもKernel 5.10.161 on an aarch64と表示があります。しかし、実際の/lib/modules内には5.10.155-1-atのディレクトリが存在します。)

インストールしたモジュールとカーネルが一致しなかったですね。分かりにくくなってすみません、カーネルのみの swu を新しい kernel_update_plain.install.sh スクリプトで作成するといろいろチェックされていますが、build_rootfs にインストールする際にもいくつかチェックをたした方がよさそうですね…
(マニュアルの rm -rf と INSTALL_MOD_PATH に使われていたコマンドに 「ax2」のディレクトリの部分が欠けていましたが、今使ったコマンドはちゃんとしたパスなので違いますね)

その点は手動で直接にコピーすることで解決できたようですが、古いモジュールの削除および新しい make modules_install に使われているパスの確認で解決できると思います。
(当たり前と思いますが、ファイルをコピーした後に再び build_rootfs.sh の実行も必要ですね)

> ただifconfig等ネットワークインタフェースを確認してもlo,eth0,eth1とこれまでと同様であり、mlan0を見つけることができなかったのでここで諦めご相談をさせていただきたく感じました。tokita.shinichiさんと異なり、/lib/modules以下に存在しているディレクトリがあるのですがこれがどこからきたものなのかもよくわからず、行き詰まっています。

申し訳ございません、これは恐らくカーネルの defconfig と手順の問題です。
5.10.161のカーネルではモジュールの圧縮がまだ有効になっていました。
手順では、debian の depmod を使って完成された modules.dep などのファイルを展開しますが、debian の depmod はモジュール圧縮に対応してません。

なので、armadillo で depmod を実行して /lib/modules を persist_file -r で保存したらインタフェースを使えるようになると思います。

mkswu の desc ファイルで swdesc_command "depmod " で実行するか、カーネルコンフィグの CONFIG_MODULE_COMPRESS を無効にしてからもう一度 削除 + modules_install で無事に作成されると思います。

(これも install スクリプトでチェックしていますが、build_rootfs の場合には説明してませんでしたね…お手数をお掛けして申し訳ございません…)

これでも動かなかったらまた聞いてください。

よろしくお願いします。

マルティネ様

ご対応ありがとうございます。

> インストールしたモジュールとカーネルが一致しなかったですね。分かりにくくなってすみません、カーネルのみの swu を新しい kernel_update_plain.install.sh スクリプトで作成するといろいろチェックされていますが、build_rootfs にインストールする際にもいくつかチェックをたした方がよさそうですね…

> その点は手動で直接にコピーすることで解決できたようですが、古いモジュールの削除および新しい make modules_install に使われているパスの確認で解決できると思います。
> (当たり前と思いますが、ファイルをコピーした後に再び build_rootfs.sh の実行も必要ですね)

自分の説明が悪く、うまく伝わったか不安なので改めて説明をさせていただくと、build_rootfsで作られたtar.zst内には/lib/modulesに5.10.161が作成されているのですが、実際にこのtar.zstを指定したdescファイルによるswuでアップデートするとarmadilloの/lib/modules以下には5.10.155-1-atがあるという状況です。この状況でも上のような解決法でよろしいのでしょうか?コピーしたあとにbuild_rootfs.shを実行するというのがarmadillo上で行うことになると思うのですが正しいでしょうか。

> 申し訳ございません、これは恐らくカーネルの defconfig と手順の問題です。
> 5.10.161のカーネルではモジュールの圧縮がまだ有効になっていました。
> 手順では、debian の depmod を使って完成された modules.dep などのファイルを展開しますが、debian の depmod はモジュール圧縮に対応してません。
>
> なので、armadillo で depmod を実行して /lib/modules を persist_file -r で保存したらインタフェースを使えるようになると思います。

こちら試して見たのですがうまくいきませんでした。/lib/modulesで

depmod 5.10.161
modprobe moal

を実行してlsmodでmlanがロードされていることを確認し、一応persist_file -rもして保存もしたのですが、再起動等をしてもやはりインタフェースが現れませんでした。
ATDE側でdepmodによる展開ができていないから、armadillo側でalpine linuxのdepmodによるモジュールの展開を必要とするという理解でよろしいのでしょうか?

お手数おかけして申し訳ありません。
よろしくお願いいたします。

at_dominique.m…

2023年4月21日 9時23分

imai98さん、

マルティネです。

> 自分の説明が悪く、うまく伝わったか不安なので改めて説明をさせていただくと、build_rootfsで作られたtar.zst内には/lib/modulesに5.10.161が作成されているのですが、実際にこのtar.zstを指定したdescファイルによるswuでアップデートするとarmadilloの/lib/modules以下には5.10.155-1-atがあるという状況です。

こちらこそ読み取れなくてすみません。
確認として言い直しますが、「build_rootfs.sh で作成した baseos-x2-3.16.5-at.4.20230420.tar.zst の中身を tar tf 等で拝見すると /lib/modules に 5.10.161 のモジュールが入ってますが、このアーカイブを swu でインストールした後の /lib/modules が 5.10.155-1-at のままです」であっていますね?

> この状況でも上のような解決法でよろしいのでしょうか?
> コピーしたあとにbuild_rootfs.shを実行するというのがarmadillo上で行うことになると思うのですが正しいでしょうか。

いいえすみません、アーカイブの内容が間違っていたと思って言っただけですので。
まずは原因を確認しましょう。

まず考えれるのは、 armadillo上の /etc/swupdate_preserve_files に "POST /lib/modules" が記載されている場合に rootfs を展開した後に転送した /lib/modules を捨てて現状のディレクトリをコピーするようになります。
それでしたら、このファイルを直接に編集して /lib/modules の行を削除すれば解決されると思いますが、追加された理由が少し気になります。mkswu の例の examples/kernel_update_plain.desc では /boot と /lib/modules を保存するようにしていますが、カーネルの方が無事にアップデートされていてモジュールだけ前のままでしたらこれ以外の方法に追加されたことになると思いますね…

swupdate_preserve_files が原因じゃなければ、swu に組み込まれたアーカイブの内容確認と、実際にインストールされているバージョンの確認を次に案内します。

> こちら試して見たのですがうまくいきませんでした。/lib/modulesで
>

> depmod 5.10.161
> modprobe moal
> 

> を実行してlsmodでmlanがロードされていることを確認し、一応persist_file -rもして保存もしたのですが、再起動等をしてもやはりインタフェースが現れませんでした。
> ATDE側でdepmodによる展開ができていないから、armadillo側でalpine linuxのdepmodによるモジュールの展開を必要とするという理解でよろしいのでしょうか?

debian の問題は単なるアップストリームのパッケージをビルドした時のオプションの問題だけで、alpine の depmod は圧縮でも無事に解決してくれるはずです。
なので、これも少し確認させていただければ助かります。以下のコマンドの出力を提供いただけますか?

1/ 一応現在実行中のカーネルの確認。/lib/modules が展開されてなかったら、もしかしたらまだ 5.10.155 のカーネルを使っている可能性もあります
armadillo:~# uname -r
2/ depmod を引数無しでの再実行。起動中のカーネルにたいしてパスを見つけてくれます。
armadillo:~# depmod
3/ depmod が moalモジュールの「alias」(自動ロードトリガー)を見つけた確認。
armadillo:~# grep moal /lib/modules/$(uname -r)/modules.alias
alias pci:v00001B4Bd00002B43sv*sd*bc*sc*i* moal
alias pci:v00001B4Bd00002B44sv*sd*bc*sc*i* moal
4/ pci の有無の確認。ここは問題ないと思いますが、念のため…
armadillo:~# grep . /sys/bus/pci/devices/0000:01:00.*/vendor /sys/bus/pci/devices/0000:01:00.*/device
/sys/bus/pci/devices/0000:01:00.0/vendor:0x1b4b
/sys/bus/pci/devices/0000:01:00.1/vendor:0x1b4b
/sys/bus/pci/devices/0000:01:00.0/device:0x2b43
/sys/bus/pci/devices/0000:01:00.1/device:0x2b44

上記の 3/4 が同じ出力でしたら自動ロードを使えるはずですので、モジュールがロードされてないのではなく、何か別の問題の可能性もありますので、dmesg の出力も添付で提供していただけたら何か分かるかもしれません。

お手数ですが、よろしくお願いします。

マルティネ様

お世話になっております。

> こちらこそ読み取れなくてすみません。
> 確認として言い直しますが、「build_rootfs.sh で作成した baseos-x2-3.16.5-at.4.20230420.tar.zst の中身を tar tf 等で拝見すると /lib/modules に 5.10.161 のモジュールが入ってますが、このアーカイブを swu でインストールした後の /lib/modules が 5.10.155-1-at のままです」であっていますね?

はい、まさにその通りになります。

> まず考えれるのは、 armadillo上の /etc/swupdate_preserve_files に "POST /lib/modules" が記載されている場合に rootfs を展開した後に転送した /lib/modules を捨てて現状のディレクトリをコピーするようになります。
> それでしたら、このファイルを直接に編集して /lib/modules の行を削除すれば解決されると思いますが、追加された理由が少し気になります。mkswu の例の examples/kernel_update_plain.desc では /boot と /lib/modules を保存するようにしていますが、カーネルの方が無事にアップデートされていてモジュールだけ前のままでしたらこれ以外の方法に追加されたことになると思いますね…

ありがとうございます。確かにこちらが原因だったようで/lib/modulesを/etc/swupdate_preserve_filesでコメントアウトしたところうまくアップデートされました。
おっしゃる通り、どのタイミングで追加してしまったのかがわからないということと、以前linux kernelの/drivers/tee/optee内のファイルを書き換えたりしていて、そちらはうまくアップデートできていたはずなのですが、POST /lib/modulesに加えてPOST /bootも記述されていたので、なぜそちらはできていたのかも不思議です。こちらに関しては数ヶ月前に取り組んでいたことで、本当にkernelがアップデートできていたのかは改めて後日確認させていただきたいと思います。

> debian の問題は単なるアップストリームのパッケージをビルドした時のオプションの問題だけで、alpine の depmod は圧縮でも無事に解決してくれるはずです。
> なので、これも少し確認させていただければ助かります。以下のコマンドの出力を提供いただけますか?

armadillo:~# uname -r
5.10.161
armadillo:~# depmod
armadillo:~# grep moal /lib/modules/$(uname -r)/modules.alias
alias pci:v00001B4Bd00002B43sv*sd*bc*sc*i* moal
alias pci:v00001B4Bd00002B44sv*sd*bc*sc*i* moal
armadillo:~# grep . /sys/bus/pci/devices/0000:01:00.*/vendor /sys/bus/pci/device
s/0000:01:00.*/device
grep: /sys/bus/pci/devices/0000:01:00.*/vendor: No such file or directory
grep: /sys/bus/pci/devices/0000:01:00.*/device: No such file or directory
armadillo:~# ls /sys/bus/pci/devices/
armadillo:~#
 

こちら実行してみたところpciデバイスが認識されていないようでした。
pciutilsをインストールしてlspci等を実行しても、cat /proc/bus/pci/devicesをしても特に出力はない状況です。
ブートローダで認識されているのかが気になり、ubootで見てみようと思ったのですがpciコマンド等が存在せず、helpでコマンド一覧を確認しても利用できそうなものがないように思いました。このような場合にどう解決するかを教えていただけると大変助かります。

> 上記の 3/4 が同じ出力でしたら自動ロードを使えるはずですので、モジュールがロードされてないのではなく、何か別の問題の可能性もありますので、dmesg の出力も添付で提供していただけたら何か分かるかもしれません。

dmesgについて気になることがありましてこちらもご質問をさせていただきたいです。
実は以前からmodprobe moal後にdmesgを確認すると

[   96.484964] mlan: module verification failed: signature and/or required key missing - tainting kernel

というメッセージが出ており、これをMakefileにCONFIG_SIG_MODULES=nと記載することで解決した気になっていたのですが、できていなかったようです。
ただ、lsmodを確認するとmlanが確認できますし、上のpciデバイスが認識されていないことが直接的な原因かとは思いますが、こちらも対応方法を教えていただけると大変ありがたいです。

大変お手数おかけしております。
よろしくお願いいたします。

imai98さん、

マルティネです。

> ありがとうございます。確かにこちらが原因だったようで/lib/modulesを/etc/swupdate_preserve_filesでコメントアウトしたところうまくアップデートされました。

了解です。

> おっしゃる通り、どのタイミングで追加してしまったのかがわからないということと、以前linux kernelの/drivers/tee/optee内のファイルを書き換えたりしていて、そちらはうまくアップデートできていたはずなのですが、POST /lib/modulesに加えてPOST /bootも記述されていたので、なぜそちらはできていたのかも不思議です。こちらに関しては数ヶ月前に取り組んでいたことで、本当にkernelがアップデートできていたのかは改めて後日確認させていただきたいと思います。

そうですね、当時のアップデートで追加されたかもしれません。
量産敵に外す必要があれば swdesc_script "$SCRIPT_DIR/examples/update_preserve_files.sh" -- --del "POST /lib/modules" を swu の desc ファイルに追加すると外せますが、手元の一台だけでしたら手動でも問題ないです。

この点についてはマニュアルに注意を足そうと思いますので、ご報告大変助かります。

> grep: /sys/bus/pci/devices/0000:01:00.*/vendor: No such file or directory
> grep: /sys/bus/pci/devices/0000:01:00.*/device: No such file or directory
>
> pciutilsをインストールしてlspci等を実行しても、cat /proc/bus/pci/devicesをしても特に出力はない状況です。

PCI デバイスが見つからないと moal ドライバをロードする引っ掛けがなくなりますので、ロードされない理由がこれで間違いないですが、PCI がなんで認識されてないというとまだ何とも言えないですね。

> ブートローダで認識されているのかが気になり、ubootで見てみようと思ったのですがpciコマンド等が存在せず、helpでコマンド一覧を確認しても利用できそうなものがないように思いました。このような場合にどう解決するかを教えていただけると大変助かります。

そうですね、u-boot で PCI を操作してないのでコマンドを入れてませんが、調査には便利かもしれません。今度試してみます。
とりあえず dmesg の出力に何かヒントがあるかもしれませんので、ファイルに保存して添付で送っていただければ確認します。
最初に、聞くまでもないと思いますが、wifiモジュールがついてる個体ですね?
後は確認ですが、前の 5.10.155 カーネルで無事に認識されていたで間違いないですか?
/boot のアップデートにトラブルがあったので、 /boot/overlays.txt に fdt_overlays=armadillo_iotg_g4-aw-xm458.dtbo が記載されていることも確認してください。

月曜日に何か 5.10.161 で関係ありそうな変更があったかを確認します。

> というメッセージが出ており、これをMakefileにCONFIG_SIG_MODULES=nと記載することで解決した気になっていたのですが、できていなかったようです。
> ただ、lsmodを確認するとmlanが確認できますし、上のpciデバイスが認識されていないことが直接的な原因かとは思いますが、こちらも対応方法を教えていただけると大変ありがたいです。

taint のメッセージは無視していいです。サインされてないところで自動ロードの問題になりませんし、おそらく今の状態でモジュールをロードしたところで mlan0 などの wifi インタフェースが作成されないと思います(PCIデバイスが後で認識されるとは思えません)

よろしくお願いします。

マルティネ様

お世話になっております。

> 最初に、聞くまでもないと思いますが、wifiモジュールがついてる個体ですね?
大変申し上げにくいですがこちらが原因でした。大変申し訳ないです。
言い訳にはなりますが、実は私が直接購入したものではなく正しく商品仕様が理解できておらず、しっかりと調査してからお伺いをするべきでした。
この度はお手数をおかけして大変失礼しました。

今後ともよろしくお願いいたします。