web-dev-qa-db-fra.com

Comment exécuter des exécutables armhf sur un système arm64?

Ubuntu 16.04.2 LTS est installé sur un serveur 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

J'ai exécuté la commande suivante pour activer l'installation du package armhf:

# dpkg --add-architecture armhf

J'ai ensuite installé le paquet traceroute:

# 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) ...

Cependant, je ne peux pas lancer l'exécutable:

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

Informations complémentaires:

# 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

J'ai également essayé d'installer binfmt-support et de confirmer que le module binfmt_misc était chargé.

arm64 n'est-il pas rétrocompatible avec armhf? Comment exécuter des exécutables armhf sur un serveur arm64?

8
Nathan Osman

La prise en charge d’Arm32 est facultative sur arm64. En pratique, un seul processeur arm64 ne prend pas en charge le jeu d’instructions arm32 hérité - Cavium ThunderX. D'après la version du noyau, il semble que vous utilisiez des serveurs Scaleway armv8. Si tel est le cas, vous n'avez aucune chance. Les serveurs Scaleway armv8 sont basés sur ThunderX. Utilisez plutôt le Scaleway C1, qui est natif arm32.

13
Riku Voipio