트리 외부의 모듈을 식별하시겠습니까?

트리 외부의 모듈을 식별하시겠습니까?

나는 노력하고있다커널 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/

관련 정보