Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Эффективная сборка ARM-контейнеров на x86 системах

Задача

Для ускорения разработки мы хотим создавать ARM-контейнеры для AXCF2152 или AXCF1152 на x86-железе. Для этой цели используется виртуальная машина на базе Debian или Ubuntu, запускаемая на нашем обычном ПК.

Нам нужен эмулятор

Для запуска ARM-бинарного кода на x86-системе нам нужен эмулятор, позволяющий это сделать.

Qemu — один из немногих гипервизоров, который может эмулировать ARM-бинарный код и компилировать его для x86. Нам нужно только установить Qemu на хост-систему и активировать эмулятор.

Установка Qemu для Ubuntu или Debian:

apt-get update && apt-get install -y --no-install-recommends qemu-user-static binfmt-support
update-binfmts --enable qemu-arm
update-binfmts --display qemu-arm
Пример использования

Для использования Qemu теперь нам нужно расширение в контейнере, а именно бинарник /usr/bin/qemu-arm-static. Есть несколько способов использовать его в контейнере.

Если расширение нужно только временно и оно существует локально, его можно просто пробросить в контейнер. Для этого необходимый бинарник монтируется в контейнер.

docker run -it --restart always \
  -v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
  arm32v7/debian /bin/sh

Это запускает контейнер и переходит в оболочку в контейнере. Теперь можно сделать все необходимые изменения. Изменения можно передать в образы потом с коммитом.

docker commit ...

Для сборки контейнера бинарник должен быть присутствовать в контейнере, есть два способа сделать это.

1. Бинарник уже доступен, для этого есть готовые образы на Dockerhub. https://hub.docker.com/u/multiarch/

2. Бинарник добавляется в образ контейнера.
Пример Dockerfile:

From debian:armhf
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN .....

Строка COPY должна появиться непосредственно как вторая команда после FROM. Все это работает со всеми инструментами сборки.

Один контейнер для всех

Если вы установите расширение Qemu на AXCF3152, вы сможете использовать один и тот же контейнер для обеих систем (x86 и ARM). Относительно производительности это должно быть тщательно протестировано.

Промышленные технологии

  1. Десятичная и двоичная системы: разрядный вес, эффективность и преобразование
  2. Сложение в двоичной системе: правила, примеры и роль в цифровых компьютерах
  3. Отрицательные числа в двоичной системе: знаковый модуль, дополнение и дважды дополнительный код
  4. Двоичное вычитание с использованием двухкратного дополнения
  5. Переполнение в двоичной арифметике: влияние знакового бита на сложение
  6. Основные правила упрощения булевых выражений для проектирования логических схем
  7. Arm добавляет поддержку кастомных инструкций для Cortex-M: расширение гибкости
  8. Надежные печатные платы для экстремальных условий: дизайн, преимущества и применения
  9. Производство печатных плат в эру 5G: тренды и вызовы
  10. Оптимизация развертывания с помощью многостадийных сборок контейнеров