web-dev-qa-db-ja.com

32ビットvs 64ビットvs ARM

したがって、Raspbian(基本的にARM LXDEを含むDebian派生物)を実行すると、aptitudeを使用して通常のパッケージをインストールできます。たとえば、.debファイルをダウンロードしたい場合は、 32ビットまたは64ビットを選択してダウンロードし、Raspbianで実行する必要があります(動作しません)。

ARM=システムで、公式リポジトリからのパッケージのインストールが機能するのはなぜですか?互換性がないのはなぜですか?

また、ハードウェアとソフトウェアのビットの違いについて少し混乱しています。 ARMハードウェアですよね?

6
evamvid

TL、DR:「32ビット」と「64ビット」の選択肢しか提供されていない場合、Raspberry Pi(または他のARMベースのコンピューター)にはどちらも正しくありません。 ARM用のパッケージと、ブートするための適切なパッケージ、つまりarmhfが必要です。

「32ビット」と「64ビット」は、プロセッサアーキテクチャの特性の1つにすぎません。多くのプロセッサフ​​ァミリには、32ビットと64ビットの両方のバリアント(x86、ARM、Sparc、PPC、MIPSなど)があります。 Debian だけでも、さまざまなプロセッサの特性とさまざまなソフトウェアの特性に対応する23の公式バイナリディストリビューションがあります。

システムの [〜#〜] abi [〜#〜] に一致するパッケージをインストールする必要があります。 ABI(アプリケーションバイナリインターフェイス)には、プロセッサの種類(より正確には、その命令セット)だけでなく、プログラムの相互作用方法に関連する他の特性も含まれています。特に、プログラムがライブラリ内にあるコードを呼び出すと、ABIはライブラリ関数への引数がどのように渡されるか(レジスタ内またはスタック上)を決定します。

PCの世界では、2つの命令セットがあります(重要ではないマイナーなバリエーションまで)。

  • IA-32x86 のバリアント、一般にi386(Debianで使用される名前)またはi686(これは、 IA-32は、x86アーキテクチャシリーズの世代です。
  • x86-64 、別名x64またはAMD64(Debianで使用される名前)(完全に異なるIA-64と混同しないでください)。

IntelとAMDはどちらも、x86およびx86-64命令セットを実装するプロセッサを製造しています。最近のPCには、x86-64とx86の両方の命令セットをサポートするプロセッサーがあります。古いPCには、x86のみをサポートするプロセッサが搭載されています。 x86命令セットは32ビットレジスターを使用し、x86-64命令セットは64ビットレジスターを使用し、すべてのLinuxインストールで使用される単一のABIがあるため、これらは単に「32ビットレジスター」として説明されます」または「64ビット」。 PCのコンテキストでは、「32ビット」は「x86」を意味し、「64ビット」は「x86-64」を意味します。

ARMプロセッサには、まったく異なる命令セットがあります。 ARMシステムにx86またはx86-64パッケージをインストールすることはできません。正しい命令セット、さらに一般的には正しいABIのために、ARM用のパッケージが必要です。メジャー64はありません。 64ビット命令セットを導入する ARMv8 アーキテクチャリビジョンはまだ非常に新しいため、64ビットARMプロセッサの-bitディストリビューションはまだ一般的には利用できません。ただし、複数の32ビットABIがあり、これらは異なるプロセッサ機能の存在を想定し、引数渡し規則の異なるバージョンを使用しています。Linuxで使用される主なARM ABIは、

Armhfをサポートするすべてのデバイスはarmelもサポートします。ただし、特定のシステムインストールは一貫している必要があります。 Raspbianはarmhfを使用します(実際、それはarmhfが新しいものであったときに、Debianのarmelのarmhfへの移植として始まりました)。

¹ 少なくとも主流のディストリビューションでは。さまざまなバージョンの標準Cライブラリ(glibc、dietlibc、uclibcなど)に対してコンパイルされたパッケージを含む、いくつかのx86バイナリリリースを含む組み込みディストリビューションがあります。

したがって、Raspbian(基本的にはARM LXDEを含むDebian派生物)を実行すると、aptitudeを使用して通常のパッケージをインストールできます。

Raspbianを実行している場合、aptitudeはRaspbianリポジトリからパッケージを取得します。 Raspbian FAQ で説明されているように、パッケージはRaspberry Piで使用されるARMv6用にコンパイルされています。 Debian公式パッケージを使用していません。再びFAQから、DebianarmhfはARMv7-A CPU以上をサポートし、Debianarmelサポートされていない能力の低いARM CPU。

32ビットまたは64ビットを選択してダウンロードする必要があります

「x86とx86_64のどちらかを選択する」という意味の場合、それらは x86 アーキテクチャ(または最近のi686)または x86_64 用にコンパイルされます。 [〜#〜] arm [〜#〜] アーキテクチャでは機能しません。 Raspbian用にコンパイルされた(または 同じオプション で)コンパイルされた.debを見つけてダウンロードするか、自分でコンパイルする必要があります。

ハードウェアとソフトウェアのビットの違いについても少し混乱しています。

質問をよく理解しているとは思いませんが、x86_64をサポートするプロセッサは32ビットx86も実行できるため、最近のCPUに32ビットバージョンのディストリビューションをインストールし、x86_64対応ハードウェアで32ビットソフトウェアのみを使用できます。

0
Leiaz