Разрешение имен не работает в chrooted ArchLinux ARM

Разрешение имен не работает в chrooted ArchLinux ARM

Что я сделал

Установите 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-confswitch (ни один из них у меня не сработал), а использовать определенную опцию привязки.

Связанный контент