.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2000 by Werner Almesberger .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" May be distributed under GPL .\" %%%LICENSE_END .\" .\" Written 2000-02-23 by Werner Almesberger .\" Modified 2004-06-17 Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH PIVOT_ROOT 2 "13. Juli 2012" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG pivot_root \- die Dateisystemwurzel ändern .SH ÜBERSICHT \fBint pivot_root(const char *\fP\fIneue_Wurzel\fP\fB, const char *\fP\fIalte_Wurzel\fP\fB);\fP \fIHinweis:\fP Es gibt keinen Glibc\-Wrapper für diesen Systemaufruf; siehe ANMERKUNGEN. .SH BESCHREIBUNG .\" .\" The .\" .B CAP_SYS_ADMIN .\" capability is required. \fBpivot_root\fP verschiebt die Dateisystemwurzel des aktuellen Prozesses in das Verzeichnis \fIalte_Wurzel\fP und macht \fIneue_Wurzel\fP zur neuen Dateisystemwurzel. Der typische Anwendungsfall von \fBpivot_root\fP() ist während des Systemstarts, wenn das System ein temporäres Wurzeldateisystem einhängt, zum Beispiel ein \fBinitrd\fP. Danach wird das reale Wurzeldateisystem eingehängt und eventuell in die aktuelle Wurzel aller relevanten Prozesse und Threads verwandelt. \fBpivot_root\fP() 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 \fBpivot_root\fP() 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 \fIneue_Wurzel\fP, bevor \fBpivot_root\fP() aufgerufen wird. Der vorige Absatz ist absichtlich etwas ungenau, da sich die Implementation von \fBpivot_root\fP() in der Zukunft ändern kann. Zum Zeitpunkt der Erstellung dieses Dokuments ändert \fBpivot_root\fP() das Wurzel\- und Arbeitsverzeichnis jedes Prozesses oder Threads auf die \fIneue_Wurzel\fP, 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 \fBpivot_root\fP() entfernt werden kann. Beachten Sie, dass sich das auch auf den aufrufenden Prozess auswirkt: \fBpivot_root\fP() kann sein aktuelles Arbeitsverzeichnis ändern, muss aber nicht. Es wird daher empfohlen, \fBchdir("/")\fP unmittelbar nach \fBpivot_root\fP() aufzurufen. Die folgenden Einschränkungen gelten für die \fIneue_Wurzel\fP und die \fIalte_Wurzel\fP: .IP \- 3 Sie müssen Verzeichnisse sein. .IP \- 3 Die \fIneue_Wurzel\fP und die \fIalte_Wurzel\fP dürfen sich nicht im gleichen Dateisystem befinden wie die aktuelle Wurzel. .IP \- 3 Die \fIalte_Wurzel\fP muss sich unterhalb der \fIneuen_Wurzel\fP befinden, das heißt, Hinzufügen einer von null verschiedenen Anzahl von \fI/..\fP zur Zeichenkette, die auf die \fIalte_Wurzel\fP zeigt, muss das gleiche Verzeichnis wie die \fIneue_Wurzel\fP ergeben. .IP \- 3 In der \fIalten_Wurzel\fP darf kein weiteres Dateisystem eingehängt sein. .PP In \fBpivot_root\fP(8) finden Sie zusätzliche Anwendungsbeispiele. Falls die aktuelle Wurzel kein Einhängepunkt ist (zum Beispiel nach \fBchroot\fP(2) oder \fBpivot_root\fP(), siehe auch unten), wird nicht das alte Wurzelverzeichnis, sondern der Einhängepunkt des Dateisystems eingehängt, das in der \fIalten_Wurzel\fP eingehängt ist. Die \fIneue_Wurzel\fP muss keinen Einhängepunkt haben. In diesem Fall zeigt \fI/proc/mounts\fP den Einhängepunkt des Dateisystems an, welches die \fIneue_Wurzel\fP als Wurzel enthält (\fI/\fP). .SH RÜCKGABEWERT Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird \-1 zurückgegeben und \fIerrno\fP entsprechend gesetzt. .SH FEHLER \fBpivot_root\fP() kann (in \fIerrno\fP) jeden der von \fBstat\fP(2) zurückgegebenen Fehler zurückgeben. Zusätzlich kann Folgendes zurückgegeben werden: .TP \fBEBUSY\fP Die \fIneue_Wurzel\fP oder die \fIalte_Wurzel\fP sind im aktuellen Wurzeldateisystem oder ein Dateisystem ist bereits in der \fIalten_Wurzel\fP eingehängt. .TP \fBEINVAL\fP Die \fIalte_Wurzel\fP ist nicht unterhalb der \fIneuen_Wurzel\fP. .TP \fBENOTDIR\fP \fIneue_Wurzel\fP oder \fIalte_Wurzel\fP ist kein Verzeichnis. .TP \fBEPERM\fP Der aufrufende Prozess verfügt nicht über die \fBCAP_SYS_ADMIN\fP\-Capability. .SH VERSIONEN \fBpivot_root\fP() wurde in Linux 2.3.41 eingeführt. .SH "KONFORM ZU" \fBpivot_root\fP() ist Linux\-spezifisch und daher nicht portierbar. .SH ANMERKUNGEN Die Glibc stellt keinen Wrapper für diesen Systemaufruf bereit; rufen Sie ihn mit \fBsyscall\fP(2) auf. .SH FEHLER \fBpivot_root\fP() sollte nicht das Wurzel\- und Arbeitsverzeichnis aller anderen Prozesse im System ändern müssen. Einige der weniger bekannten Anwendungen von \fBpivot_root\fP() können schnell in den Wahnsinn führen. .SH "SIEHE AUCH" \fBchdir\fP(2), \fBchroot\fP(2), \fBstat\fP(2), \fBinitrd\fP(4), \fBpivot_root\fP(8) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 4.09 des Projekts Linux\-\fIman\-pages\fP. 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/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann 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 .