나는 노력하고있다커널 3.12 업그레이드 및 테스트.
테스트하기 전에 제거해야 하는 트리 외부 모듈을 식별하는 가장 효율적인 방법은 무엇입니까?
몇 가지(vitualbox, nvidia, fglrx, bcmwl)가 언급되었지만 트리 외부에서 고려되는 설치된 모듈을 식별할 수 있는 방법이 있습니까?
답변1
트리 내부든 트리 외부든 커널 모듈은 /lib/modules/$(uname -r)
특정 커널 버전( )과 관련된 디렉터리에 설치되므로 새 커널로 업그레이드하기 위해 모듈을 정리할 필요가 없습니다. 오래된 모듈을 고려하지 마십시오.
그래도 내가 아는 한, 트리 내 모듈은 에 들어가므로 /lib/modules/$(uname -r)/kernel
그 /lib/modules/$(uname -r)
외부의 모든 모듈은 트리 외부 모듈입니다.
답변2
발견 후우분투 위키내가 사용하고 있는 것은 다음을 가리킨다.외부 모듈, rtfm을 통해 솔루션을 찾는 것이 더 쉽습니다.
외부 모듈 설치 경로 요약
modules_install
외부 모듈은 기본적으로 에 설치됩니다/lib/modules/$(KERNELRELEASE)/extra/
.- 외부 모듈을 다른 곳에 설치하거나 일반적으로 사용되는 경로 아래에 새 디렉터리를 생성할 때
INSTALL_MOD_PATH
설치 경로에 대한 접두사입니다 .INSTALL_MOD_DIR
/lib/modules/$(KERNELRELEASE)
자세한 설명은 이 답변의 하단을 참조하세요.
외부 모듈 검색
검색 범위를 위와 같이 좁히려면 다음을 포함하는 경로를 locate
인쇄 합니다 lib/module
.xargs
필터 출력디렉터리가 아닌 경로에 대한 경로입니다.
마지막으로 . grep -v
로 시작하는 경로의 출력을 필터링합니다 /lib/modules/$(uname -r)/kernel
. 여기에는 INSTALL_MOD_PATH
설치 중에 사용된 접두사 경로가 계속 표시되어야 합니다 (예: ) /frodo/lib/modules/$(KERNELRELEASE)/kernel/
.
이것은 분명히 완전히 이상한 경로에 설치된 모듈의 경로를 인쇄하지 않습니다. 이것은 명령입니다:
locate --null "*lib/modules/$(uname -r)*" | xargs -r0 sh -c 'for i do [ -d "$i" ] && printf "%s\n" "$i"; done' sh {} + | grep -v "^/lib/modules/$(uname -r)/kernel\|^/lib/modules/$(uname -r)$\|^/lib/modules/$(uname -r)/build$\|^/lib/modules/$(uname -r)/initrd$"
이렇게 하면 출력에서 트리 내 경로가 잘립니다 locate "*lib/modules/$(uname -r)*"
. 이제 출력은 훨씬 적으며 알려진 트리 외부 경로만 표시됩니다.
/frodo/lib/modules/3.12.3-031203-generic
/frodo/lib/modules/3.12.3-031203-generic/kernel
문서에서 발췌 외부 모듈 구축
다음 세부정보의 출처는 다음과 같습니다.외부 모듈 구축
modules_install
Install the external module(s). The default location is
/lib/modules/<kernel_release>/extra/, but a prefix may
be added with INSTALL_MOD_PATH (discussed in section 5).
=== 5. Module Installation
Modules which are included in the kernel are installed in the
directory:
/lib/modules/$(KERNELRELEASE)/kernel/
And external modules are installed in:
/lib/modules/$(KERNELRELEASE)/extra/
--- 5.1 INSTALL_MOD_PATH
Above are the default directories but as always some level of
customization is possible. A prefix can be added to the
installation path using the variable INSTALL_MOD_PATH:
$ make INSTALL_MOD_PATH=/frodo modules_install
=> Install dir: /frodo/lib/modules/$(KERNELRELEASE)/kernel/
INSTALL_MOD_PATH may be set as an ordinary shell variable or,
as shown above, can be specified on the command line when
calling "make." This has effect when installing both in-tree
and out-of-tree modules.
--- 5.2 INSTALL_MOD_DIR
External modules are by default installed to a directory under
/lib/modules/$(KERNELRELEASE)/extra/, but you may wish to
locate modules for a specific functionality in a separate
directory. For this purpose, use INSTALL_MOD_DIR to specify an
alternative name to "extra."
$ make INSTALL_MOD_DIR=gandalf -C $KDIR \
M=$PWD modules_install
=> Install dir: /lib/modules/$(KERNELRELEASE)/gandalf/