128 votes

monter dev, proc, sys dans un environnement chroot ?

J'essaie de créer une image 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 beaucoup de temps sur le vrai matériel XO, si je peux construire tous les paquets dont j'ai besoin et juste flasher l'image sur le XO, je peux gagner du temps et de l'espace.

Lorsque j'ai essayé d'installer certains paquets, la configuration a échoué car il manquait les répertoires proc, sys, dev. J'ai donc appris d'autres endroits que je devais "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

Lequel dois-je utiliser, et quelles sont les différences ?

165voto

Daniel Moore Points 193

Le site Arch Linux Wiki suggère 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/

62voto

knowncitizen Points 600

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

Cependant, /dev est généralement un montage tmpfs qui est géré par udev, il doit donc s'agir du même système de fichiers que sur la machine hôte. Cela signifie que vous devez utiliser la méthode bind mount.

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

17voto

robert Points 1892

Le site Manuel Gentoo appelle spécifiquement ces deux commandes pour le remontage de /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 est juste un dossier normal, donc vous devriez être capable de faire un lien dur.

ln /sys /mnt/chroot/sys

3voto

Tom Desmet Points 31

Il existe d'autres pseudo-systèmes de fichiers et emplacements tmpfs. Ceci est sous 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 le usbfs , rpc_pipefs y devpts pseudo-systèmes de fichiers à partir du chroot. Je recommande no liaison /proc à l'adresse du chroot /proc puisque le noyau a le concept d'espaces de noms, et peut en fait mettre différentes choses dans le proc du chroot.

Mise à jour : selon ce fil de la liste de diffusion En effet, /sys ne devrait pas être monté en liaison, en particulier si les processus chrootés utilisent leur propre espace de noms réseau.

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

2voto

y guy Points 21

Il peut être intéressant de noter dans cette question populaire, qu'Arch Linux a fait un script. archi-chroot ; télécharger arch-install-scripts-15-1-any.pkg.tar.xz

Ce qui permet de prendre en charge les différents problèmes liés à la fois à l'intérieur et à l'extérieur de l'entreprise. Arch-Linux y Manjaro où je l'ai aussi utilisé avec succès. Peut-être plus d'Arch dérivés comme Parabole sont tout aussi compatibles.

Alors qu'une simple norme chroot dans une installation secondaire de Manjaro ne vous permettra pas d'exécuter

pacman --sync linux

(la solution miracle après un crash du système), en remplaçant la ligne par

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

vous permettra de réparer votre installation secondaire d'Arch-derivate via

pacman --sync linux

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

voir aussi : Utiliser arch-chroot

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X