Provided by: manpages-de_2.5-1_all bug

BEZEICHNUNG

       initrd - vom Boot-Loader initialisierte RAM-Disk

KONFIGURATION

       /dev/initrd  ist  ein  nur  lesbares  Blockgerät  mit  der  Major-Nummer  1  und  der  Minor-Nummer  250.
       Typischerweise ist der Besitzer von /dev/initrd root.disk;  die  Zugriffsrechte  sind  auf  0400  gesetzt
       (Lesezugriff nur für root). Wenn /dev/initrd nicht schon im Linux-System eingerichtet wurde, kann sie mit
       den folgenden Befehlen erstellt werden:

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

       Auch muss Unterstützung für sowohl »RAM-Disk« als auch »Initial RAM Disk« (z. B. CONFIG_BLK_DEV_RAM=y und
       CONFIG_BLK_DEV_INITRD=y)  direkt in den Linux-Kernel kompiliert werden, um /dev/initrd zu verwenden. Wird
       /dev/initrd verwendet, kann der RAM-Disk-Treiber nicht als Modul geladen werden.

BESCHREIBUNG

       Die Spezialdatei /dev/initrd ist ein nur lesbares Blockgerät. Dieses Gerät ist  eine  RAM-Disk,  die  vom
       Boot-Loader  initialisiert (z.B. geladen) wird, bevor der Kernel gestartet wird. Der Kernel kann dann den
       Inhalt von /dev/initrd für einen zweiphasigen Systemstart verwenden.

       In der ersten Phase  startet  der  Kernel  und  bindet  ein  erstes  Root-Dateisystem  mit  Inhalten  von
       /dev/initrd  ein  (z.  B.  die  vom  Boot-Loader  initialisierte  RAM-Disk).  In der zweiten Phase werden
       zusätzliche Treiber oder andere Module aus dem Inhalt des ersten Root-Geräts geladen. Nach dem Laden  der
       zusätzlichen  Module  wird  ein  neues  Root-Dateisystem  (d.  h. das normale Root-Dateisystem) von einem
       anderen Gerät eingebunden.

   Der Boot-Vorgang
       Beim Booten mit initrd startet das System wie folgt:

       1. Der Boot-Loader lädt den Kernel und den Inhalt von /dev/initrd in den Speicher.

       2. Wenn der Kernel startet, dekomprimiert und kopiert er den Inhalt des  Gerätes  /dev/initrd  auf  Gerät
          /dev/ram0 und gibt dann den Speicher frei, den /dev/initrd belegte.

       3. Der Kernel bindet dann das Gerät /dev/ram0 schreib- und lesbar als anfängliches Root-Dateisystem ein.

       4. Wenn  das  angegebene  normale  Root-Dateisystem  auch  das  anfängliche  Root-Dateisystem  ist  (z.B.
          /dev/ram0), springt der Kernel zum letzten Schritt für die übliche Boot-Sequenz.

       5. Wenn im anfänglichen Root-Dateisystem die ausführbare Datei /linuxrc vorhanden ist, wird sie mit UID 0
          ausgeführt. (Die Datei /linuxrc muss über Ausführungsrechte verfügen. Sie kann eine beliebige gültige,
          ausführbare Datei sein, also auch ein Shell-Skript.)

       6. Wenn /linuxrc nicht ausgeführt oder wenn /linuxrc beendet  wird,  wird  das  normale  Root-Dateisystem
          eingebunden.  (Wenn  /linuxrc  beendet  wird,  wenn noch Dateisysteme im anfänglichen Root-Dateisystem
          eingehängt sind, dann ist das Verhalten des Kernels NICHT FESTGELEGT; siehe den Abschnitt  ANMERKUNGEN
          für das aktuelle Kernel-Verhalten.)

       7. Wenn  im normalen Root-Dateisystem ein Verzeichnis /initrd vorhanden ist, wird das Gerät /dev/ram0 von
          / auf /initrd gelegt. Wenn das Verzeichnis /initrd nicht  vorhanden  ist,  wird  das  Gerät  /dev/ram0
          ausgehängt.  (Wenn  /dev/ram0  von / nach /initrd verschoben wird, wird /dev/ram0 nicht ausgehängt und
          damit können Prozesse weiterhin von /dev/ram0 ausgeführt werden. Wenn das  Vorzeichnis  /initrd  nicht
          auf  dem  normalen  Root-Dateisystem  existiert  und  noch weiterhin Prozesse von /dev/ram0 ausgeführt
          werden, wenn /linuxrc sich beendet,  ist  das  Verhalten  des  Kernels  NICHT  FESTGELEGT;  siehe  den
          Abschnitt ANMERKUNGEN für das aktuelle Kernel-Verhalten.)

       8. Die  übliche  Boot-Sequenz  (z.B.  Aufruf  von  /sbin/init)  wird  auf  dem  normalen Root-Dateisystem
          durchgeführt.

   Optionen
       Die folgenden Optionen des Boot-Loaders wirken sich auf das Verhalten des Kernels beim  Systemstart  aus,
       wenn sie mit initrd verwendet werden:

       initrd=Dateiname
              Gibt  die  Datei  an,  die  als  Inhalt  von  /dev/initrd  geladen  wird. Für LOADLIN ist das eine
              Befehlszeilenoption.  Für  LILO  müssen  Sie  diesen  Befehl   in   der   LILO-Konfigurationsdatei
              /etc/lilo.config  verwenden.  Die  mit  dieser  Option  angegebene  Datei  ist  typischerweise ein
              komprimiertes Dateisystem-Abbild.

       noinitrd
              Diese  Boot-Option  deaktiviert  den  zweiphasigen  Systemstart.  Der  Kernel  führt  die  übliche
              Boot-Sequenz aus, als ob /dev/initrd nicht initialisiert wurde. Mit dieser Option bleiben alle vom
              Boot-Loader  in  den Speicher geladenen Inhalte von /dev/initrd erhalten. Diese Option ermöglicht,
              dass  der  Inhalt  von  /dev/initrd  aus  beliebigen   Daten   bestehen   kann   und   nicht   auf
              Dateisystem-Abbilder  beschränkt  sein muss. Allerdings ist das Gerät /dev/initrd schreibgeschützt
              und kann nur einmal nach dem Systemstart gelesen werden.

       root=Gerätename
              Gibt das Gerät an, das als normales Root-Dateisystem verwendet werden soll. Für LOADLIN  ist  dies
              ist  eine  Befehlszeilen-Option. Für LILO kann diese Option beim Systemstart oder als Optionszeile
              in  der  LILO-Konfigurationsdatei  /etc/lilo.config  verwendet  werden.  Das  durch  diese  Option
              angegebene Gerät muss eingehängt werden können und ein geeignetes Root-Dateisystem enthalten.

   Wechsel des normalen Root-Dateisystems
       Standardmäßig  werden die Kernel-Einstellungen (z. B. mit rdev(8) in der Kernel-Datei gesetzt oder in die
       Kernel-Datei kompiliert) oder die Options-Einstellungen des Boot-Loaders für das normale Root-Dateisystem
       verwendet.  Für  ein  über  NFS  eingebundenes  normales  Root-Dateisystem   müssen   die   Boot-Optionen
       nfs_root_name  und  nfs_root_addrs  genutzt  werden,  um  die NFS-Einstellungen zu übergeben. Für weitere
       Informationen über via NFS eingebundene Root-Dateisysteme lesen Sie die Kernel-Dokumentation in der Datei
       Documentation/filesystems/nfs/nfsroot.txt (oder Documentation/filesystems/nfsroot.txt vor Linux  2.6.33).
       Weitere  Informationen  über  das Einstellen des Root-Dateisystems finden sich in den Dokumentationen von
       LILO und LOADLIN.

       Die ausführbare Datei /linuxrc kann auch das  normale  Root-Gerät  ändern.  Damit  /linuxrc  das  normale
       Root-Gerät  ändern  kann,  muss  /proc  eingehängt sein. Nach dem Einhängen von /proc ändert /linuxrc das
       normale  Root-Gerät   durch   das   Schreiben   in   die   proc-Dateien   /proc/sys/kernel/real-root-dev,
       /proc/sys/kernel/nfs-root-name  und  /proc/sys/kernel/nfs-root-addrs.  Ein physikalisches Root-Gerät wird
       geändert, indem /linuxrc die Gerätenummer des neuen Root-Dateisystems  in  /proc/sys/kernel/real-root-dev
       schreibt.  Für  ein NFS-Root-Dateisystem wird das Root-Gerät geändert, indem /linuxrc die NFS-Einstellung
       in die Dateien /proc/sys/kernel/nfs-root-name und /proc/sys/kernel/nfs-root-addrs schreibt und dann  0xff
       (z.  B.  die  NFS-Pseudo-Gerätenummer) in die Datei /proc/sys/kernel/real-root-dev schreibt. Zum Beispiel
       würde der folgende Shell-Befehl das normale Root-Gerät auf /dev/hdb1 ändern:

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

       Ein NFS-Beispiel: Die folgenden Shell-Befehlszeilen würden das normale Root-Gerät für ein System mit  der
       IP-Nummer  193.8.232.2  und  dem Namen »idefix« auf das NFS-Verzeichnis /var/nfsroot auf einem NFS-Server
       mit der IP-Nummer 193.8.232.7 im lokalen Netzwerk ändern:

           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

       Hinweis: Die Verwendung von /proc/sys/kernel/real-root-dev für die  Änderung  des  Root-Dateisystems  ist
       veraltet. Die Linux-Kernel-Quelldatei Documentation/admin-guide/initrd.rst (oder Documentation/initrd.txt
       vor Linux 4.10) sowie pivot_root(2) und pivot_root(8) informieren über das moderne Verfahren zur Änderung
       des Root-Dateisystems.

   Verwendung
       Die  Hauptmotivation  für  die  Implementierung  von  initrd  war,  bei der Installation des Systems eine
       modulare Kernel-Konfiguration zu ermöglichen.

       Ein mögliches Szenario für eine Systeminstallation ist das folgende:

       1. Das Ladeprogramm startet von einer Diskette oder einem  anderen  Medium  mit  einem  minimalen  Kernel
          (beispielsweise  mit  Unterstützung  für  /dev/ram,  /dev/initrd  und  das  ext2-Dateisystem) und lädt
          /dev/initrd mit einer komprimierten Version des anfänglichen Dateisystems.

       2. Die ausführbare Datei /linuxrc bestimmt, was für (1)  das  Einhängen  des  normalen  Root-Dateisystems
          (z.B.  Gerätetyp,  Gerätetreiber, Dateisystem) und (2) der Installationsmedien (z.B. CD-ROM, Netzwerk,
          Band, …) erforderlich ist. Sie kann den Benutzer danach fragen, die Geräte selbst  suchen  oder  einen
          hybriden Ansatz verfolgen.

       3. Die ausführbare Datei /linuxrc lädt die notwendigen Module aus dem anfänglichen Root-Dateisystem.

       4. Die  ausführbare  Datei  /linuxrc erstellt und füllt das Root-Dateisystem. (In diesem Stadium muss das
          normale Root-Dateisystem noch kein vollständiges System sein.)

       5. Die ausführbare Datei /linuxrc  schreibt  /proc/sys/kernel/real-root-dev,  hängt  /proc,  das  normale
          Root-Dateisystem und alle weiteren von ihm eingehängten Dateisysteme aus und beendet sich dann.

       6. Der Kernel bindet dann das normale Root-Dateisystem ein.

       7. Nachdem  das  System  intakt  ist und darauf zugegriffen werden kann, kann der Boot-Loader installiert
          werden.

       8. Der Boot-Loader ist so konfiguriert, dass er in /dev/initrd ein Dateisystem mit dem Satz  von  Modulen
          lädt,  die  beim Systemstart eingesetzt waren. (z.B. kann /dev/ram0 modifiziert, danach ausgehängt und
          schließlich sein Abbild (Image) in eine Datei geschrieben werden.)

       9. Das System ist nun bootfähig und zusätzliche Installationsaufgaben können durchgeführt werden.

       Die Schlüsselrolle von /dev/initrd im Vorgehenden ist es, die Konfigurationsdaten  während  des  normalen
       Betriebs  weiter  zu  verwenden,  ohne  dass  der ursprüngliche Kernel ausgewählt, ein großer generischer
       Kernel eingesetzt oder ein Kernel neu kompiliert werden muss.

       Ein zweites Szenario  sind  Netzwerk-Installationen,  in  denen  Linux  auf  Systemen  mit  verschiedenen
       Hardware-Konfigurationen  läuft. In solchen Fällen kann es wünschenswert sein, nur eine kleine Gruppe von
       Kerneln   (im   Idealfall   nur   einen)   zu   verwenden   und   den   systemspezifischen    Teil    der
       Konfigurationsinformationen so klein wie möglich zu halten. Erstellen Sie für diesen Fall eine gemeinsame
       Datei  mit  allen benötigten Modulen. Dann muss nur die Datei /linuxrc oder eine von /linuxrc ausgeführte
       Datei individuell angepasst werden.

       Ein  drittes  Szenario  sind  komfortable  Reparatur-CDs.  Weil  Informationen  wie  die   Position   der
       Root-Dateisystem-Partition  zur  Boot-Zeit  nicht  erforderlich  sind,  kann das aus /dev/initrd geladene
       System einen Dialog und/oder eine automatische Erkennung verwenden  und  dem  eine  Plausibilitätsprüfung
       folgen lassen.

       Nicht  zuletzt können Linux-Distributionen auf CD-ROM initrd für die einfache Installation von der CD-ROM
       verwenden. Die Distribution kann LOADLIN verwenden, um /dev/initrd direkt von der  CD-ROM  zu  laden  und
       Disketten  überflüssig  zu machen. Die Distribution könnte auch eine LILO-Bootdiskette verwenden und dann
       über /dev/initrd eine größere RAM-Disk von der CD-ROM laden.

DATEIEN

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

ANMERKUNGEN

       1. Beim aktuellen Kernel kann auf Dateisysteme, die während der Verschiebung von  /dev/ram0  von  /  nach
          /initrd eingehängt waren, weiterhin zugegriffen werden. Die Einträge in /proc/mounts werden aber nicht
          aktualisiert.

       2. Mit  dem aktuellen Kernel wird bei fehlendem /initrd /dev/ram0 nicht völlig ausgehängt werden, wenn es
          von einem Prozess verwendet wird oder in /dev/ram0 ein  Dateisystem  eingehängt  ist.  Wenn  /dev/ram0
          nicht vollständig ausgehängt ist, verbleibt /dev/ram0 im Speicher.

       3. Anwender  von  /dev/initrd  sollten  sich  nicht  auf das in diesen Anmerkungen beschriebene Verhalten
          verlassen. Das Verhalten kann sich in zukünftigen Kernel-Versionen ändern.

SIEHE AUCH

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

       Documentation/admin-guide/initrd.rst    (oder    Documentation/initrd.txt    vor    Linux    4.10)     im
       Linux-Kernelquelltext-Verzeichnis und die Dokumentationen von LILO, LOADLIN und SYSLINUX

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.15  des Projekts Linux-man-pages. Eine Beschreibung des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche    Übersetzung    dieser    Handbuchseite    wurde    von    Martin    Eberhard    Schauer
       <Martin.E.Schauer@gmx.de>,  Mario  Blättermann  <mario.blaettermann@gmail.com>  und  Dr. Tobias Quathamer
       <toddy@debian.org> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der  Übersetzung  dieser  Handbuchseite  finden, schicken Sie bitte eine E-Mail an
       <debian-l10n-german@lists.debian.org>.

Linux                                          15. September 2017                                      INITRD(4)