web-dev-qa-db-ja.com

Solaris32ビット/ 64ビットの混乱

AMDにSolarisを搭載しています-

uname -a与える

OS Solaris 10 x86_64 (SunOS goldtpus34 5.10 Generic_144489-11

32ビットカーネルか64ビットカーネルかを知りたかったので、

/usr/bin/isainfo -k

それは言う

AMD64

しかし、私がするとき

file /sbin/init 

それは言う

ELF 32-bit LSB executable 80386 Version 1, dynamically linked, stripped

また、私がファイルする場合、それは言う

ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR FPU], dynamically linked, not stripped 

したがって、カーネルを64ビットモードで動作させても、System utils/process spawner(init)を32ビットモードで動作させることは可能ですか。

私は混乱しています。

SolarisおよびLinuxでOSカーネルが64/32ビットモードであるかどうかを正確に取得するにはどうすればよいですか?

3
goldenmean

isainfo -kの出力は、カーネルがどのモードで実行されているかを示します。あなたの場合、64ビットカーネルを実行しています。すべて内部カーネルは64ビットモードで実行されます(デバイスドライバー、システムコールなど)

Solaris(および他の多くのOS)の利点は、32ビットバイナリもネイティブに実行できることです。 Solaris OSに付属するほとんどのプログラム、ツール、ユーティリティは32ビットツールです。唯一の例外は、/ usr/bin/AMD64にあるものです。これらは通常、カーネル構造を直接操作する必要があるか、直接アドレス指定可能なより大きなメモリスペースを利用したいものです。それらは自動的に選択されます(32ビットの対応物は/ usr/bin/i86にあります)から/問題のツールがハードリンクされているusr/lib/isaexec/ usr/bin/ps、たとえば、/ usr/lib/isaexec)へのハードリンクです。

initは、32ビットバイナリの形でのみ提供されます。これは問題ありません。実行しているカーネルについては何も述べていません。 Solaris 2.3イメージからの同じinitは、Solaris 11(つまり、SPARC)でも完全に正常に実行されると確信しています。それは本当にエキサイティングなことは何もしません。

6
mghocke

Oracleフォーラムのこのスレッド それはあなたの混乱を共有する他の誰かを扱っているという点であなたの状況を非常によく説明しています。関連するポイントのいくつかを引用しますが、スレッドを一読する必要があります。

Solaris 10は、32ビットと64ビットの両方のアーキテクチャで同じメディアで提供されます。正しいモードは、インストール後の最初の起動時に自動的に選択されます。

システムが32ビットで起動されている場合、Solarisは32ビットCPUを検出しています。

このコマンドの出力は何ですか:

# isainfo -kv

# psrinfo -pv

したがって、OSが64ビットプロセッサを検出したと報告した場合、64ビットモードで動作します。

1
Bon Gart