Como chroot Arch de um live cd do Gentoo?

1

Eu tenho um laptop com duas partições do SO: 1 para o Windows 10, 1 para o Arch Linux. O bootloader é o do Windows, então não consigo iniciar o Arch. Agora meu Windows de repente quebrou, então meu laptop não pode mais iniciar normalmente.
Eu também tenho um Live CD do Gentoo. Não Arch.
Não há computadores próximos de serem capazes de gravar discos (para criar um CD do Arch), além do meu laptop (que precisa receber o disco do Gentoo para iniciar, e esse disco não pode ser regravado).

Como faço chroot na minha instalação do Arch Linux utilizando apenas este Live CD do Gentoo?

    
por Simon Klaver 21.10.2016 / 12:07

1 resposta

2

Isso é muito fácil. O script arch-chroot faz o seguinte :

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
}

... e depois copia resolv.conf .

Então você precisa:

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

Além disso, se você for iniciado pela EFI:

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

Copie também mais de /etc/resolv.conf , se necessário, ou você não conseguirá resolver nomes DNS.

Alternativamente, você também pode seguir o procedimento chroot do Gentoo :

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"

Depois disso, basta executar chroot "$chroot_directory" ou talvez chroot "$chroot_directory" /usr/bin/bash se o seu shell atual não estiver disponível no diretório em que você está inserindo.

    
por 21.10.2016 / 12:27