Scroll to navigation

PIVOT_ROOT(2) Manuel du programmeur Linux PIVOT_ROOT(2)

NOM

pivot_root - Modifier le système de fichiers racine

SYNOPSIS

int pivot_root(const char *new_root, const char *put_old);

Note : il n'existe pas d'enveloppe pour cet appel système dans la glibc ; voir NOTES.

DESCRIPTION

pivot_root() déplace le système de fichiers racine du processus appelant vers le répertoire put_old et fait de new_root le nouveau système de fichiers racine du processus appelant.

L'utilisation typique de pivot_root() est durant le démarrage du système, lorsque le système monte un système de fichiers temporaire (par exemple un initrd) puis monte le véritable système de fichiers et le transforme éventuellement en racine en cours pour tous les processus ou threads concernés.

pivot_root() peut changer ou non les répertoires racine et de travail en cours de tous les processus et threads qui utilisaient l'ancien répertoire racine. L'appelant de pivot_root() doit s'assurer que les processus ayant pour racine ou répertoire de travail l'ancien répertoire se comportent correctement. Le meilleur moyen est de modifier leur répertoire de travail et répertoire racine pour new_root avant d'invoquer pivot_root().

Le paragraphe précédent est volontairement vague parce que l'implémentation de pivot_root() peut changer à l'avenir. Au moment de cette rédaction, pivot_root() change le répertoire racine et le répertoire de travail actuel de chaque processus ou thread pour new_root s'ils pointent vers l'ancien répertoire racine. C'est nécessaire afin d'empêcher les threads du noyau d'occuper leur ancien répertoire racine avec leurs répertoires racine et de travail, même s'ils n'accèdent jamais au système de fichiers en aucune manière. À l'avenir, ce peut être pour les threads du noyau un mécanisme pour abandonner explicitement tout accès au système de fichiers, de manière à ce que ce mécanisme plutôt intrusif puisse être retiré de pivot_root().

Notez que cela s'applique aussi au processus appelant : pivot_root() peut affecter ou non son répertoire de travail actuel. Il est par conséquent recommandé d'appeler chdir("/") immédiatement après pivot_root().

Les restrictions suivantes s'appliquent à new_root et put_old :

  • Ils doivent être des répertoires.
  • new_root et put_old ne doivent pas être sur le même système de fichiers que la racine actuelle.
  • put_old doit être un descendant de new_root, c'est-à-dire, ajouter un nombre différent de zéro « /.. » à la chaîne vers lequel pointe put_old doit ramener au même répertoire que new_root.
  • Aucun autre système de fichiers ne peut être monté sur put_old.

Voir aussi pivot_root(8) pour d'autres exemples d'utilisation.

Si la racine actuelle n'est pas un point de montage (par exemple, après un chroot(2) ou un pivot_root(), voir aussi ci-dessous), ni l'ancien répertoire racine, mais le point de montage de ce système de fichiers est monté sur put_old.

Il n'est pas nécessaire que new_root soit un point de montage. Dans ce cas, /proc/mounts montrera le point de montage du système de fichiers contenant new_root comme racine (/).

VALEUR RENVOYÉE

En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno reçoit une valeur adéquate.

ERREURS

pivot_root() peut renvoyer (dans errno) toutes les erreurs renvoyées par stat(2). Il peut aussi renvoyer :

new_root ou put_old sont sur le système de fichiers racine actuel, ou un système de fichiers est déjà monté sur put_old.
put_old n'est pas un descendant de new_root.
new_root ou put_old n'est pas un répertoire.
Le processus appelant n'a pas la capacité CAP_SYS_ADMIN.

VERSIONS

pivot_root() a été introduit dans Linux 2.3.41.

CONFORMITÉ

pivot_root() est spécifique à Linux et donc non portable.

NOTES

La glibc ne fournit pas de fonction autour de cet appel système ; appelez-le avec syscall(2).

BOGUES

pivot_root() ne devrait pas avoir à modifier le répertoire racine et le répertoire de travail actuel de tous les autres processus du système.

Certaines des utilisation les plus obscures de pivot_root() peuvent rapidement mener à la folie.

VOIR AUSSI

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

COLOPHON

Cette page fait partie de la publication 4.16 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

15 septembre 2017 Linux