Construcción eficiente de contenedores ARM en sistemas x86
Desafío
Para un desarrollo más rápido queremos crear contenedores basados en ARM para el AXCF2152 o AXCF1152 en hardware x86. Para este propósito, se usa una máquina virtual basada en Debian o Ubuntu, que se ejecuta en nuestro PC normal.
Necesitamos un emulador
Para ejecutar código binario ARM en un sistema x86 necesitamos un emulador que nos permita hacer esto.
Qemu es uno de los pocos hipervisores que puede emular código binario ARM y compilarlo para x86. Todo lo que necesitamos hacer es instalar Qemu en nuestro sistema host y activar el emulador.
Instalar Qemu para Ubuntu o 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
Ejemplo de uso
Para usar Qemu ahora necesitamos una extensión en el contenedor, es decir, el binario /usr/bin/qemu-arm-static. Hay varias formas de usarlo en el contenedor.
Si la extensión solo se necesita temporalmente y existe localmente, simplemente se puede pasar al contenedor. Para esto, el binario necesario se monta en el contenedor.
docker run -it --restart always \
-v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static \
arm32v7/debian /bin/sh
Esto inicia el contenedor y salta a un shell en el contenedor. Ahora se pueden hacer todos los cambios necesarios. Los cambios pueden transferirse a las imágenes después con un commit.
docker commit ...
Para una construcción de contenedor, el binario debe estar presente en el contenedor, hay dos formas de hacer esto.
1. El binario ya está disponible, hay imágenes prefabricadas en Dockerhub para este propósito. https://hub.docker.com/u/multiarch/
2. El binario se añade a las imágenes del contenedor.
Ejemplo Dockerfile:
FROM debian:armhf
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN .....
La línea COPY debe aparecer directamente como segundo comando después de FROM. Todo esto funciona con todas las herramientas de construcción.
Un contenedor para todos
Si instala la extensión Qemu en un AXCF3152, puede usar el mismo contenedor para ambos sistemas (x86 y ARM). En cuanto al rendimiento, esto debería probarse exhaustivamente.
Tecnología Industrial
- Decimal frente a binario: peso posicional, eficiencia y conversión
- Suma binaria explicada: reglas, ejemplos y su papel en computadoras digitales
- Números negativos en binario: signo-magnitud, complemento y complemento a dos
- Resta binaria usando complemento a dos
- Desbordamiento binario: cómo los bits de signo afectan la suma binaria
- Reglas Esenciales de Simplificación Booleana para Diseño de Circuitos Lógicos
- Entendiendo Contadores Binarios de Cuatro Bits
- PCB Robustos para Condiciones Extremas: Diseño, Beneficios y Aplicaciones
- Fabricación de PCB en la era del 5G: tendencias y desafíos
- Optimiza los despliegues con compilaciones de contenedores multinivel
- Arm introduce soporte de instrucciones personalizadas para núcleos Cortex-M, ampliando flexibilidad