Provided by: manpages-de_1.11-1_all bug

BEZEICHNUNG

       initrd - vom Boot-Loader initialisierte RAM-Disk

KONFIGURATION

       Die  Initrd  (/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/nfsroot.txt.  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/initrd.txt 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/initrd.txt  im Linux-Kernelquelltext-Verzeichnis und die Dokumentationen von
       LILO, LOADLIN und SYSLINUX

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.04  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 http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die  deutsche  Übersetzung  dieser  Handbuchseite  wurde  von  Martin   Eberhard   Schauer
       <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> 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>.