
Что я сделал
Установите qemu, qemu-arch-extra, qemu-user-static (AUR) в ArchLinux X86_64. 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-среде я могу пинговать любой IP-адрес, но не могу пинговать какой-либо удаленный хост (например, example.com
), т. е. разрешение имен не работает.
/etc/resolv.conf
файл заполнен. ip
показывает правильные конфигурации сетевых карт. Итак, как мне включить разрешение имен в chrooted ArchLinux ARM? Я попробовал ту же процедуру в Ubuntu X86_64 с chrooted в Ubuntu AARCH64. Это работает.
решение1
Во-первых, вам не нужно копировать
qemu-aarch64-static
вfolder
Во-вторых, похоже, ваш
/proc/sys/fs/binfmt_misc/
пустой. Его нужно заполнить нужным бинарником.Чтобы это исправить, вы можете воспользоваться
binfmt-qemu-static
пакетом из AUR, который позаботится об этом за вас.И наконец, вам нужно либоперезагрузить, или перезапуститьsystemd-binfmt
При такой настройке у меня все работает отлично, и мне не нужно ничего делать для разрешения имен в chroot.
Вместоarch-chroot, можно также использовать:
systemd-nspawn --bind-ro=/etc/resolv.conf -D folder -M myFancyMachineName
Хитрость здесь в том, чтобы не использовать --resolv-conf
switch (ни один из них у меня не сработал), а использовать определенную опцию привязки.