Bashスクリプトは現在のLinuxアーキテクチャを検出する必要があります。時にはunameが情報を提供するのを見たことがありますが、難しいです。 unameコマンド以外の場所に表示されるかどうかは、システムによって異なります。
Debian ベースのシステムではこのコマンドが表示されますが、dpkg --print-architecture
Debian ベースのシステムにのみ適用されます。
i386、amd64、armhf、armel、arm64などであることを確認する必要があります。
すべてのLinuxシステムで動作する「汎用」ツールはありますか?現在インストールされているカーネルアーキテクチャが必要です。私のハードウェアがサポートできるアーキテクチャではありません。
答え1
GNUコアツールカーネルがコンパイルされたアーキテクチャを印刷し、arch
コマンドが付属しています。uname -m
dpkg --print-architecture
システムにどのアーキテクチャのバイナリをインストールできるかを知りたい場合は、このツールが適しています(アプリケーションバイナリインタフェース、ABI)。いわゆる話すことに注意してください。マルチアーキテクチャ複数のアーキテクチャを備えたシステム。例:Debian PCは、64ビットCPUで64ビットカーネルと32/64ビット混合ソフトウェアを実行できます。これは、従来の32ビットアプリケーションを実行しながら64ビットの利点を活用したい場合に便利です。 Debian と派生ディストリビューションはこの点で非常に強力ですが、他のディストリビューションが同様の機能を提供しているかどうかはわかりません。
chroot環境またはコンテナ内で使用されるアーキテクチャを見つけるための移植可能な方法(ABIなど)を探している場合は、コンパイルされたシステムファイルの1つのアーキテクチャを確認できます。
$ file -Lb /usr/bin/ld | cut -d, -f2
x86-64
答え2
uname -m
可能性はさまざまです/proc/cpuinfo
。getconf
また、解析できる構成情報がたくさんあります。 LSB(Linux Standard Library)に何かがあることを確認してください。