Wie chroot Arch von einer Gentoo Live-CD?

1

Ich habe einen Laptop mit 2 Betriebssystempartitionen: 1 für Windows 10, 1 für Arch Linux. Der Bootloader ist der Windows-Bootloader, daher kann ich Arch nicht starten. Jetzt ist mein Windows plötzlich kaputt gegangen, sodass mein Laptop nicht mehr normal gestartet werden kann.
Ich habe auch eine Gentoo Live CD. Nicht Arch.
Abgesehen von meinem Laptop (für dessen Start die Gentoo-Festplatte benötigt wird und die nicht wiederbeschreibbar ist) gibt es keine Computer, die in der Lage sind, Festplatten zu brennen (um eine Arch-CD zu erstellen).

Wie chroote ich mit nur dieser Gentoo Live-CD in meine Arch Linux-Installation?

Simon Klaver
quelle
1
@Seth Um den Bootloader zu reparieren, muss er chrooten, damit er laufen kann grub-installoder was auch immer.
Daniel B
Zwei Beobachtungen: Sie benötigen keine CD zum Booten - Sie können stattdessen von einem USB-Laufwerk booten. Sehen Sie auch nach, ob Sie boot-repairGentoo bekommen können - dies macht den Prozess der Wiederherstellung von Grubs unglaublich einfach.
AFH

Antworten:

2

Das ist ganz einfach. Das arch-chroot- Skript führt Folgendes aus :

chroot_setup() {
  CHROOT_ACTIVE_MOUNTS=()
  [[ $(trap -p EXIT) ]] && die '(BUG): attempting to overwrite existing EXIT trap'
  trap 'chroot_teardown' EXIT

  chroot_maybe_add_mount "! mountpoint -q '$1'" "$1" "$1" --bind &&
  chroot_add_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
  chroot_add_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
  ignore_error chroot_maybe_add_mount "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
      efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
  chroot_add_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
  chroot_add_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
  chroot_add_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
  chroot_add_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
  chroot_add_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
}

... und kopiert dann vorbei resolv.conf.

Sie müssen also:

mount proc "$chroot_directory/proc" -t proc -o nosuid,noexec,nodev
mount sys "$chroot_directory/sys" -t sysfs -o nosuid,noexec,nodev,ro
mount udev "$chroot_directory/dev" -t devtmpfs -o mode=0755,nosuid
mount devpts "$chroot_directory/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec
mount shm "$chroot_directory/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev
mount run "$chroot_directory/run" -t tmpfs -o nosuid,nodev,mode=0755
mount tmp "$chroot_directory/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid

Plus, wenn Sie EFI-gebootet sind:

mount efivarfs "$chroot_directory/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev

Kopieren Sie auch, /etc/resolv.conffalls erforderlich, oder Sie können DNS-Namen nicht auflösen.

Alternativ können Sie auch der Gentoo-Chroot-Prozedur folgen :

mount -t proc proc "$chroot_directory/proc"
mount --rbind /sys "$chroot_directory/sys"
mount --make-rslave "$chroot_directory/sys"
mount --rbind /dev "$chroot_directory/dev"
mount --make-rslave "$chroot_directory/dev"

Führen Sie danach einfach chroot "$chroot_directory"oder, chroot "$chroot_directory" /usr/bin/bashfalls Ihre aktuelle Shell in dem von Ihnen eingegebenen Verzeichnis nicht verfügbar ist, aus.

Daniel B
quelle
Wenn Sie eine der angegebenen Optionen ausführen, wird der Befehl chroot zurückgegeben chroot: failed to run command '/bin/bash': No such file or directory, auch wenn er /bin/bashals Argument für chroot angegeben wird.
Simon Klaver
Oh ja. Es kann sich unter / usr / bin / bash befinden. Ich werde die Antwort überprüfen und aktualisieren.
Daniel B
/bin/bashgibt es auf der live cd.
Simon Klaver
Es muss im chroot-Verzeichnis existieren, wie ich es geschrieben habe. Es betritt das Verzeichnis und führt dann die Datei relativ zu diesem Verzeichnis aus.
Daniel B
Auf meinem Arch-System ist die Datei an beiden Speicherorten fest verknüpft.
Daniel B