web-dev-qa-db-fra.com

mount dev, proc, sys dans un environnement chroot?

J'essaie de créer une image Linux avec des packages choisis.
Ce que j'essaie de faire, c'est de concevoir à la main les packages que je vais utiliser sur un ordinateur portable XO, car la compilation de packages prend beaucoup de temps sur le vrai matériel XO. image au XO, je peux gagner du temps et de l’espace.

Lorsque j'ai essayé d'installer certains paquets, la configuration a échoué car les répertoires proc, sys et dev étaient manquants. J'ai donc appris ailleurs 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 lequel utiliser.

Dans la machine hôte:

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

et une autre syntaxe (en environnement chroot):

  mount -t proc none /proc

Lequel devrais-je utiliser et quelle est la différence?

80
Patrick

Pour /proc et /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, de sorte qu'ils peuvent être recréés autant de fois que nécessaire (la méthode de montage de 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 la monture Bind recommandée dans les guides, je l'utilisais donc. Pour autant que je sache, il n'y a pas de réelle différence importante.

Cependant, /dev est généralement un montage tmpfs 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 auriez besoin d'utiliser la méthode bind mount.

Si ce chroot doit ê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.

43
Zifre

Le 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 -t sysfs sys sys/
mount -o bind /dev dev/

Je peux confirmer qu'ils ont travaillé pour moi.

101
gacrux

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

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

Je soupçonne que/sys est juste un dossier normal, vous devriez donc être capable de faire un lien dur.

ln /sys /mnt/chroot/sys
12
robert

Il est peut-être intéressant de noter dans cette question populaire que Arch Linux a créé un script Arch-chroot ; télécharger Arch-install-scripts-15-1-any.pkg.tar.xz

Ceci qui s’occupe de divers problèmes liés à la fois dans Arch-Linux et Manjaro, où je l’ai aussi utilisé avec succès. Peut-être plus de Arch_dérivés comme Parabole sont tout aussi compatibles.

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

pacman --sync linux

(la solution miracle après un crash 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-dérivate via

pacman --sync linux

comme un charme. Le script bash Arch-chroot prend soin de /dev /sys /proc et bien plus encore, qui sont laissés à eux-mêmes par la variable standard chroot.

voir aussi: Utilisation d'Arch-chroot

1
y guy