ryo_agusa
2023年3月17日 14時14分
https://armadillo.atmark-techno.com/blog/10899/14608
以上の情報を参考に以下のGitHubで公開されているドライバのビルドをやってみたところ、エラーが発生してしまいます。
https://github.com/morrownr/8821au-20210708
状況としましては、
1. https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g4…
2. Linuxカーネルのデフォルトコンフィギュレーションを行っている
3. at-dtwebを使ってデバイスツリーのカスタマイズを行っている
以上の状況で、ドライバのビルドを以下のように指定しています。
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KSRC=../linux-5.10-5.10.168-r0
エラー内容は以下の通りです。
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C ../linux-5.10-5.10.168-r0 M=/home/atmark/8821au-20210708 modules make[1]: ディレクトリ '/home/atmark/linux-5.10-5.10.168-r0' に入ります awk: 致命的: cannot open file `include/generated/asm-offsets.h' for reading: そのようなファイルやディレクトリはありません CC [M] /home/atmark/8821au-20210708/core/rtw_cmd.o aarch64-linux-gnu-gcc: error: missing argument to ‘-mstack-protector-guard-offset=’ make[2]: *** [scripts/Makefile.build:286: /home/atmark/8821au-20210708/core/rtw_cmd.o] エラー 1 make[1]: *** [Makefile:1822: /home/atmark/8821au-20210708] エラー 2 make[1]: ディレクトリ '/home/atmark/linux-5.10-5.10.168-r0' から出ます make: *** [Makefile:2501: modules] エラー 2
どうすればカーネルモジュールのビルドが通るのか、ご教示いただけませんでしょうか。
コメント
at_mizo
溝渕です。
すみません。専用のターゲットがありました。
>
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- asm-generic >
ではなく、modules_prepareを使ってください。
[atde]$ make help | grep modules_prepare modules_prepare - Set up for building external modules [atde]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_prepare
ryo_agusa
> 溝渕です。
>
> すみません。専用のターゲットがありました。
>
> >
> > make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- asm-generic > >
>
> ではなく、modules_prepareを使ってください。
>
>
> [atde]$ make help | grep modules_prepare > modules_prepare - Set up for building external modules > [atde]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_prepare >
>
すみません、Linuxのビルドに時間をかけていたので、訂正があったことに気が付いておりませんでした。Linuxのビルドに途中で失敗してしまうので、以上を実行して、Linuxビルドのエラーは別のフォーラムに投稿したほうがよろしいでしょうか。
ryo_agusa
>
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C [path-to]/linux-5.10 modules >
>
> でビルドできました。一旦Linuxカーネルをビルドするか、次のようにするとビルドできるようになりませんか?
Linuxをビルドしようとすると、途中で以下のエラーが発生してしまいます。
UPD drivers/base/firmware_loader/builtin/imx/sdma/sdma-imx7d.bin.gen.S make[4]: *** 'drivers/base/firmware_loader/builtin/nxp/pcieuart9098_combo_v1.bin.gen.o' に必要なターゲット '/lib/firmware/nxp/pcieuart9098_combo_v1.bin' を make するルールがありません. 中止. make[4]: *** 未完了のジョブを待っています.... UPD drivers/base/firmware_loader/builtin/nxp/pcieuart9098_combo_v1.bin.gen.S make[3]: *** [scripts/Makefile.build:503: drivers/base/firmware_loader/builtin] エラー 2 make[2]: *** [scripts/Makefile.build:503: drivers/base/firmware_loader] エラー 2 make[1]: *** [scripts/Makefile.build:503: drivers/base] エラー 2 make[1]: *** 未完了のジョブを待っています....
ですので、以下を実行したほうがよろしいでしょうか。
>
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- asm-generic >
at_mizo
ryo_agusa
at_mizo
溝渕です。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
の、
「1. Linuxカーネルのビルドに必要なパッケージのインストール」
を実行してみていただけますか?
エラーが出ているpcieuart9098_combo_v1.binは、atmark-firmwareパッケージに含まれます。
事前に、
[atde]$ sudo apt update
のようにしておくと無難です。
ryo_agusa
ryo_agusa
> 溝渕です。
>
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
> の、
> 「1. Linuxカーネルのビルドに必要なパッケージのインストール」
> を実行してみていただけますか?
>
> エラーが出ているpcieuart9098_combo_v1.binは、atmark-firmwareパッケージに含まれます。
>
> 事前に、
>
>
> [atde]$ sudo apt update >
>
> のようにしておくと無難です。
>
本日試しましたところ、Linuxカーネルのビルドはエラーが出ることなく終了し、ビルドできているっぽいことは確認できました。
[ATDE ~/linux-5.10-5.10.168-r0]$ ls arch/arm64/boot/Image arch/arm64/boot/Image [ATDE ~/linux-5.10-5.10.168-r0]$ ls arch/arm64/boot/dts/freescale/armadillo_*.dtb arch/arm64/boot/dts/freescale/armadillo_iotg_g4.dtb
カーネルモジュールのビルド
[ATDE ~/8821au-20210708]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C ../linux-5.10-5.10.168-r0 modules
もエラーは出ずに終わったのですが、.koファイルが見当たりません。どこにありますでしょうか?ビルドする際の出力は以下のようになっております。
make: ディレクトリ '/home/atmark/linux-5.10-5.10.168-r0' に入ります CALL scripts/checksyscalls.sh CALL scripts/atomic/check-atomics.sh CHK include/generated/compile.h CC drivers/mxc/hantro/hantrodec.o AR drivers/mxc/hantro/built-in.a AR drivers/mxc/built-in.a AR drivers/built-in.a GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o AR init/built-in.a LD vmlinux.o MODPOST vmlinux.symvers MODINFO modules.builtin.modinfo GEN modules.builtin LD .tmp_vmlinux.kallsyms1 KSYMS .tmp_vmlinux.kallsyms1.S AS .tmp_vmlinux.kallsyms1.S LD .tmp_vmlinux.kallsyms2 KSYMS .tmp_vmlinux.kallsyms2.S AS .tmp_vmlinux.kallsyms2.S LD vmlinux SORTTAB vmlinux SYSMAP System.map MODPOST modules-only.symvers GEN Module.symvers make: ディレクトリ '/home/atmark/linux-5.10-5.10.168-r0' から出ます
at_mizo
ryo_agusa
> KSRCの指定が必要ですね。次のように実行してみてもらえますか?
>
>
> make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KSRC=[path-to]/linux-5.10 modules >
>
KSRCの指定をしてビルドをしたところ、.koファイルが生成されていることを確認できました。後は https://armadillo.atmark-techno.com/blog/10899/14608 の手順通りに進めていこうと思います。ありがとうございました。
at_mizo
2023年3月17日 14時26分
溝渕です。
> 以上の情報を参考に以下のGitHubで公開されているドライバのビルドをやってみたところ、エラーが発生してしまいます。
でビルドできました。一旦Linuxカーネルをビルドするか、次のようにするとビルドできるようになりませんか?
ちなみにソースはHEADを取ってきています。