/ proc / modulesで(F)とマークされたモジュール


9

3.10システムでは、/ proc / modulesにリストされている一部のモジュールに(F)のマークが付いています。その原因を知りたい(F)。モジュールが強制的にロードされておらず、カーネルでビルドされていたと思います。/ proc / modulesを作成するカーネルコードを教えてください。

usb_storage 56610 0 - Live 0xffffffffa005d000 (F)

このモジュールをアンロードしてリロードすると、(F)が消えます。


コード(まだそのビットを探している)の他に、これまでに見つけた次の最高のリソースは次の2つです。unixhelp.ed.ac.uk / CGI / man-cgi?proc+ 5tldp.org / HOWTO / html_single/ Module-HOWTO。これもやや便利です:centos.org/docs/5/html/Deployment_Guide-en-US/…–
slm

slmに感謝します。/ proc / modulesを参照するセクションの3番目のポインタは、メモリオフセットである6番目の列を説明しています。それはこの情報がプロファイラーによって使用されていると言います-これは私の問題です。モジュールが(F)とマークされている場合、プロファイラーは静かに動作を拒否します。
ステファンT.

回答:


11

からの出力の列は/proc/modules次のとおりです。

usb_storage 56610 0    -   Live 0xffffffffa005d000 (F)
  (1)        (2) (3)  (4)  (5)         (6)         (7)

注: 7番目の列のように見えるものについての言及は見つかりませんでしたが、6番目の列の説明(以下を参照)にはそこに表示されている情報が含まれていないため、ラベルを付けています。

抜粋-http ://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-proc-topfiles.html

  • 最初の列には、モジュールの名前が含まれています。
  • 2番目の列は、モジュールのメモリサイズをバイト単位で示します。
  • 3列目には、現在読み込まれているモジュールのインスタンス数が表示されます。ゼロの値は、アンロードされたモジュールを表します。
  • 4列目は、モジュールが機能するために存在する別のモジュールに依存しているかどうかを示し、それらの他のモジュールをリストします。
  • 5番目の列には、モジュールのロード状態がリストされています。可能な値は、ライブ、ロード、またはアンロードのみです。
  • 6番目の列は、ロードされたモジュールの現在のカーネルメモリオフセットを示します。この情報は、デバッグや、oprofileなどのプロファイリングツールに役立ちます。

でマークされている(F)列(つまり、7番目の列)は、このファイルのここから来ていると思います- panic.c

/**
 *  print_tainted - return a string to represent the kernel taint state.
 *
 *  'P' - Proprietary module has been loaded.
 *  'F' - Module has been forcibly loaded.
 *  'S' - SMP with CPUs not designed for SMP.
 *  'R' - User forced a module unload.
 *  'M' - System experienced a machine check exception.
 *  'B' - System has hit bad_page.
 *  'U' - Userspace-defined naughtiness.
 *  'D' - Kernel has oopsed before
 *  'A' - ACPI table overridden.
 *  'W' - Taint on warning.
 *  'C' - modules from drivers/staging are loaded.
 *  'I' - Working around severe firmware bug.
 *  'O' - Out-of-tree module has been loaded.
 *  'E' - Unsigned module has been loaded.
 *
 *  The string is overwritten by the next call to print_tainted().
 */

これらのコードは、kernel.txtリファレンスドキュメントにも存在するビットマスクの表現です。

tainted:

 Non-zero if the kernel has been tainted.  Numeric values, which
 can be ORed together:

    1 - A module with a non-GPL license has been loaded, this
        includes modules with no license.
        Set by modutils >= 2.4.9 and module-init-tools.
    2 - A module was force loaded by insmod -f.
        Set by modutils >= 2.4.9 and module-init-tools.
    4 - Unsafe SMP processors: SMP with CPUs not designed for SMP.
    8 - A module was forcibly unloaded from the system by rmmod -f.
   16 - A hardware machine check error occurred on the system.
   32 - A bad page was discovered on the system.
   64 - The user has asked that the system be marked "tainted".  This
        could be because they are running software that directly modifies
        the hardware, or for other reasons.
  128 - The system has died.
  256 - The ACPI DSDT has been overridden with one supplied by the user
         instead of using the one provided by the hardware.
  512 - A kernel warning has occurred.
 1024 - A module from drivers/staging was loaded.
 2048 - The system is working around a severe firmware bug.
 4096 - An out-of-tree module has been loaded.
 8192 - An unsigned module has been loaded in a kernel supporting module
        signature.

参考文献

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.