私はバナナパイを持っていて、カーネル3.19.3-bananapiと一緒にDebianをインストールしました。http://www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/
そのため、モジュールをコンパイルしたいので、kernel.orgからカーネルをダウンロードし、たとえばモジュールをコンパイルしようとすると、カーネルツリーのルートにあり、次のコマンドを実行します。sudo make M=drivers/android modules
エラーが発生します。
Building modules, stage 2.
MODPOST 0 modules
V = 1をデバッグするときの出力です。
user1@bananapi:~/linux-3.19.3$ sudo make M=drivers/android modules V=1
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
echo >&2; \
echo >&2 " ERROR: Kernel configuration is invalid."; \
echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
echo >&2 ; \
/bin/false)
mkdir -p drivers/android/.tmp_versions ; rm -f drivers/android/.tmp_versions/*
make -f ./scripts/Makefile.build obj=drivers/android
(cat /dev/null; ) > drivers/android/modules.order
make -f ./scripts/Makefile.modpost
find drivers/android/.tmp_versions -name '*.mod' | xargs -r grep -h '\.ko$' | sort -u | sed 's/\.ko$/.o/' | scripts/mod/modpost -i ./Module.symvers -I drivers/android/Module.symvers -o drivers/android/Module.symvers -S -w -s -T -
GREP_OPTIONS='--color=always' を never および auto に変更しようとしましたが、同じエラーが発生しました。
uname -rの出力は、3.19.3-bananapi内のヘッダーがインストールされていることです。
dpkg -l linux*の出力
user1@bananapi:~/linux-3.19.3$ dpkg -l linux\*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii linux-dtb-3.19 2.6 armhf Linux DTB, version 3.19.3-bananap
un linux-firmware <none> (no description available)
un linux-headers <none> (no description available)
un linux-headers- <none> (no description available)
ii linux-headers- 2.6 armhf Linux kernel headers for 3.19.3-b
un linux-image <none> (no description available)
un linux-image-2. <none> (no description available)
ii linux-image-3. 2.6 armhf Linux kernel, version 3.19.3-bana
un linux-kernel-h <none> (no description available)
un linux-kernel-l <none> (no description available)
ii linux-libc-dev 2.6 armhf Linux support headers for userspa
un linux-modules- <none> (no description available)
un linux-sound-ba <none> (no description available)
ii linux-u-boot-3 2.6 all Uboot loader
un linux32 <none> (no description available)
答え1
外部モジュールの場合は、まずカーネルをビルドし、modules_install
次の説明に従ってインストールしてください。カーネルソースコードへのパスを作成していることを確認してください。
~からhttps://www.kernel.org/doc/Documentation/kbuild/modules.txt
--- 2.1 コマンド構文
外部モジュールをビルドするコマンドは次のとおりです。
$ make -C <path_to_kernel_src> M=$PWD
kbuildシステムは、コマンドに提供されている「M =」オプションのために外部モジュールが構築されていることを知っています。
実行中のカーネルに対してビルドするには、次のようにします。
$ make -C /lib/modules/`uname -r`/build M=$PWD
次に、ビルドしたモジュールをインストールするには、コマンドに「modules_install」ターゲットを追加します。
$ make -C /lib/modules/`uname -r`/build M=$PWD modules_install
modules_install
説明する:
modules_install
外部モジュールを取り付けます。デフォルトの場所はですが、/lib/modules/<kernel_release>/extra/
INSTALL_MOD_PATHを使用してプレフィックスを追加できます(セクション5で説明)。
デフォルトのカーネルディレクトリ(代わりに/extra
)の下のカスタムディレクトリにモジュールをインストールしたい場合INSTALL_MOD_DIR
。
--- 5.2 インストール_MOD_ディレクトリ
外部モジュールはデフォルトで /lib/modules/$(KERNELRELEASE)/extra/ の下のディレクトリにインストールされますが、特定の機能のモジュールは別のディレクトリにあります。これを行うには、INSTALL_MOD_DIRを使用して「extra」の代替名を指定します。
$ make INSTALL_MOD_DIR=gandalf -C $KDIR \ M=$PWD modules_install => Install dir: /lib/modules/$(KERNELRELEASE)/gandalf/
答え2
/proc/config.gz
バナナに異物がないか確認してくださいシステムが稼働しているとき(存在しなかった場合は存在しなかったでしょう)。おそらく存在します。1ソースツリーの最上位レベルにコピーしたら、次の手順を実行します。
make clean
gunzip -c config.gz > .config
make oldconfig
その後、モジュールを再構築してみてください。
- そうでない場合は、
sudo modprobe configs
もう一度確認してください。モジュールが存在しないためにロードしようとしたとき(参考文献を参照man modprobe
)、エラーが発生した場合は運がないことです。