Das Arch Linux Wiki schlägt folgende Befehle vor:
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/
Ich kann bestätigen, dass sie für mich gearbeitet haben.
Ich versuche, ein Linux-Image mit benutzerdefinierten Paketen zu erstellen.
Was ich versuche zu tun ist, die Pakete, die ich auf einem XO-Laptop verwenden werde, von Hand zu fertigen, da das Kompilieren von Paketen auf der realen XO-Hardware sehr lange dauert, wenn ich alle benötigten Pakete zusammenstellen kann und nur die Bild auf dem XO kann ich Zeit und Platz sparen.
Beim Versuch, einige Pakete zu installieren, konnte die Konfiguration nicht durchgeführt werden, da die Verzeichnisse proc, sys und dev nicht vorhanden waren. Also habe ich von anderen Orten gelernt, dass ich die Host-Proc-, ...-Verzeichnisse in meine Chroot-Umgebung "einhängen" muss.
Ich habe zwei Syntax gesehen und bin mir nicht sicher, welche ich verwenden soll.
In der Hostmaschine:
mount --bind /proc <chroot dir>/proc
und eine andere Syntax (in Chroot-Umgebung):
mount -t proc none /proc
Welches sollte ich verwenden und was ist der Unterschied?
Das Arch Linux Wiki schlägt folgende Befehle vor:
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/
Ich kann bestätigen, dass sie für mich gearbeitet haben.
Für /proc
und /sys
Sie könnten beide Methoden verwenden. Bei beiden handelt es sich um spezielle Dateisysteme, sodass sie beliebig oft neu erstellt werden können (die Bind-Mount-Methode verwendet genau das gleiche Mount wie das Host-System, während die andere Methode ein neues Mount verwendet). Ich habe immer die Bindungshalterung gesehen, die in den Anleitungen empfohlen wird, also würde ich sie verwenden. Meines Wissens gibt es keinen wirklich wichtigen Unterschied.
In der /dev
Regel handelt es sich jedoch um ein tmpfs-Mount, das von udev verwaltet wird. Es muss also dasselbe Dateisystem sein wie auf dem Host-Computer. Das bedeutet, dass Sie die Bind-Mount-Methode verwenden müssen.
Wenn diese chroot für eine Weile in /etc/fstab
der Nähe ist, können Sie diese Einträge auf dem Hostsystem einfügen, um die Dinge zu vereinfachen.
Im Gentoo-Handbuch werden diese beiden Befehle speziell zum erneuten Einhängen von / proc und / dev aufgerufen. Ich habe sie mehrmals benutzt.
mount -t proc none /mnt/chroot/proc mount -o bind /dev /mnt/chroot/dev
Ich vermute, / sys ist nur ein regulärer Ordner, daher sollten Sie in der Lage sein, eine feste Verbindung herzustellen.
ln /sys /mnt/chroot/sys
In dieser populären Frage kann es erwähnenswert sein, dass Arch Linux ein Skript arch-chroot erstellt hat ; herunterladenarch-install-scripts-15-1-any.pkg.tar.xz
Dies behebt verschiedene verwandte Probleme sowohl in Arch-Linux als auch in Manjaro, wo ich es auch erfolgreich eingesetzt habe. Möglicherweise mehr Erz- Derivate wie Parabola sind genauso gut verträglich.
Während ein einfacher Standard chroot
in einer sekundären Manjaro-Installation nicht ausgeführt werden kann
pacman --sync linux
(die silberne Kugel nach einem Systemabsturz) und ersetzt die Zeile mit
arch-chroot /run/media/*YOURSELF*/manja-disk2
können Sie Ihre sekundäre Arch-Derivate-Installation über reparieren
pacman --sync linux
wie ein Zauber. Das bash-Skript arch-chroot
kümmert sich um /dev /sys /proc
und vieles mehr, was der Standard alleine lässt chroot
.
siehe auch: Verwendung von Arch-Chroot
Es gibt andere Pseudo-Dateisysteme und tmpfs-Speicherorte. Dies ist auf Debian:
/dev/pts /run /run/shm /proc/sys/fs/binfmt_mist /var/lib/nfs/rpc_pipefs /proc/fs/nfsd /proc/bus/usb
Es sollte die Montage in Ordnung sein usbfs
, rpc_pipefs
und devpts
Pseudo-Dateisysteme in der chroot. Ich empfehle, nicht/proc
an die Chroots zu binden /proc
, da der Kernel das Konzept von Namespaces hat und tatsächlich verschiedene Dinge in den Chroot-Proc setzen kann.
Update: Laut diesem Mailing- Listenthread sollte / sys nicht gebunden gemountet werden, insbesondere wenn die chrootierten Prozesse ihren eigenen Netzwerknamensraum verwenden.
Es ist keine gute Idee, das System /var
oder /run
die Chroot zu mounten, wenn die Chroot einen eigenen PID-Namespace hat.