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
次に、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
また、binfmt-support
をインストールして、binfmt_misc
モジュールがロードされたことを確認しました。
arm64
はarmhf
と後方互換性がありませんか? arm64
サーバーでarmhf
実行可能ファイルを実行するにはどうすればよいですか?
Arm64のArm32サポートはオプションです。実際には、レガシーarm32命令セットのサポートを省略しているarm64 CPUは1つだけです-Cavium ThunderX。カーネルバージョン文字列から、Scaleway armv8サーバーを使用しているようです。この場合、運が悪い-Scaleway armv8サーバーはThunderXに基づいています。代わりに、ネイティブarm32であるScaleway C1を使用してください。