Moduł oznaczony (F) w / proc / modules

9

W moim systemie 3.10 niektóre moduły wymienione w / proc / modules są oznaczone (F). Chciałbym znaleźć przyczynę tego (F). Jestem pewien, że moduły nie zostały mocno załadowane i zostały zbudowane z jądrem. Czy mógłbyś wskazać jaki kod jądra tworzy / proc / modules?

usb_storage 56610 0 - Live 0xffffffffa005d000 (F)

Jeśli rozładuję i ponownie załaduję ten moduł, (F) zniknie.

Stephan T.
źródło
Oprócz kodu (wciąż szukającego tego bitu) następnymi najlepszymi zasobami, jakie do tej pory znalazłem, są 2: unixhelp.ed.ac.uk/CGI/man-cgi?proc+5 & tldp.org/HOWTO/html_single/ Moduł-HOWTO . Jest to również nieco przydatne: centos.org/docs/5/html/Deployment_Guide-en-US/…
slm
Dzięki slm. Trzeci wskaźnik w sekcji odnoszącej się do / proc / modules wyjaśnia szóstą kolumnę, która jest przesunięciem pamięci. Mówi, że te informacje są używane przez profilerów - to mój problem. Profiler po cichu odmawia pracy, gdy moduł jest oznaczony (F).
Stephan T.

Odpowiedzi:

11

Kolumny w danych wyjściowych /proc/modulessą następujące.

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

UWAGA: Nie znalazłem żadnej wzmianki o czymś, co wydaje się być siódmą kolumną, ale tak to nazywam, ponieważ opisy dla szóstej kolumny (patrz poniżej) nie obejmują informacji, które są tam wyświetlane.

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

  • Pierwsza kolumna zawiera nazwę modułu.
  • Druga kolumna odnosi się do wielkości pamięci modułu w bajtach.
  • Trzecia kolumna pokazuje, ile instancji modułu jest aktualnie załadowanych. Wartość zero oznacza nieobciążony moduł.
  • Czwarta kolumna stwierdza, czy moduł zależy od innego modułu, który będzie obecny w celu działania, i wymienia te inne moduły.
  • Piąta kolumna zawiera wykaz stanu obciążenia modułu: Aktywne, Ładowanie lub Rozładowywanie to jedyne możliwe wartości.
  • Szósta kolumna zawiera bieżące przesunięcie pamięci jądra dla załadowanego modułu. Informacje te mogą być przydatne do celów debugowania lub narzędzi profilowania, takich jak oprofile.

Wierzę, że kolumna oznaczona (F)(tj. Siódma kolumna) pochodzi stąd w tym pliku - 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().
 */

Te kody są reprezentacją maski bitowej, która jest również obecna w kernel.txtdokumentacji referencyjnej.

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.

Bibliografia

slm
źródło