2010-07-18 19:06:10 +0000 2010-07-18 19:06:10 +0000
92
92

mount dev, proc, sys dans un environnement chroot ?

J'essaie de créer une image de Linux avec des paquets choisis sur mesure.
Ce que j'essaie de faire, c'est de créer à la main les paquets que je vais utiliser sur un portable XO, parce que la compilation des paquets prend vraiment beaucoup de temps sur le vrai matériel XO, si je peux construire tous les paquets dont j'ai besoin et simplement flasher l'image sur le XO, je peux gagner du temps et de l'espace.

Quand j'ai essayé d'installer certains paquets, la configuration a échoué parce qu'il manquait les répertoires proc, sys, dev. J'ai donc appris d'autres endroits que je dois “monter” les répertoires proc, … de l'hôte dans mon environnement chroot.

J'ai vu deux syntaxes et je ne sais pas laquelle utiliser.

Dans la machine hôte :

mount --bind /proc <chroot dir>/proc

et une autre syntaxe (dans l'environnement chroot) :

mount -t proc none /proc

Laquelle dois-je utiliser, et quelle est la différence ?

Réponses (6)

118
118
118
2012-04-26 06:10:11 +0000

Le Arch Linux Wiki propose les commandes suivantes :

cd /mnt/arch # or where you are preparing the chroot dir
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
45
45
45
2010-07-19 01:02:06 +0000

Pour /proc et /sys, je suppose que vous pourriez utiliser l'une ou l'autre méthode. Ce sont tous les deux des systèmes de fichiers spéciaux, ils peuvent donc être recréés un nombre illimité de fois (la méthode de montage par liaison utilise exactement le même montage que le système hôte, alors que l'autre méthode utilise un nouveau montage). J'ai toujours vu le montage bind recommandé dans les guides, donc je l'utiliserais. Pour autant que je sache, il n'y a pas vraiment de différence importante.

Cependant, /dev est généralement un montage tmpfs qui est géré par udev, il doit donc être en fait le même système de fichiers que sur la machine hôte. Cela signifie que vous devez utiliser la méthode de montage par liaison.

Si ce chroot doit être présent pendant un certain temps, vous pouvez mettre ces entrées dans /etc/fstab sur le système hôte pour simplifier les choses.

13
13
13
2010-07-19 00:05:08 +0000

Le Manuel Gentoo appelle spécifiquement ces deux commandes pour remonter /proc et /dev. Je les ai utilisées plusieurs fois.

mount -t proc none /mnt/chroot/proc
mount -o bind /dev /mnt/chroot/dev

Je pense que /sys n'est qu'un dossier ordinaire, donc vous devriez pouvoir faire un lien en dur.

ln /sys /mnt/chroot/sys
1
1
1
2016-04-17 15:36:51 +0000

Il est intéressant de noter dans cette question populaire qu'Arch Linux a créé un script arch-chroot ; download arch-install-scripts-15-1-any.pkg.tar.xz

qui s'occupe de divers problèmes liés à Arch-Linux et Manjaro , où je l'ai également utilisé avec succès. Il est possible que d'autres dérivés d'archives comme Parabola soient tout aussi bien compatibles.

Alors qu'un simple standard chroot dans une installation secondaire de Manjaro ne vous permettra pas de lancer

pacman --sync linux

(la solution miracle après un crash système), remplacer la ligne par

arch-chroot /run/media/*YOURSELF*/manja-disk2

vous permettra de corriger votre installation secondaire de dérivés d'archives via

pacman --sync linux

comme un charme. Le bash script arch-chroot s'occupe de /dev /sys /proc et de bien d'autres choses encore, qui sont laissées de côté par le standard chroot.

voir aussi : Utilisation de la racine arquée

-1
-1
-1
2019-01-20 13:32:32 +0000

Le moyen le plus simple est d'utiliser une boucle for :

cd /

for i in proc sys dev; do mount -o bind $i /folder/$i; done
-1
-1
-1
2012-10-15 21:06:00 +0000

Il existe d'autres pseudo-systèmes de fichiers et emplacements tmpfs. C'est sur debian :

/dev/pts 
/run
/run/shm
/proc/sys/fs/binfmt_mist
/var/lib/nfs/rpc_pipefs
/proc/fs/nfsd
/proc/bus/usb

Il devrait être possible de monter les pseudo-systèmes de fichiers usbfs, rpc_pipefs et devpts depuis le chroot. Je recommande de ne pas lier /proc à /proc de chroot, puisque le noyau a le concept d'espace de noms, et peut en fait mettre différentes choses dans la proc de chroot. Mise à jour de

: selon ce fil de discussion de la liste de diffusion , /sys ne devrait pas être monté en mode “bind”, surtout si le processus chrooté utilise son propre espace de noms réseau.

C'est une mauvaise idée de monter le /var ou le /run du système sur le chroot, si le chroot a son propre espace de noms pid.