我做了什麼
在 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 (它們都不適合我),而是使用特定的綁定選項。