我做了什么
在 ArchLinux X86_64 中安装 qemu、qemu-arch-extra、qemu-user-static (AUR)。systemd 负责处理 binfmt,从/proc/sys/fs/binfmt_misc/
. 从其网站下载 ArchLinux ARM 压缩包。直接链接是这个
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
结果
在 chrooted 环境中,我可以 ping 任何 IP 地址但不能 ping 任何远程主机(例如example.com
),即名称解析不起作用。
/etc/resolv.conf
文件已填充。ip
显示正确的 NIC 配置。那么,如何在 chrooted ArchLinux ARM 中启用名称解析?我已经在 Ubuntu X86_64 中尝试了相同的过程,并将其 chroot 到 Ubuntu AARCH64。有用。
首先,你不需要复制
qemu-aarch64-static
到folder
其次,你的似乎
/proc/sys/fs/binfmt_misc/
是空的。它需要填充所需的二进制文件。为了解决这个问题,你可以使用
binfmt-qemu-static
AUR 的包来为你解决这个问题。最后,您需要重新启动或重新启动systemd-binfmt
有了这个设置,这对我来说效果很好,而且我不需要做任何事情来在 chroot 中进行名称解析。
除了arch-chroot,还可以使用:
这里的诀窍是不使用
--resolv-conf
switch (它们都不适合我),而是使用特定的绑定选项。