it-swarm.com.de

mount Dev, Proc, Sys in einer Chroot-Umgebung?

Ich versuche, ein Linux-Image mit benutzerdefinierten Paketen zu erstellen.
Ich versuche, die Pakete, die ich auf einem XO-Laptop verwenden werde, von Hand zu erstellen, da das Kompilieren von Paketen auf der realen XO-Hardware sehr viel Zeit in Anspruch nimmt Bild an den XO, kann ich Zeit und Platz sparen.

Als ich versuchte, einige Pakete zu installieren, schlug die Konfiguration fehl, da die Verzeichnisse proc, sys und dev fehlten. Also habe ich von anderen Stellen gelernt, dass ich die Host-Proc, ... -Verzeichnisse in meine Chroot-Umgebung "mounten" muss.

Ich habe zwei Syntaxarten gesehen und bin mir nicht sicher, welche ich verwenden soll.

Auf dem Host-Computer:

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

und eine andere Syntax (in einer Chroot-Umgebung):

  mount -t proc none /proc

Welches sollte ich verwenden, und was ist der Unterschied?

80
Patrick

Für /proc und /sys können Sie vermutlich eine der beiden Methoden verwenden. Beide sind spezielle Dateisysteme, sodass sie beliebig oft neu erstellt werden können (die Bind-Mount-Methode verwendet genau den gleichen Mount wie das Host-System, während die andere Methode einen neuen Mount verwendet). Ich habe immer die in Handbüchern empfohlene Bindebefestigung gesehen, also würde ich sie verwenden. Soweit ich weiß, gibt es keinen wirklich wichtigen Unterschied.

/dev ist jedoch in der Regel ein von udev verwaltetes tmpfs-Mount. Daher muss es sich um dasselbe Dateisystem wie auf dem Host-Computer handeln. Das bedeutet, dass Sie die Bind-Mount-Methode verwenden müssen.

Wenn diese Chroot für eine Weile existieren wird, können Sie diese Einträge in /etc/fstab auf dem Host-System ablegen, um die Dinge zu vereinfachen.

43
Zifre

Das Arch Linux Wiki schlägt die folgenden 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.

101
gacrux

Das Gentoo Handbuch ruft speziell diese beiden Befehle zum erneuten Mounten von/proc und/dev auf. 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 normaler Ordner, daher sollten Sie in der Lage sein, einen festen Link zu erstellen.

ln /sys /mnt/chroot/sys
12
robert

In dieser populären Frage ist es vielleicht erwähnenswert, dass Arch Linux ein Skript erstellt hat Arch-chroot ; Arch-install-scripts-15-1-any.pkg.tar.xz herunterladen

Dies behebt verschiedene verwandte Probleme in Arch-Linux und Manjaro , wo ich es auch erfolgreich eingesetzt habe. Möglicherweise sind auch mehr Arch - Derivate like Parabel kompatibel.

Während eine einfache Standard-chroot in einer sekundären Manjaro-Installation nicht ausgeführt werden kann

pacman --sync linux

(die Silberkugel nach einem Systemabsturz), Ersetzen der Zeile mit

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

damit 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, die vom Standard chroot alleine gelassen werden.

siehe auch: Verwenden von Arch-Chroot

1
y guy