我做了什么
在 ArchLinux X86_64 中安装 qemu、qemu-arch-extra、qemu-user-static (AUR)。 systemd 负责 binfmt,从 验证/proc/sys/fs/binfmt_misc/
。从其网站下载 ArchLinux ARM tarball。直接链接是这个
http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
。使用命令将其解压到文件夹中sudo bsdtar -xpf
。将文件复制
/usr/bin/qemu-aarch64-static
到该文件夹中。 chroot 与arch-chroot
.
在命令行中:
sudo pacman -S qemu qemu-arch-extra
sudo yay -S qemu-user-static
sudo bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C folder
ls /proc/sys/fs/binfmt_misc/
sudo cp /usr/bin/qemu-aarch64-static folder/usr/bin
sudo arch-chroot folder
结果
在 chroot 环境中,我可以 ping 任何 IP 地址,但无法 ping 任何远程主机(例如example.com
),即名称解析不起作用。
/etc/resolv.conf
文件已填充。ip
显示 NIC 的正确配置。那么,如何在 chrooted ArchLinux ARM 中启用名称解析?我在 Ubuntu X86_64 中尝试了相同的过程,并chroot到 Ubuntu AARCH64。有用。
答案1
首先,你不需要复制
qemu-aarch64-static
到folder
其次,你的似乎
/proc/sys/fs/binfmt_misc/
是空的。它需要填充所需的二进制文件。要解决这个问题,您可以使用
binfmt-qemu-static
AUR 中的软件包来解决这个问题。最后,您需要重启,或重新启动systemd-binfmt
通过这个设置,这对我来说非常有效,而且我不需要做任何事情来在 chroot 中获得名称解析。
代替拱形 chroot,也可以使用:
systemd-nspawn --bind-ro=/etc/resolv.conf -D folder -M myFancyMachineName
这里的技巧是不使用--resolv-conf
switch (它们都不适合我),而是使用特定的绑定选项。