Wie chroot Arch von einer Gentoo Live-CD?

851
Simon Klaver

Ich habe einen Laptop mit 2 Betriebssystempartitionen: 1 für Windows 10, 1 für Arch Linux. Der Bootloader ist der von Windows, daher kann ich Arch nicht starten. Jetzt ist mein Windows plötzlich kaputt, so dass mein Laptop nicht mehr normal starten kann.
Ich habe auch eine Gentoo Live CD. Nicht bogen
Es gibt keine Computer in der Nähe, die in der Lage sind, Festplatten zu brennen (um eine Arch-CD zu erstellen), abgesehen von meinem Laptop (der zum Starten mit der Gentoo-Festplatte geliefert werden muss und diese Platte nicht wiederbeschreibbar ist).

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

1
@Seth Um den Bootloader zu reparieren, muss er chroot sein, damit er `grub-install` oder was auch immer ausführen kann. Daniel B vor 7 Jahren 1
Zwei Anmerkungen: Sie benötigen zum Booten keine CD - Sie können stattdessen von einem USB-Laufwerk booten. Außerdem können Sie sehen, ob Sie für Gentoo `boot-repair` erhalten können. Dadurch wird der Vorgang der Wiederherstellung von Grub unglaublich einfach. AFH vor 7 Jahren 0

1 Antwort auf die Frage

2
Daniel B

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 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-booten:

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

Kopieren Sie sie /etc/resolv.confbei Bedarf auch, oder Sie können DNS-Namen nicht auflösen.

Alternativ können Sie auch das Gentoo-Chroot-Verfahren ausführen :

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" 

Danach einfach ausführen chroot "$chroot_directory"oder vielleicht, chroot "$chroot_directory" /usr/bin/bashwenn Ihre aktuelle Shell nicht in dem Verzeichnis verfügbar ist, in dem Sie sich befinden.

Wenn Sie eine der von Ihnen angegebenen Optionen ausführen, gibt der Befehl chroot den Befehl chroot zurück: Fehler beim Ausführen des Befehls '/ bin / bash': Keine solche Datei oder ein solches Verzeichnis, auch wenn `/ bin / bash 'als Argument für chroot angegeben wird. Simon Klaver vor 7 Jahren 0
Oh ja. Es kann sich unter / usr / bin / bash befinden. Ich werde die Antwort überprüfen und aktualisieren. Daniel B vor 7 Jahren 0
`/ bin / bash` existiert auf der Live-CD. Simon Klaver vor 7 Jahren 0
Es muss im Chroot-Verzeichnis existieren, wie ich geschrieben habe. Es gibt das Verzeichnis ein und führt dann die Datei relativ zu diesem Verzeichnis aus. Daniel B vor 7 Jahren 0
In meinem Arch-System ist die Datei an beiden Stellen fest verbunden. Daniel B vor 7 Jahren 0
Ich bin nicht schlau, ich habe vergessen, die Partition an erster Stelle einzubauen xd Simon Klaver vor 7 Jahren 0