ツリー外のモジュールを識別しますか?

ツリー外のモジュールを識別しますか?

頑張っていますカーネル3.12のアップグレードとテスト

テストする前に削除する必要があるツリーの外部モジュールを識別する最も効率的な方法は何ですか?

いくつか(vitualbox、nvidia、fglrx、bcmwl)が挙げられていますが、ツリーの外で考慮されているインストール済みモジュールを識別する方法はありますか?

答え1

ツリー内でもツリー外でも、カーネルモジュールは/lib/modules/$(uname -r)特定のカーネルバージョン()に関連するディレクトリにインストールされているため、新しいカーネルにアップグレードするためにモジュールをクリーンアップする必要はありません。古いモジュールを考慮しないでください。

それでも私が知っている限り、ツリー内のモジュールはに入るので、/lib/modules/$(uname -r)/kernelその/lib/modules/$(uname -r)外部のすべてのモジュールはツリーの外部モジュールです。

答え2

発見後Ubuntu Wiki私が使っているのは次のことです。外部モジュール、rtfmを介してソリューションを見つけるのは簡単です。

外部モジュールの取り付けパスの概要

  • modules_install外部モジュールはデフォルトでにインストールされています/lib/modules/$(KERNELRELEASE)/extra/
  • 外部モジュールを他の場所にインストールするとき、または一般的に使用されるパスの下に新しいディレクトリを作成するときのインストールパスのINSTALL_MOD_PATH接頭辞。INSTALL_MOD_DIR/lib/modules/$(KERNELRELEASE)

詳細については、この回答の下部を参照してください。

外部モジュールの検索

検索範囲を上記のように絞り込むには、以下を含むパスをlocate印刷しますlib/modulexargsフィルタ出力ディレクトリ以外のパスへのパス。

最後に。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/

関連情報