Provided by: manpages-pl_4.27.0-1_all bug

NAZWA

       initrd - dysk RAM inicjowany przez program rozruchowy

KONFIGURACJA

       /dev/initrd  jest  urządzeniem  blokowym  tylko  do  odczytu,  z  przypisanym numerem głównym 1 i numerem
       pobocznym 250. Zwykle /dev/initrd jest własnością root:disk z trybem 0400 (dostęp do odczytu tylko  przez
       roota).  Jeśli  system  Linux  nie  posiada  utworzonego  /dev/initrd,  można  to  uczynić  następującymi
       poleceniami:

           mknod -m 400 /dev/initrd b 1 250
           chown root:disk /dev/initrd

       Aby korzystać z /dev/initrd, konieczne jest wkompilowanie bezpośrednio w jądro Linux obsługi  „RAM  disk”
       oraz  „Initial  RAM  disk”  (tj.  CONFIG_BLK_DEV_RAM=y  i  CONFIG_BLK_DEV_INITRD=y).  Gdy  korzysta się z
       /dev/initrd, sterownik dysku RAM nie może być załadowany jako moduł.

OPIS

       Specjalny plik /dev/initrd jest urządzeniem blokowym tylko do odczytu. Urządzenie jest dyskiem RAM, które
       jest inicjowane (np. ładowane) przez program rozruchowy przed uruchomieniem jądra. Jądro  może  następnie
       użyć zawartości /dev/initrd, w trakcie uruchamiania systemu, składającego się z dwóch faz.

       W  pierwszej  fazie  rozruchu,  jądro  uruchamia  i  montuje  pierwotny główny system plików z zawartości
       /dev/initrd (np. dysku RAM zainicjowanego przez program rozruchowy). W drugiej fazie dodatkowe sterowniki
       i inne moduły są ładowane  z  zawartości  urządzenia  pierwotnego  urządzenia  głównego.  Po  załadowaniu
       dodatkowych modułów, montowany jest nowy główny system plików (tj. zwykły korzeń systemu plików) z innego
       urządzenia.

   Działania rozruchowe
       Jeśli rozruch następuje z użyciem initrd, wygląda to następująco:

       (1)  Program rozruchowy ładuje do pamięci program jądra i zawartość /dev/initrd.

       (2)  Przy  uruchomieniu jądra, jądro rozpakowuje i kopiuje zawartość urządzenia /dev/initrd do urządzenia
            /dev/ram0, a następnie zwalnia pamięć użytą przez /dev/initrd.

       (3)  Jądro montuje następnie do odczytu i  zapisu  urządzenie  /dev/ram0  jako  pierwotny  główny  system
            plików.

       (4)  Jeśli  wskazany  zwykły  korzeń  systemu plików jest również pierwotnym głównym systemem plików (np.
            /dev/ram0) to jądro pomija ostatni krok zwykłej sekwencji rozruchowej.

       (5)  Jeśli w pierwotnym głównym systemie plików obecny jest plik wykonywalny /linuxrc, to  /linuxrc  jest
            wykonywany  z identyfikatorem użytkownika równym 0 (plik /linuxrc musi mieć ustawione uprawnienie do
            wykonania; plik /linuxrc  może  być  dowolnym  prawidłowym  plikiem  wykonywalnym,  w  tym  skryptem
            powłoki).

       (6)  Jeśli  /linuxrc  nie  jest  wykonywany  lub  gdy /linuxrc się zakończy, montowany jest zwykły korzeń
            systemu plików (jeśli /linuxrc wyjdzie z jakimkolwiek  systemem  plików  zamontowanym  w  pierwotnym
            głównym  systemie plików, to zachowanie jądra jest NIEZDEFINIOWANE; zob rozdział UWAGI, aby zapoznać
            się z bieżącym zachowaniem jądra).

       (7)  Jeśli  zwykły  korzeń  systemu  plików  posiada  katalog  /initrd,  to  urządzenie  /dev/ram0   jest
            przemieszczane  z  /  do  /initrd. W innym przypadku, jeśli katalog /initrd nie istnieje, urządzenie
            /dev/ram0 jest odmontowywane (przy przemieszczaniu z / do /initrd, /dev/ram0 nie jest odmontowywane,
            zatem mogą pozostać procesy działające z /dev/ram0; jeśli katalog /initrd nie  istnieje  na  zwykłym
            korzeniu  systemu  plików  i  pozostaną jakieś procesy działające z /dev/ram0, gdy /linuxrc wyjdzie,
            zachowanie jądra jest NIEZDEFINIOWANE; zob rozdział UWAGI, aby zapoznać się z  bieżącym  zachowaniem
            jądra).

       (8)  Na  zwykłym  korzeniu  systemu  plików  dokonywana  jest  zwykła sekwencja rozruchowa (np. wywołanie
            /sbin/init).

   Opcje
       Gdy korzysta się z initrd, wpływ na działanie w trakcie uruchomienia  jądra,  mają  następujące  opcje  z
       programu rozruchowego:

       initrd=nazwa-pliku
              Określa  plik,  z  którego  załadowana zostanie zawartość /dev/initrd. W przypadku LOADLIN jest to
              opcja wiersza poleceń. W LILO konieczne jest użycie tego polecenia w  pliku  konfiguracyjnym  LILO
              /etc/lilo.config.  Nazwa  pliku  podana  w  tej  opcji będzie zwykle skompresowanym za pomocą gzip
              obrazem systemu plików.

       noinitrd
              Opcja rozruchowa wyłącza rozruch składający się z  dwóch  faz.  Jądro  wykonuje  zwykłą  sekwencję
              rozruchową,  jak  gdyby  /dev/initrd nie był zainicjowany. Dzięki tej opcji, zawartość /dev/initrd
              załadowana do pamięci przez program rozruchowy jest zachowywana. Opcja  pozwala,  aby  zawartością
              /dev/initrd  były  dowolne  dane, niekonieczne obraz systemu plików. Jednak urządzenie /dev/initrd
              jest tylko do odczytu i może być odczytane jedynie jednokrotnie po uruchomieniu systemu.

       root=nazwa-urządzenia
              Określa urządzenie, które będzie służyło jako zwykły główny system  plików.  W  przypadku  LOADLIN
              jest to opcja wiersza poleceń. W LILO konieczne jest użycie tego polecenia w pliku konfiguracyjnym
              LILO  /etc/lilo.config.  Urządzenie  podane  w  tej  opcji  musi  być urządzeniem do zamontowania,
              posiadającym odpowiedni główny system plików.

   Zmienianie zwykłego głównego systemu plików
       Domyślnie, w przypadku zwykłych głównych systemów plików, używane są ustawienia jądra  (np.  ustawione  w
       pliku jądra za pomocą rdev(8) lub wkompilowane w plik jądra) lub opcje programu rozruchowego. W przypadku
       zwykłego  głównego  systemu  plików  montowanego  jako  NFS,  konieczne  jest  użycie  opcji rozruchowych
       nfs_root_name i nfs_root_addrs, aby przekazać ustawienia NFS. Więcej informacji o głównym systemie plików
       jako  NFS  znajduje  się  w  pliku  dokumentacji  jądra  Documentation/filesystems/nfs/nfsroot.txt   (lub
       Documentation/filesystems/nfsroot.txt  przed  Linuksem 2.6.33). Więcej informacji o ustawieniach głównego
       systemu plików znajduje się też w dokumentacji LILO i LOADLIN.

       Możliwe jest również, aby plik wykonywalny /linuxrc zmienił zwykłe urządzenie główne. Aby  /linuxrc  mógł
       zmienić  zwykłe  urządzenie  główne,  musi być zamontowany /proc. Po zamontowaniu /proc, /linuxrc zmienia
       zwykłe    urządzenie    główne    zapisując    do    plików     proc:     /proc/sys/kernel/real-root-dev,
       /proc/sys/kernel/nfs-root-name  oraz  /proc/sys/kernel/nfs-root-addrs.  W przypadku fizycznego urządzenia
       głównego, urządzenie główne jest zmieniane, przez  zapisanie  przez  /linuxrc  numeru  urządzenia  nowego
       korzenia  systemu  plików do pliku /proc/sys/kernel/real-root-dev. W przypadku głównego systemu plików na
       NFS,  urządzenie  główne  jest  zmieniane  przez  zapisanie  przez  /linuxrc  ustawień  NFS   do   plików
       /proc/sys/kernel/nfs-root-name  oraz  /proc/sys/kernel/nfs-root-addrs,  a  następnie  zapisanie 0xff (np.
       numeru pseudourządzenia  NFS)  do  pliku  /proc/sys/kernel/real-root-dev.  Przykładowo,  poniższy  wiersz
       polecenia powłoki zmieniłby zwykłe urządzenie główne na /dev/hdb1:

           echo 0x365 >/proc/sys/kernel/real-root-dev

       W  przykładzie  dla  NFS, poniższe wiersze poleceń powłoki zmieniłyby zwykłe urządzenie główne na katalog
       NFS /var/nfsroot na serwerze NFS sieci lokalnej, o numerze IP  193.8.232.7,  dla  systemu  o  numerze  IP
       193.8.232.2, o nazwie „idefix”:

           echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
           echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \
               >/proc/sys/kernel/nfs-root-addrs
           echo 255 >/proc/sys/kernel/real-root-dev

       Uwaga:  Korzystanie z /proc/sys/kernel/real-root-dev do zmiany głównego systemu plików jest przestarzałe.
       Plik Documentation/admin-guide/initrd.rst (lub Documentation/initrd.txt przed Linuksem 4.10)  w  źródłach
       jądra Linux oraz podręczniki pivot_root(2) i pivot_root(8) opisują współczesne metody zmieniania głównego
       systemu plików.

   Użycie
       Główną  motywacją  implementacji  initrd  było  umożliwienie,  aby konfiguracja jądra była modularna przy
       instalacji systemu.

       Oto możliwy scenariusz instalacji systemu:

       (1)  Program rozruchowy jest uruchamiany z dyskietki lub  innego  nośnika  z  minimalnym  jądrem  (np.  z
            obsługą  /dev/ram,  /dev/initrd  oraz  systemu  plików  ext2) i ładuje /dev/initrd ze spakowaną gzip
            wersją pierwotnego systemu plików.

       (2)  Plik wykonywalny /linuxrc określa, co jest wymagane do (1) zamontowania  zwykłego  głównego  systemu
            plików (tj. typ urządzenia, sterowniki urządzenia, system plików) oraz (2) nośnika instalacyjny (np.
            płyta,  sieć,  taśma,  ...). Może tego dokonać pytając użytkownika, sprawdzając samemu lub łącząc te
            dwa podejścia.

       (3)  Plik wykonywalny /linuxrc ładuje wymagane moduły dla początkowego głównego systemu plików.

       (4)  Plik wykonywalny /linuxrc tworzy i wypełnia główny system plików (na tym etapie zwykły główny system
            plików nie musi być jeszcze kompletny).

       (5)  Plik wykonywalny /linuxrc ustawia /proc/sys/kernel/real-root-dev, odmontowuje /proc,  zwykły  główny
            system plików i inne zamontowane przez niego systemy plików, a następnie kończy działanie.

       (6)  Następnie jądro montuje zwykły główny system plików.

       (7)  System plików jest teraz dostępny i kompletny, zatem można zainstalować program rozruchowy.

       (8)  Program  rozruchowy  jest konfigurowany do załadowania do /dev/initrd systemu plików, który ma zbiór
            modułów, których użyto do uruchomienia systemu (np. urządzenie  /dev/ram0  może  być  zmodyfikowane,
            następnie odmontowane, a na końcu obraz jest zapisywany z /dev/ram0 do pliku).

       (9)  System jest teraz gotowy do rozruchu i mogą nastąpić dodatkowe zadania instalacyjne.

       Kluczową  rolą  /dev/initrd  w  powyższym  opisie  jest korzystanie z danych konfiguracyjnych ze zwykłego
       działania systemu, bez konieczności:  początkowego  wyboru  jądra,  korzystania  z  przeładowanego  jądra
       uniwersalnego lub rekompilacji jądra.

       Drugi scenariusz występuje w przypadku instalacji, gdy Linux działa na systemach z różnymi konfiguracjami
       sprzętowymi, w jednolicie administrowanej sieci. W takich przypadkach, może być pożądane, aby korzystać z
       niewielkiego  zbioru  jąder  (a  najlepiej  jednego) i minimalizować wielkość informacji konfiguracyjnych
       danego systemu. Wówczas odmienny może być tylko plik /linuxrc albo plik przez /linuxrc wykonywany.

       Trzeci scenariusz to poręczniejsze dyski odzyskiwania. Ponieważ informacje takie jak  położenie  partycji
       głównego  systemu  plików  nie  są  wymagane  w  czasie  rozruchu,  system  załadowany z /dev/initrd może
       wyświetlić pytanie i/lub skorzystać z autowykrywania, ewentualnie sprawdzając je następnie.

       W końcu, co nie mniej istotne, dystrybucje Linuksa na płytach mogą  korzystać  z  initrd  w  celu  łatwej
       instalacji z tego nośnika. Dystrybucja może użyć LOADLIN, aby bezpośrednio załadować /dev/initrd z płyty,
       bez  konieczności korzystania z dyskietek. Dystrybucja może też korzystać z dyskietki rozruchowej LILO, a
       następnie załadować (poprzez bootstrap) większy dysk RAM za pomocą /dev/initrd z płyty.

PLIKI

       /dev/initrd
       /dev/ram0
       /linuxrc
       /initrd

UWAGI

       •  W bieżącym jądrze, wszelkie systemy plików, które pozostaną zamontowane przy przeniesieniu /dev/ram0 z
          / do /initrd będą wciąż dostępne. Wpisy /proc/mounts nie są jednak aktualizowane.

       •  W bieżącym jądrze, jeśli katalog /initrd nie istnieje, to /dev/ram0 nie zostanie w pełni  odmontowane,
          jeśli  /dev/ram0  jest  używany  przez  jakikolwiek  proces lub zamontowano w nim system plików. Jeśli
          /dev/ram0 nie jest w pełni odmontowane, to /dev/ram0 pozostanie w pamięci.

       •  Użytkownicy /dev/initrd nie powinni polegać na zachowaniu opisanym w powyższych uwagach. Może się  ono
          zmienić w kolejnych wersjach jądra Linux.

ZOBACZ TAKŻE

       chown(1), mknod(1), ram(4), freeramdisk(8), rdev(8)

       Documentation/admin-guide/initrd.rst  (lub Documentation/initrd.txt przed Linuksem 4.10) w drzewie źródeł
       jądra Linux, dokumentacja LILO, dokumentacja LOADLIN, dokumentacja SYSLINUX

TŁUMACZENIE

       Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.9.1                          15 czerwca 2024 r.                                      initrd(4)