如何从 Gentoo live cd chroot Arch?

如何从 Gentoo live cd chroot Arch?

我有一台笔记本电脑,它有 2 个操作系统分区:1 个用于 Windows 10,1 个用于 Arch Linux。引导程序是 Windows 的,所以我无法启动 Arch。现在我的 Windows 突然坏了,所以我的笔记本电脑无法正常启动了。
我还有一个 Gentoo Live CD。不是 Arch。
除了我的笔记本电脑(需要提供 Gentoo 磁盘才能启动,并且该磁盘不可重写)之外,几乎没有计算机能够刻录磁盘(创建 Arch CD)。

我如何仅利用这张 Gentoo Live CD chroot 到我的 Arch Linux 安装?

答案1

这真的很容易。chroot 库脚本确实下列

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
}

...然后复制过去resolv.conf

因此你需要:

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

另外,如果您使用 EFI 启动:

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

如果需要的话也请复制过去/etc/resolv.conf,否则您将无法解析 DNS 名称。

或者,您也可以关注Gentoo chroot 过程

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"

此后,只需运行chroot "$chroot_directory",或者chroot "$chroot_directory" /usr/bin/bash如果您当前的 shell 在您输入的目录中不可用。

相关内容