3

У меня есть солярис на AMD-

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-битном режиме.

Я сбит с толку.

Как точно получить, если ядро ОС находится в 64/32 битном режиме на Solaris и на Linux?

2 ответа2

6

Вывод isainfo -k показывает, в каком режиме работает ядро. В вашем случае вы используете 64-битное ядро. Все внутри ядра работает в 64-битном режиме (драйверы устройств, системные вызовы и т.д. И т.д.)

Прелесть Solaris (и, как я полагаю, многих других ОС) в том, что он также может выполнять 32-битные двоичные файлы. Большинство программ, инструментов, утилит, поставляемых с ОС Solaris, являются 32-битными инструментами. Единственными исключениями являются те, которые вы можете найти в /usr/bin/amd64. Как правило, это те, которые должны работать со структурами ядра напрямую или использовать преимущества большего объема памяти, адресуемой напрямую. Они выбираются автоматически (их 32-битные аналоги можно найти в /usr/bin/i86) через /usr/lib/isaexec, с которым жестко связаны эти инструменты (например, /usr/bin/ps жесткая ссылка на /usr/lib/isaexec).

init доступен только в форме 32-битного двоичного файла, что нормально. Здесь ничего не сказано о том, какое ядро вы используете. Я совершенно уверен, что та же инициализация с образа Solaris 2.3 все еще будет работать отлично под Solaris 11 (то есть под SPARC). Это действительно не делает ничего захватывающего.

1

Эта ветка на форумах Oracle достаточно хорошо объясняет вашу ситуацию, поскольку она имеет дело с кем-то, кто разделяет вашу путаницу. Я процитирую несколько важных пунктов, но вы должны прочитать ветку.

Solaris 10 поставляется как в 32-разрядной, так и в 64-разрядной архитектуре на одном носителе. Правильный режим будет автоматически выбран при первой загрузке после установки.

Если система загружается в 32-разрядной версии, то Solaris обнаружил 32-разрядный процессор.

Каковы результаты этой команды:

# isainfo -kv

# psrinfo -pv

Таким образом, если ОС сообщает, что обнаружила 64-разрядный процессор, она будет работать в 64-разрядном режиме.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .