У меня установлен Ubuntu 16.04.2 LTS на сервере 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
Я выполнил следующую команду, чтобы включить установку пакета armhf:
# dpkg --add-architecture armhf
I затем установил пакет 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) ...
Однако я не могу запустить исполняемый файл:
# traceroute
-bash: /usr/sbin/traceroute: cannot execute binary file: Exec format error
Дополнительная информация:
# 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
I также попытался установить binfmt-support и подтвердить, что модуль binfmt_misc был загружен.
Не совместим ли arm64 с armhf? Как я могу запустить исполняемые файлы armhf на сервере arm64?
Поддержка Arm32 необязательна на arm64. На практике есть только один процессор arm64, который не поддерживает устаревшую поддержку набора команд arm32 - Cavium ThunderX. Из строки версии ядра кажется, что вы используете серверы Scaleway armv8. Если это так, вам не повезло - серверы Scaleway armv8 основаны на ThunderX. Вместо этого используйте Scaleway C1, который является родным arm32.
Поддержка Arm32 необязательна на arm64. На практике есть только один процессор arm64, который не поддерживает устаревшую поддержку набора команд arm32 - Cavium ThunderX. Из строки версии ядра кажется, что вы используете серверы Scaleway armv8. Если это так, вам не повезло - серверы Scaleway armv8 основаны на ThunderX. Вместо этого используйте Scaleway C1, который является родным arm32.
Поддержка Arm32 необязательна на arm64. На практике есть только один процессор arm64, который не поддерживает устаревшую поддержку набора команд arm32 - Cavium ThunderX. Из строки версии ядра кажется, что вы используете серверы Scaleway armv8. Если это так, вам не повезло - серверы Scaleway armv8 основаны на ThunderX. Вместо этого используйте Scaleway C1, который является родным arm32.