Provided by: manpages-pl_20060617-4_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_nazwamodułu_.  nazwamodułu 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_nazwamodułu_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_nazwamodułu_Snazwasekcji_Ldługość

       Symbol ten pojawia się na początku wybranych sekcji ELF, obecnie .text, .rodata,  .data  i
       .bss.  Pojawia  sie  on  jedynie w sekcjach o niezerowym rozmiarze. nazwasekcji jest nazwą
       sekcji ELF, długość 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_nazwamodułu_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>.

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia  Manuali  i  może
       nie  być  aktualne.  W  razie  zauważenia  różnic  między  powyższym opisem a rzeczywistym
       zachowaniem opisywanego programu lub  funkcji,  prosimy  o  zapoznanie  się  z  oryginalną
       (angielską) wersją strony podręcznika.