나는 바나나 파이를 가지고 있고 커널 3.19.3-bananapi와 함께 데비안을 설치했습니다.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
) 오류가 발생하면 운이 없는 것입니다.