Provided by: manpages-de-dev_2.15-1build1_all bug

BEZEICHNUNG

       pivot_root - die Dateisystemwurzel ändern

ÜBERSICHT

       int pivot_root(const char *neue_Wurzel, const char *alte_Wurzel);

       Hinweis: Es gibt keinen Glibc-Wrapper für diesen Systemaufruf; siehe ANMERKUNGEN.

BESCHREIBUNG

       pivot_root  verschiebt  die  Dateisystemwurzel  des aktuellen Prozesses in das Verzeichnis
       alte_Wurzel und macht neue_Wurzel zur neuen Dateisystemwurzel.

       Der typische Anwendungsfall von pivot_root() ist während des Systemstarts, wenn das System
       ein  temporäres Wurzeldateisystem einhängt, zum Beispiel ein initrd. Danach wird das reale
       Wurzeldateisystem eingehängt  und  eventuell  in  die  aktuelle  Wurzel  aller  relevanten
       Prozesse und Threads verwandelt.

       pivot_root()  kann  die  aktuelle Wurzel und das aktuelle Arbeitsverzeichnis von Prozessen
       und Threads ändern, welche das alte Wurzelverzeichnis nutzen, muss dies  aber  nicht.  Der
       Prozess,  welcher pivot_root() aufruft, muss sicherstellen, dass Prozesse mit Wurzel- oder
       aktuellem Arbeitsverzeichnis in jedem Fall korrekt arbeiten. Ein einfacher Weg hierzu  ist
       die  Änderung  von  Wurzel-  und  aktuellem  Arbeitsverzeichnis auf die neue_Wurzel, bevor
       pivot_root() aufgerufen wird.

       Der  vorige  Absatz  ist  absichtlich  etwas  ungenau,  da  sich  die  Implementation  von
       pivot_root()  in  der  Zukunft  ändern kann. Zum Zeitpunkt der Erstellung dieses Dokuments
       ändert pivot_root() das Wurzel- und Arbeitsverzeichnis jedes Prozesses  oder  Threads  auf
       die  neue_Wurzel,  falls  diese auf das alte Wurzelverzeichnis zeigen. Dies ist notwendig,
       damit die Kernel-Threads nicht  das  alte  Wurzelverzeichnis  weiterhin  mit  ihrem  alten
       Wurzel-  und  Arbeitsverzeichnis  belegen,  selbst  wenn  sie  in  keiner  Weise  auf  das
       Dateisystem zugegriffen haben. In der Zukunft könnte ein neuer Mechanismus bewirken,  dass
       die  Kernel-Threads  auf  jeglichen Zugriff auf das Dateisystem verzichten, so dass dieser
       recht unsichere alte Mechanismus aus pivot_root() entfernt werden kann.

       Beachten Sie, dass sich das auch auf den aufrufenden Prozess auswirkt:  pivot_root()  kann
       sein  aktuelles  Arbeitsverzeichnis  ändern,  muss  aber  nicht.  Es wird daher empfohlen,
       chdir("/") unmittelbar nach pivot_root() aufzurufen.

       Die folgenden Einschränkungen gelten für die neue_Wurzel und die alte_Wurzel:

       -  Sie müssen Verzeichnisse sein.

       -  Die neue_Wurzel und die alte_Wurzel dürfen sich nicht im gleichen Dateisystem  befinden
          wie die aktuelle Wurzel.

       -  Die  alte_Wurzel  muss  sich unterhalb der neuen_Wurzel befinden, das heißt, Hinzufügen
          einer von null verschiedenen Anzahl von /.. zur Zeichenkette, die auf  die  alte_Wurzel
          zeigt, muss das gleiche Verzeichnis wie die neue_Wurzel ergeben.

       -  In der alten_Wurzel darf kein weiteres Dateisystem eingehängt sein.

       In pivot_root(8) finden Sie zusätzliche Anwendungsbeispiele.

       Falls  die  aktuelle  Wurzel  kein  Einhängepunkt  ist  (zum  Beispiel nach chroot(2) oder
       pivot_root(), siehe auch unten),  wird  nicht  das  alte  Wurzelverzeichnis,  sondern  der
       Einhängepunkt des Dateisystems eingehängt, das in der alten_Wurzel eingehängt ist.

       neue_Wurzel  muss  ein  Einhängepunkt  sein. (Falls es nicht anderweitig ein Einhängepunkt
       ist, reicht es aus, neue_Wurzel auf sich selbst bind-einzuhängen.)

       Der Ausbreitungstyp von neue_Wurzel und seiner  Elterneinhängung  dürfen  nicht  MS_SHARED
       sein;  entsprechend  falls  alte_Wurzel  ein  bestehender  Einhängepunkt  ist,  darf  sein
       Ausbreitungstyp nicht MS_SHARED sein.

RÜCKGABEWERT

       Bei Erfolg wird Null zurückgegeben. Bei einem  Fehler  wird  -1  zurückgegeben  und  errno
       entsprechend gesetzt.

FEHLER

       pivot_root()  kann  (in  errno)  jeden der von stat(2) zurückgegebenen Fehler zurückgeben.
       Zusätzlich kann Folgendes zurückgegeben werden:

       EBUSY  Die neue_Wurzel oder die alte_Wurzel sind im aktuellen Wurzeldateisystem  oder  ein
              Dateisystem ist bereits in der alten_Wurzel eingehängt.

       EINVAL neue_Wurzel ist kein Einhängepunkt.

       EINVAL Die alte_Wurzel ist nicht unterhalb der neuen_Wurzel.

       EINVAL Die aktuelle Wurzel ist auf dem Rootfs (anfänglichen Ramfs-)Dateisystem.

       EINVAL Entweder  der  Einhängepunkt  unter  neue_Wurzel  oder  die Elterneinhängung dieses
              Einhängepunktes hat den Ausbreitungstyp MS_SHARED.

       EINVAL alte_Wurzel ist ein Einhängepunkt und der Ausbreitungstyp ist MS_SHARED.

       ENOTDIR
              neue_Wurzel oder alte_Wurzel ist kein Verzeichnis.

       EPERM  Der aufrufende Prozess verfügt nicht über die CAP_SYS_ADMIN-Capability.

VERSIONEN

       pivot_root() wurde in Linux 2.3.41 eingeführt.

KONFORM ZU

       pivot_root() ist Linux-spezifisch und daher nicht portierbar.

ANMERKUNGEN

       Die Glibc stellt keinen  Wrapper  für  diesen  Systemaufruf  bereit;  rufen  Sie  ihn  mit
       syscall(2) auf.

       Das  Rootfs  (anfängliche  Ramfs)  kann  nicht  mittels pivot_root erreicht werden. Die in
       diesem Fall empfohlene  Methode  zur  Änderung  des  Wurzeldateisystems  ist  das  Löschen
       sämtlicher   Inhalte   im  Rootfs,  das  Rootfs  mit  der  neuen  Wurzel  übereinzuhängen,
       stdin/stdout/stderr an das neue /dev/console anzuhängen und das neue init(1)  auszuführen.
       Helferprogramme für diesen Prozess existieren: siehe switch_root(8).

FEHLER

       pivot_root()  sollte  nicht  das  Wurzel- und Arbeitsverzeichnis aller anderen Prozesse im
       System ändern müssen.

       Einige der weniger bekannten Anwendungen von pivot_root() können schnell in  den  Wahnsinn
       führen.

SIEHE AUCH

       chdir(2), chroot(2), mount(2), stat(2), initrd(4), pivot_root(8), switch_root(8)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  5.02  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   Mario   Blättermann
       <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> 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>.