Запуск контейнера x86 на Raspberry c архитектурой arm64

У меня есть портированный контейнер, благополучно работающий на x86/amd64 серверах. Потребовалось мне засунуть его в другую железяку и решил я развернуть его на Raspberry. Якобы путь запуска контейнеров x86 на Raspberry есть. Взял Raspberry PI 4 с 8GB памяти и поставил убунту. Наставил qemu-system, qemu-user-static, kvm Якобы по тестам все типа хорошо:

root@ubuntu:/home/ubuntu# virt-host-validate
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
  QEMU: Checking for cgroup 'cpu' controller support                         : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
  QEMU: Checking for cgroup 'memory' controller support                      : PASS
  QEMU: Checking for cgroup 'devices' controller support                     : PASS
  QEMU: Checking for cgroup 'blkio' controller support                       : PASS
  QEMU: Checking for device assignment IOMMU support                         : WARN (Unknown if this platform has IOMMU support)
  QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)
   LXC: Checking for Linux >= 2.6.26                                         : PASS
   LXC: Checking for namespace ipc                                           : PASS
   LXC: Checking for namespace mnt                                           : PASS
   LXC: Checking for namespace pid                                           : PASS
   LXC: Checking for namespace uts                                           : PASS
   LXC: Checking for namespace net                                           : PASS
   LXC: Checking for namespace user                                          : PASS
   LXC: Checking for cgroup 'cpu' controller support                         : PASS
   LXC: Checking for cgroup 'cpuacct' controller support                     : PASS
   LXC: Checking for cgroup 'cpuset' controller support                      : PASS
   LXC: Checking for cgroup 'memory' controller support                      : PASS
   LXC: Checking for cgroup 'devices' controller support                     : PASS
   LXC: Checking for cgroup 'freezer' controller support                     : FAIL (Enable 'freezer' in kernel Kconfig file or mount/enable cgroup controller in your system)
   LXC: Checking for cgroup 'blkio' controller support                       : PASS
   LXC: Checking if device /sys/fs/fuse/connections exists                   : PASS

Запускаю контейнер следующим образом:

docker run -d --privileged --restart unless-stopped --hostname mycontainer --net=host --name=mycontainer -it mycontainer:v1 /bin/bash /entrypoint.sh

Он стартует, но не работает. Ошибки дает вообще непонятные. Не видел такого ранее.

Вычитал можно еще запускать контейнер внутри qemu контейнера:

root@ubuntu:/home/ubuntu# docker run --rm -it     --device=/dev/kvm:/dev/kvm --device=/dev/net/tun:/dev/net/tun     --cap-add NET_ADMIN -v /home/ubuntu/readyImages/adapter2_2.xz:/image     jkz0/qemu:latest

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
udhcpd: started, v1.30.1
udhcpd: max_leases=235 is too big, setting to 1
udhcpd: can't open '/var/lib/misc/udhcpd.leases': No such file or directory
kvm version too old
qemu-system-x86_64: failed to initialize KVM: Function not implemented

Но он возвращает вообще что-то непонятное. Гугление не помогает. Тема явно сложная и непонятная. Может кто-то сталкивался с чем-то подобным? Очень нужно направление для копания. Спасибо.


Ответы (0 шт):