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.
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.44 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 à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».