Wofür sind diese Befehle?


10

Gestern musste ich ein Windows mit Grub-Override installieren.

Nun, es ist nicht das erste Mal, dass ich Grub reparieren musste, also habe ich LiveCD verwendet, die Root-Partition gemountet (ich habe kein Boot, nur /und home) und bin gelaufen grub-install --root-directory=/mnt/ /dev/sda. Es hat jedoch nicht funktioniert.

Nachdem ich eine Weile gegoogelt hatte, fand ich ein Tutorial, in dem er nicht nur die Linux-Partition mounte, sondern auch mount --bind /mnt/dev /devund mount --bind /mnt/proc /proc/. Danach chrootzu /mntund dann installiert Grub, und mit dieser Methode hat es funktioniert.

Wofür sind die mount --bindBefehle? Ich bin mit der Verwendung von --bind used(Manpage) vertraut, weiß aber nicht, warum sie in diesem Beispiel verwendet wurde.

Antworten:


10

procund sysDateisysteme werden vom laufenden Kernel bereitgestellt. Wenn der Kernel nicht ausgeführt wird, existieren sie nicht mehr. Dies bedeutet, dass diese Dateisysteme nicht vorhanden sind, wenn Sie in ein anderes Betriebssystem chrooten. Viele Programme erwarten, dass sie vorhanden sind, damit sie funktionieren können. Beispielsweise benötigen sie möglicherweise Informationen über das laufende System oder möchten die Art und Weise ändern, wie der Kernel mit etwas umgeht. Es reicht oft aus, diese Programme einfach bereitzustellen /procund /sysaus dem aktuellen Kernel bereitzustellen , damit sie wie erwartet funktionieren.

Ein Symlink würde nicht ausreichen, da das Chrooting die verwendeten Dateipfade ungültig machen würde. Unter Linux können Sie auch keine Verzeichnisse fest verknüpfen (außer .und .., wie von bereitgestellt mkdir). Dies bedeutet, dass eine dritte Option verwendet werden muss, um diese Dateisysteme in die Chroot-Umgebung zu spiegeln - Bind-Mounting. Ein Bind-Mount wird direkt vom Kernel bereitgestellt und funktioniert wie erwartet innerhalb einer Chroot.


procund syskann an mehreren Stellen montiert werden, --bindist also nicht erforderlich (nur zweimal montieren). Allerdings /dev/wird von udev kein Insider-Kernel verwaltet.
Maciej Piechotka

@MaciejPiechotka Ich habe / dev nie erwähnt, weil es nicht in Frage kommt, aber das muss nicht unbedingt von udev verwaltet werden.
Chris Down

Ich bezog mich eher auf procund sysals Dateisysteme, die doppelt gemountet werden können ( mount -t proc none /mnt/proc), so dass Sie sie nicht unbedingt benötigen mount --bind. devwird normalerweise vom Userspace verwaltet (sei es udev, Busybox oder irgendetwas anderes), also müssen Sie es tun. Kleiner Punkt sowieso.
Maciej Piechotka

0

Mit dieser --bindOption kann der Einhängepunkt in einer chrootUmgebung angezeigt werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.