Как запустить исполняемые файлы armhf в системе arm64?

У меня установлен 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?

7
задан 27 June 2017 в 20:14

3 ответа

Поддержка Arm32 необязательна на arm64. На практике есть только один процессор arm64, который не поддерживает устаревшую поддержку набора команд arm32 - Cavium ThunderX. Из строки версии ядра кажется, что вы используете серверы Scaleway armv8. Если это так, вам не повезло - серверы Scaleway armv8 основаны на ThunderX. Вместо этого используйте Scaleway C1, который является родным arm32.

9
ответ дан 22 May 2018 в 21:15
  • 1
    Хорошо, я использую Scaleway. Спасибо за разъяснения. – Nathan Osman 27 June 2017 в 22:06
  • 2
    Сервер Packet Type 2A также основан на ThunderX и также подвержен этому ограничению. – vielmetti 28 June 2017 в 18:33

Поддержка Arm32 необязательна на arm64. На практике есть только один процессор arm64, который не поддерживает устаревшую поддержку набора команд arm32 - Cavium ThunderX. Из строки версии ядра кажется, что вы используете серверы Scaleway armv8. Если это так, вам не повезло - серверы Scaleway armv8 основаны на ThunderX. Вместо этого используйте Scaleway C1, который является родным arm32.

9
ответ дан 18 July 2018 в 11:13

Поддержка Arm32 необязательна на arm64. На практике есть только один процессор arm64, который не поддерживает устаревшую поддержку набора команд arm32 - Cavium ThunderX. Из строки версии ядра кажется, что вы используете серверы Scaleway armv8. Если это так, вам не повезло - серверы Scaleway armv8 основаны на ThunderX. Вместо этого используйте Scaleway C1, который является родным arm32.

9
ответ дан 24 July 2018 в 19:44

Другие вопросы по тегам:

Похожие вопросы: