pivot_root

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



NOM
       pivot_root - Modifier la racine du système de fichiers

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

       Remarque : il n'existe pas de fonction glibc autour de cet appel
       système ; consultez NOTES.

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

       L'utilisation typique de pivot_root() est durant le boot, 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
       en racine pour tous les processus et 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 ci-dessus est intentionnellement flou, car
       l'implémentation de pivot_root() peut changer dans le futur.
       Actuellement, pivot_root() modifie la racine et le répertoire de
       travail de tous les processus ou threads en new_root s'ils pointent sur
       l'ancien répertoire. Ceci est nécessaire pour éviter que des threads
       du noyau ne conservent l'ancien répertoire occupé, même s'ils
       accèdent au nouveau système de fichiers. Dans le futur, il y aura
       peut-être un mécanisme pour les threads du noyau pour renoncer
       explicitement à tout accès au système de fichiers, ce qui évitera
       ce mécanisme un peu invasif.

       Notez que ceci s'applique aussi au processus appelant : pivot_root()
       peut changer ou non son répertoire de travail. Il vaut mieux donc
       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 : ajouter un nombre
          non-nul de /.. à la chaîne put_old doit ramener au même
          répertoire que new_root.

       -  Aucun système de fichiers ne doit être monté sur put_old.

       Consultez pivot_root(8) pour des exemples d'utilisation
       supplémentaires.

       Si la racine en cours n'est pas un point de montage (après un
       chroot(2) ou un pivot_root(), voir plus bas), ce n'est pas l'ancien
       répertoire, mais le point de montage du système de fichiers qui est
       monté dans put_old.

       new_root n'a pas besoin d'être un point de montage. Dans ce cas,
       /proc/mounts montrera le point de montage concernant new_root comme
       racine (/).

VALEUR RENVOYÃE
       S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie
       -1 et remplit errno en conséquence.

ERREURS
       pivot_root() peut renvoyer (dans errno) toute erreur renvoyée par
       stat(2). De plus, il peut renvoyer :

       EBUSY  new_root ou put_old sont sur le système de fichiers principal
              actuel, ou un système de fichiers est déjà monté sur
              put_old.

       EINVAL put_old n'est pas un descendant de new_root.

       ENOTDIR
              new_root ou put_old n'est pas un répertoire.

       EPERM  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 ;
       utilisez syscall(2) pour l'appeler.

BOGUES
       pivot_root() ne devrait pas modifier le répertoire racine et le
       répertoire de travail des autres processus du système.

       Les utilisations les plus obscures de pivot_root() peuvent rapidement
       rendre fou.

VOIR AUSSI
       chdir(2), chroot(2), stat(2), initrd(4), pivot_root(8)

COLOPHON
       Cette page fait partie de la publication 3.70 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler des
       anomalies peuvent être trouvées à l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION
       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction
       francophone au sein du projet perkamon
       <http://perkamon.alioth.debian.org/>.

       Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain
       Portal <http://manpagesfr.free.fr/> (2003-2006).  Julien Cristau et
       l'équipe francophone de traduction de Debian (2006-2009).

       Veuillez signaler toute erreur de traduction en écrivant Ã
       <perkamon-fr@traduc.org>.

       Vous pouvez toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».



Linux                           13 juillet 2012                  PIVOT_ROOT(2)