bionic (2) pivot_root.2.gz

Provided by: manpages-de-dev_2.5-1_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.

       Die neue_Wurzel muss keinen Einhängepunkt haben. In diesem Fall zeigt /proc/mounts den Einhängepunkt  des
       Dateisystems an, welches die neue_Wurzel als Wurzel enthält (/).

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 Die alte_Wurzel ist nicht unterhalb der neuen_Wurzel.

       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.

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), stat(2), initrd(4), pivot_root(8), switch_root(8)

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 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>.