pivot_root   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 1er juin 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
pivot_root - Modifier la racine du système de fichiers  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
int pivot_root(const char *new_root, const char *put_old);  



DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 pendant le démarrage, lorsque le système monte un système de fichiers temporaire (par exemple, un initrd) puis monte le véritable système de fichier, et le transforme en racine pour tous les processus et threads concernés.

pivot_root() peut changer ou non le répertoire 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 avant d'invoquer pivot_root().

Le paragraphe ci-dessus est intentionellement 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.

Voir 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
S'il réussit, l'appel renvoie zéro. Sinon il renvoie -1 et remplit errno.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
pivot_root() a été introduit dans Linux 2.3.41.  



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
pivot_root() est spécifique à Linux et donc non portable.  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La glibc ne fournit pas d'enveloppe pour cet appel système ; appelez-le avec syscall(2).  



BOGUES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
chdir(2), chroot(2), stat(2), initrd(4), pivot_root(8)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 18 juillet 2003 et révisée le 8 janvier 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 pivot_root ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
CONFORMITÉ
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EBUSYERREURS
EINVALERREURS
ENOTDIRERREURS
EPERMERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:51:00, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional