カーネルアーキテクチャとオペレーティングシステムアーキテクチャ

カーネルアーキテクチャとオペレーティングシステムアーキテクチャ

カーネルアーキテクチャとオペレーティングシステムアーキテクチャの違いは何ですか?バイナリをコンパイルするアーキテクチャを見つけようとすると、次のうちどれが関連していますか?

私が知っている限り、一部のディストリビューションでは、32ビットオペレーティングシステムを使用しても64ビットカーネルをインストールできます。

何を印刷するのかuname -i、カーネルアーキテクチャまたはオペレーティングシステムアーキテクチャ?そして?dpkg --print-architecturearch

ベストアンサー1

カーネルアーキテクチャは、カーネルの「好ましい」アーキテクチャです。これはuname -mおよびが提供するアーキテクチャですarch。たとえば、64ビットx86互換CPUで実行されている64ビットカーネルでは、ファイルはx86_64

一部のプラットフォームでは、カーネルは複数のアーキテクチャに対してバイナリを実行できます。たとえば、64ビットx86カーネルは、32ビットバイナリ(「以前」i386/ i686ABIおよびx32. これらのバイナリを実行すると、CPUに32ビットモードで実行するように指示し、32ビットシステム呼び出しと基本64ビットシステム呼び出しの間の変換を提供することによってこれを実現します。サポートします。渡すQEMUを使用すると、カーネルはQEMUがサポートするすべてのアーキテクチャ(armhf64ビットIntel CPUなど)に対してバイナリを実行できます。バイナリ自体と必要な翻訳レイヤに加えて、バイナリと同じアーキテクチャを共有する適切なライブラリも必要です。これはマルチアーキテクチャが役に立つ部分であり、マルチアーキテクチャ以前には作業分業があり/lib32ました。/lib64(ABI 2〜3個を扱うのが面倒だと思われる場合は、MIPSシステムを見てください...)

この文脈では、「オペレーティングシステムアーキテクチャ」はいくつかの意味を持つことができます。つまり、システムがインストールされたときに使用されるアーキテクチャであることも、システムのほとんどのバイナリで使用されるアーキテクチャでもあります。 Debian派生製品は、dpkgによって提供されるインストール済みパッケージですdpkg --print-architecture

バイナリをビルドするときの最も簡単なターゲットアーキテクチャは、適切なライブラリもあると仮定すると、コンパイラのデフォルトのターゲットアーキテクチャです。通常、これが何を意味していても、オペレーティングシステムのアーキテクチャになります。ここでは、カーネルアーキテクチャは特に重要ではありません。 Debian 派生製品では、マルチアーキテクチャ拡張にはクロスコンパイルが含まれます。これは、すべてのDebianシステムでサポートされているDebianアーキテクチャのバイナリを構築する方が簡単になることを意味します。しかし、これはかなり具体的なユースケースであり、まだ特定の事項を理解する必要があります。クロスコンパイル制約に対する親しみのあるレベル。だから基本アーキテクチャに固執してください...

uname -i何でも印刷するときは、カーネルアーキテクチャバリアントを印刷してください。uname -p -i 不明それについて詳しく教えてくれます。

おすすめ記事