¿Cómo ejecutar ejecutables armhf en un sistema arm64?

10

Tengo Ubuntu 16.04.2 LTS instalado en un servidor arm64:

# uname -a
Linux test 4.9.23-std-1 #1 SMP Mon Apr 24 13:18:14 UTC 2017 aarch64 aarch64 aarch64 GNU/Linux

Ejecuté el siguiente comando para habilitar la armhfinstalación del paquete:

# dpkg --add-architecture armhf

Luego instalé el traceroutepaquete:

# apt-get install traceroute:armhf
Reading package lists... Done
Building dependency tree
[...]
Preparing to unpack .../traceroute_1%3a2.0.21-1_armhf.deb ...
Unpacking traceroute:armhf (1:2.0.21-1) ...
Processing triggers for man-db (2.7.5-1) ...

Sin embargo, no puedo iniciar el ejecutable:

# traceroute
-bash: /usr/sbin/traceroute: cannot execute binary file: Exec format error

Más información:

# file /usr/bin/traceroute.db
/usr/bin/traceroute.db: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV),
    dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux
    2.6.32, BuildID[sha1]=0ebd0553e26b163dd848c131fe8ee0a4a2409109, stripped
# ldd /usr/bin/traceroute.db
        not a dynamic executable

También intenté instalar binfmt-supporty confirmar que el binfmt_miscmódulo estaba cargado.

¿No es arm64compatible con versiones anteriores armhf? ¿Cómo puedo ejecutar armhfejecutables en un arm64servidor?

Nathan Osman
fuente
Aparentemente, todas las dependencias y el intérprete también deben ser de 32 bits
You'reAGitForNotUsingGit
¿Realizaste apt-get update; apt-get upgradedespués dpkg --add-architecture armhf?
Marcos Silveira
@MarcosSilveira sí, no hay diferencia.
Nathan Osman

Respuestas:

16

El soporte Arm32 es opcional en arm64. En la práctica, solo hay una CPU arm64 que omite la compatibilidad con el conjunto de instrucciones arm32 heredado: Cavium ThunderX. Desde la cadena de versión del kernel, parece que está utilizando servidores Scaleway armv8. Si este es el caso, no tiene suerte: los servidores Scaleway armv8 se basan en ThunderX. Utilice el Scaleway C1 en su lugar, que es arm32 nativo.

Riku Voipio
fuente
2
Buena suposición, estoy usando Scaleway. Gracias por la aclaración.
Nathan Osman
1
El servidor Tipo 2A de Packet también está basado en ThunderX y también está sujeto a esta restricción.
vielmetti