Provided by: manpages-pl_20051117-1_all bug

NAZWA

       insmod - instaluje ładowalny moduł jądra

SKŁADNIA

       insmod  [-fhkLmnpqrsSvVxXyY]  [-e nazwa_przechowalni] [-o nazwa_modułu]
       [-O nazwa_blob] [-P przedrostek] moduł [ symbol=wartość ... ]

OPIS

       insmod instaluje ładowalny moduł do działającego jądrze.

       insmod próbuje dołączyć moduł  do  uruchomionego  jądra  systemu  przez
       rozwiązanie wszystkich symboli z tabeli udostępnianych symboli jądra.

       Jeśli  nazwa  pliku  modułu,  podana  jest bez katalogu i rozszerzenia,
       insmod będzie szukał modułu w  kilku  standardowych  katalogach.  Można
       użyć zmiennej środowiska MODPATH aby zmienić to standardowe zachowanie.
       Jeśli istnieje plik konfiguracyjny modułów taki, jak  /etc/modules.conf
       (lub (przestarzały) /etc/conf.modules), ścieżki w nim zdefiniowane będą
       miały priorytet nad zdefiniowanymi w MODPATH.
       Można również posłużyć się zmienną środowiska MODULECONF  dla  wybrania
       innego  pliku  konfiguracyjnego  niż standardowy /etc/modules.conf (lub
       (przestarzały) /etc/conf.modules).  Ta zmienna środowiska będzie  miała
       priorytet nad wszystkimi powyższymi definicjami.

   OPCJE
       -f --force
              Usiłuje załadować moduł nawet jeśli wersja uruchomionego jądra i
              jądra dla którego moduł został skompilowany  nie  zgadzają  się.
              Powoduje  to jedynie wyłączenie kontroli zgodności wersji. Opcja
              ta nie ma  wpływu  na  sprawdzanie  nazw  symboli.  Jeśli  nazwy
              symboli  w  module  nie  zgadzają się z kernelem, wymuszenie nie
              jest możliwe.

       -h --help
              Wypisuje tekst pomocy.

       -k --autoclean
              Ustawia  dla  danego  modułu  atrybut  automatycznego  usuwania.
              kerneld(8)  usunie każdy moduł z tym atrybutem, jeśli nie będzie
              on używany przez pewien okres czasu -- zazwyczaj jedną minutę.

       -L --lock
              Za pomocą flock(2) zapobiega jednoczesnemu łądowaniu tego samego
              modułu.

       -m --map
              Wypisuje  odwzorowanie  ładowanych  symboli,  które może pomóc w
              odszukaniu usterki w przypadku wystąpienia błędu  jądra  (kernel
              panic).

       -n --noload
              Symulacja  pracy, wykonuje wszystko oprócz załadowania modułu do
              jądra. Jeśli  wywołane  z  -m  lub  -O,  w  wyniku  uruchomienia
              powstanie  odwzorowanie  symboli  lub plik z kopią kodu modułu w
              jądrze (blob).  Ze  względu  na  fakt,  że  moduł  nie  zostanie
              załadowany,  rzeczywisty  adres  jądra,  pod  którym moduł byłby
              załadowany  pozostanie  nieznany,  więc   zarówno   odwzorowanie
              symboli,  jak  i  plik  blob  zostaną oparte na z góry ustalonym
              adresie 0x12340000.

       -p --probe
              Sprawdza,  czy  moduł  może  zostać  załadowany  bez   kłopotów.
              Obejmuje  to  znalezienie  modułu  w  ścieżce  wyszukiwania  dla
              modułów, sprawdzanie numerów wersji i rozwiązanie  symboli.  nie
              są  sprawdzane  przesunięcia  ani  nie  są tworzone odwzorowanie
              symboli i plik blob.

       -q --quiet
              Nie wypisuje listy  nierozwiązanych  symboli.   Nie  narzeka  na
              niezgodne   wersje.   Wystąpienie   problemu   zostanie  jedynie
              uwidocznione w kodzie zakończenia programu insmod.

       -r --root
              Niektórzy użytkownicy kompilują moduły jako użytkownik inny  niż
              root,  a  następnie  instalują  je  jako  root.  W  wyniku  tego
              właścicielem modułów  nie  będzie  root,  nawet  jeśli  jest  on
              właścicielem   katalogu   modułów.   Jeśli  dopuści  się  innego
              użytkownika niż root  jako  właściciela  modułów,  umożliwi  się
              nieproszonemu  gościowi nadpisanie istniejących modułów będących
              własnością tego użytkownika i wykorzystanie  załadowania  go  do
              uzyskania uprawnień roota.

              Domyślnie,   modutils   odrzucą  próbę  załadowania  modułu  nie
              należącego do root-a. Podanie -r zniesie błąd i pozwoli root-owi
              załadować moduły, które nie są jego własnością.  Uwaga: domyślne
              wartość opcji sprawdzania, czy właścicielem jest root  może  być
              zmieniona podczas konfiguracji modutils.

              Używanie  -r  do  wyłączenia  sprawdzania, czy właścicielem jest
              root lub ustawienie wartości domyślnej na  "nie  sprawdzaj,  czy
              właścicielem  jest  root"  podczas  konfiguracji stanowi poważne
              naruszenie bezpieczeństwa i nie jest zalecane.

       -s --syslog
              Wyprowadza wszystko do syslog(3) zamiast na terminal.

       -S --kallsyms
              Wymusza, aby ładowany moduł zawierał dane  kallsyms,  nawet  gdy
              jądro  ich  nie obsługuje. Ta opcja jest przeznaczona dla małych
              systemów, gdzie jądro jest ładowane  bez  danych  kallsyms,  ale
              wybrane moduły potrzebują kallsyms dla poszukiwania usterek.

       -v --verbose
              Włącza wyświetlanie dużej ilości informacji.

       -X --export, -x --noexport
              Odpowiednio,  udostępnia  lub  nie  wszystkie symbole zewnętrzne
              modułów.  Standardowo, symbole  są  udostępniane.  Ta  opcja  ma
              jedynie  znaczenie,  gdy  moduł sam jawnie nie udostępnia swojej
              własnej tabeli symboli i dlatego jest w zaniku.  -Y  --ksymoops,
              -y --noksymoops Dodaje/nie dodaje do ksyms symboli dla ksymoops.
              Symbole te  są  używane  przez  ksymoops  aby  zapewnić  większe
              możliwości  poszukiwania  usterek, gdy wystąpi w tym module Oops
              (błąd   kernela).   Standardowo,   symbole   dla   ksymoops   są
              zdefiniowane. Ta opcja jest niezależna od opcji -X/-x.

              Symbole  dla  ksymoops  zwiększają  ładowany  moduł  o około 260
              bajtów. O  ile  nie  cierpi  się  na  wyrażny  brak  przestrzeni
              adresowej kernela i nie próbuje się zminimalizować ksyms, należy
              przyjąć  wartość  domyślną  i  otrzymywać  bardziej   precyzyjne
              informacje  o  usterkach  w  razie Oops. Symbole dla ksymoops są
              niezbędne, aby w sposób trwały przechowywać dane modułów.

       -o nazwa_modułu --name=nazwa_modułu
              Podanie jawne nazwy modułu, zamiast wywodzenia jej z podstawowej
              części nazwy pliku z modułem.

       -O nazwa_blob --blob=nazwa_blob
              Zachowuje  obiekt  binarny  w nazwa_blob.  Wynikiem jest binarny
              blob  (bez  nagłówków  ELF)  pokazujący,  co  dokładnie  zostało
              załadowane    do    kernela    po   manipulacjach   sekcjami   i
              przesunięciach.  Zaleca się opcję -m, aby otrzymać  odwzorowanie
              symboli obiektu.

       -P przedrostek --prefix=przedrostek
              Ta opcja może być używana z wersjonowanymi modułami, przy jądrze
              SMP lub jądrze z obsługą wysokiej pamięci (bigmem), gdyż wówczas
              do  nazw  symboli  modułów  dodawany jest dodatkowy przedrostek.
              Jeśli jądro zostało zbudowane  z  wersjonowanymi  symbolami,  to
              insmod   automatycznie   wyciągnie   przedrostek   z   definicji
              "get_module_symbol" lub "inter_module_get", z których jeden musi
              istnieć  w  dowolnym  kernelu obsługującym moduły. Jeśli symbole
              jądra  nie  są  wersjonowane,  a  moduł   został   zbudowany   z
              wersjonowanymi symbolami, to użytkownik musi podać -P.

       -e nazwa_przechowalni --persist=nazwa_przechowalni
              Określa, skąd powinny być odczytane jakiekolwiek trwałe dane dla
              modułu  podczas  jego  ładowania  i  gdzie  powinny  one  zostać
              zapisane,  gdy ta kopia modułu będzie usuwana z jądra.  Opcja ta
              jest milcząco ignorowana, gdy moduł nie posiada  żadnych  trwale
              przechowywanych  danych. Trwałe dane są odczytywane przez insmod
              jedynie, gdy ta opcja zostanie  podana.  Domyślnie,  insmod  nie
              przetwarza  żadnych  trwałych  danych.   Skrócona  forma:  -e ""
              (pusty łańcuch) jest interpretowana przez  insmod  jako  wartość
              persistdir  (zobacz  modules.conf(5)), po której występuje nazwa
              pliku  modułu,  względem  ścieżki,   w   której   moduł   został
              znaleziony,  z pominięciem końcowych '.gz', '.o' i '.mod'. Jeśli
              zostanie podane persistdir= (tzn. persistdir jest pustym  polem)
              wówczas ta forma skrócona zostanie milcząco zignorowana.

   PARAMETRY MODUŁÓW
       Niektóre z modułów akceptują podawanie im parametrów w czasie ładowania
       w  celu  dostosowania  ich  do  określonych   warunków   pracy.    Tymi
       parametrami  najczęściej  są adresy portów I/O i numery przerwań, które
       zmieniają się w zależności od sprzętu,  a  których  detekcja  nie  jest
       możliwa.

       W  modułach  zbudowanych  dla jąder seri 2.0, jakikolwiek symbol będący
       wskaźnikiem do typu całkowitego lub  znakowego  może  być  potraktowany
       jako  parametr  i  zmodyfikowany.  Poczynając  od  jąder  2.1,  symbole
       stanowiące  parametry  są  jawnie  zaznaczone,  aby   tylko   określone
       parametry mogły być modyfikowane. Co więcej, podawana jest informacja o
       typie parametru aby przy ładowaniu można było ją skontrolować.

       W przypadku wartości całkowitych, wszystkie wartości mogą zostać podane
       dziesiętnie,  ósemkowo  lub szenastkowo np.: 17, 021 lub 0x11.  Tablice
       wartości  podajemy  jako  ciąg  elementów  rozdzielonych   przecinkami;
       elementy mogą być pominięte przez ominięcie ich wartości.

       W  modułach  serii  2.0,  wartości  które  nie  zaczynają  się od cyfry
       traktowane są jako łańcuchy. Poczynając  od  jąder  2.1,  informacja  o
       typie  parametru  wskazuje  czy  wartość  ma  być  interpretowana  jako
       łańcuch. Jeśli wartość zaczyna się  od  cudzysłowu  ("),  łańcuch  jest
       interpretowany  jak w C, sekwencje ucieczkowe i in. Należy zauważyć, że
       przy  podawaniu  parametrów  z  linii  poleceń  powłoki,  może  istnieć
       potrzeba  zabezpieczenia  samych  cudzysłowów przed interpretacją przez
       powłokę.

   MODUŁY I SYMBOLE NA LICENCJI GPL
       Począwszy od jądra 2.4.10, moduły powinny zawierać łańcuch będący nazwą
       licencji, zdefiniowany za pomocą MODULE_LICENSE(). Niektóre łańcuchy są
       rozpoznawane jako zgodne z GPL, wszelkie inne  łańcuchy  licencji,  lub
       brak  licencji  oznaczają,  że  moduł jest traktowany jako zastrzeżony.
       Zajrzyj do include/linux/module.h po listę  zgodnych  z  GPL  łańcuchów
       licencji.

       Jeśli  jądro  obsługuje  znacznik  /proc/sys/kernel/tainted  to  insmod
       podczas ładowania modułu nie na licencji GPL, wykona  operację  OR  dla
       znacznika  tainted (skażony) i '1'. Jeśli kernel obsługuje skażenia, to
       podczas ładowania modułu bez licencji  wypisane  zostanie  ostrzeżenie;
       ostrzeżenie   będzie   wypisywane   zawsze,   nawet   przy   starszych,
       nieobsługujących   skażeń,   jądrach,   dla    modułów    posiadających
       MODULE_LICENSE()  niezgodne  z  GPL.   Minimalizuje to liczbę ostrzeżeń
       podczas używania nowych modutils ze starymi jądrami.

       Tryb insmod -f (wymuszenie) przy jądrach obsługujących skażenia, będzie
       zawsze  powodować  wykonanie OR dla znacznika tainted i '2', zawsze też
       będzie wypisywane ostrzeżenie.

       Niektórzy autorzy kodu jądra wymagają, aby symbole  udostępniane  przez
       ich  kod  mogły  być  wykorzystywane wyłącznie przez moduły na licencji
       zgodnej z GPL.  Symbole  te  są  udostępniane  przez  EXPORT_SYMBOL_GPL
       zamiast  zwykłego  EXPORT_SYMBOL.  Symbole "tylko dla GPL" udostępniane
       przez kernel i inne  moduły  są  widziane  wyłącznie  przez  moduły  na
       licencji  zgodnej  z  GPL.  Symbole  te  pojawią  się  w  /proc/ksyms z
       przedrostkiem 'GPLONLY_'.  Podczas ładowania  modułu  na  licencji  GPL
       insmod  ignoruje  przedrostek GPLONLY_ dla symboli, więc ładowany moduł
       odwołuje się po prostu  do  zwykłej  nazwy  symbolu,  bez  przedrostka.
       Symbole  "tylko  dla  GPL" stały się niedostępne dla modułów o licencji
       niezgodnej z GPL, włączając w to moduły bez jakiejkolwiek licencji.

   POMOC KSYMOOPS
       Aby pomóc w analizie Oopsów (błędów) jądra  podczas  używania  modułów,
       insmod  domyślnie  dodaje  kilka  symboli  do  ksyms,  zobacz opcja -Y.
       Symbole te zaczynają się od  __insmod_nazwamoduu_.   nazwamoduu  jest
       niezbędna,  aby  symbol  był  unikalny,  dozwolone  jest ładowanie tego
       samego obiektu więcej niż raz  podając  różne  nazwy  modułu.   Obecnie
       zdefiniowane są symbole

       __insmod_nazwamoduu_Oplikobiektu_Mczas_Vwersja

       plikobiektu  jest  nazwą  pliku  z  którego  moduł  został  załadowany.
       Zapewnia to, że ksymoops dopasuje kod do właściwego obiektu. czas  jest
       podanym  szesnastkowo  znacznikiem czasu ostatniej modyfikacji dla tego
       pliku, zero gdy stat zakończy  się  niepomyślnie.  wersja  jest  wersją
       jądra,  dla  której  moduł  skompilowano,  -1,  gdy  numer  wersji jest
       niedostpny. Symbol _O posiada taki sam adres początkowy,  jak  nagłowek
       modułu.

       __insmod_nazwamoduu_Snazwasekcji_Ldugo

       Symbol  ten  pojawia  się  na  początku  wybranych  sekcji ELF, obecnie
       rozmiarze. nazwasekcji jest nazwą sekcji ELF, dugo jest jej  podanym
       dziesiętnie   rozmiarem.   Symbole   te  pomagają  programowi  ksymoops
       odwzorować adresy w sekcjach, w których nie są dostępne żadne  symbole.

       __insmod_nazwamoduu_Pnazwa_przechowalni

       Tworzone  przez  insmod  jedynie  gdy  moduł  posiada  jeden lub więcej
       parametrów  oznaczonych  jako  trwałe  dane  i   jest   dostępny   plik
       przechowujący te trwałe dane (patrz -e powyżej).

       Inny  problem  przy  analizie  Oops  jądra  polega na tym, że zawartość
       /proc/ksyms i  /proc/modules  cmoże  się  zmienić  pomiędzy  Oopsami  i
       podczas przetwarzania pliku logu. Aby pomóc pokonać ten problem, insmod
       i rmmod będą automatycznie  kopiować  /proc/ksyms  i  /proc/modules  do
       /var/log/ksymoops  o  ile  katalog  /var/log/ksymoops  istnieje. Będzie
       stosowany przedrostek `date +%Y%m%d%H%M%S`. Administrator systemu  może
       podać  ksymoops, który zrzut plików ma być użyty podczas analizy Oopsa.
       Nie ma przełącznika  wyłączającego  to  automatyczne  kopiowanie,  więc
       jeśli   nie   powinno  ono  występować,  nie  należy  tworzyć  katalogu
       /var/log/ksymoops.  Jeśli  ten  katalog  istnieje,  powinien   on   być
       własnością  roota,  mieć  prawa dostępu 644 lub 600 i należy uruchamiać
       codziennie, lub w podobnych odstępach czasu, poniższy skrypt.  Jest  on
       zainstalowany jako insmod_ksymoops_clean.

         #!/bin/sh
         # Usuwa zachowane zawartości ksyms i modules nie używane przez 2 dni
         if [ -d /var/log/ksymoops ]
         then
              set -e
              # Upewnia się, że zawsze zostanie co najmniej jedna wersja
              d=`date +%Y%m%d%H%M%S`
              cp -a /proc/ksyms /var/log/ksymoops/${d}.ksyms
              cp -a /proc/modules /var/log/ksymoops/${d}.modules
              find /var/log/ksymoops -type f -atime +2 -exec rm {} \;
         fi

ZOBACZ TAKŻE

       rmmod(8),   modprobe(8),  depmod(8),  lsmod(8),  ksyms(8),  modules(2),
       genksyms(8), kerneld(8), ksymoops(kernel).

HISTORIA

       Wsparcie dla modułów zostało zapoczątkowane przez Anonima
       Pierwsza  wersja   Linuksowa   przygotowana   przez   Basa   Laarhovena
       <bas@vimec.nl>
       Wersja 0.99.14 przygotowana przez Jona Tombsa <jon@gtex02.us.es>
       Rozbudowana przez Bjorna Ekwalla <bj0rn@blox.se>
       Pierwotna pomoc dla ELF od Erica Youngdale'a <eric@aib.com>
       Aktualizowna do 2.1.17 przez Richarda Hendersona <rth@tamu.edu>
       Rozszerzona  przez  Bjorna Ekwalla <bj0rn@blox.se> dla modutils-2.2.* w
       marcu 1999
       Pomocy przy ksymoops udzielił Keith Owens <kaos@ocs.com.au> w maju 1999
       Zarządza: Keith Owens <kaos@ocs.com.au>.