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, si je peux construire tous les packages dont j'ai besoin et simplement flasher le 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?
chroot()
'. En particulier, le déterminé peut lire des fichiers en dehors de leur section du système de fichiers si vous ne faites pas attention.Réponses:
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, ils peuvent donc ê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, il
/dev
s’agit généralement d’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 insérer ces entrées
/etc/fstab
sur le système hôte pour simplifier les choses.la source
sys
type
système de fichiers semble ( aujourd'hui ) ne plus exister?Le wiki Arch Linux suggère les commandes suivantes:
la source
--rbind
desys
etdev
.Le manuel Gentoo appelle spécifiquement ces deux commandes pour remonter / proc et / dev. Je les ai utilisés plusieurs fois.
Je soupçonne que / sys est juste un dossier normal, vous devriez donc être capable de faire un lien dur.
la source
Il convient 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 archi- dérivés comme Parabole sont compatibles aussi bien.
Bien qu’un simple standard
chroot
dans une installation secondaire de Manjaro ne vous permette pas d’exécuter(la solution miracle après un crash système), en remplaçant la ligne par
vous permettra de réparer votre installation secondaire d’Arch-dérivate via
comme un charme. Le script bash
arch-chroot
prend en charge/dev /sys /proc
et bien plus encore, qui sont laissés seuls par le standardchroot
.voir aussi: Utilisation d'arch-chroot
la source
Il existe d'autres pseudo-systèmes de fichiers et emplacements tmpfs. C'est sur debian:
Il devrait être d' accord pour monter le
usbfs
,rpc_pipefs
etdevpts
pseudo-systèmes de fichiers de l' intérieur du chroot. Je recommande de ne pas lier/proc
les chroot/proc
, car le noyau a le concept d'espaces de noms et peut réellement mettre différentes choses dans le proc du chroot.Mise à jour: selon ce fil de la liste de diffusion , / sys ne doit pas être lié par une liaison montée, en particulier si les processus chrootés utilisent son propre espace de noms réseau.
C'est une mauvaise idée de monter le système
/var
ou/run
sur le chroot, si le chroot a son propre espace de noms pid.la source
Le moyen le plus simple consiste à utiliser une boucle for:
la source