понедельник, 12 августа 2013 г.

Получаем информацию об оборудовании

Потребовалось посмотреть начинку для solaris 10.0 под sparc, гугление долго ничего не показывало. И вдруг обнаружилась крайне интересная статейка
32 vs 64: Как определить битность операционной системы и процессора
Начало бесполезно, а вот дальше шли основные диагностические команды, по которым стало понятно всё о начинке, в частности isainfo -kv, psrinfo -v, prtdiag
Плюсом про HP-UX, AIX есть.

Ниже копипаста, мало ли исчезнет оригинал.




Иногда внезапно бывает нужно определить битность (32 или 64 бита) операционной системы, битность и тип железа на котором она бежит. Это разные вещи, ибо 32-хбитная операционка может бежать на 64-хбитном процессоре. А наоборот — нет. Для определения битности, а так же некоторых прочих маленьких милых деталей читайте нижеследующий гайд.
[дополнение] На самом деле, я фшоке сколько на эту статью набигают по запросам типа «как узнать битность системы» и «определить 32 или 64 бита». Так как в запросе не указана операционная система для которой это спрашивается, то это набигает школота и интересуется она Windows. Специально для них в конце статьи добавлен раздел «Определение битности Windows». А чотким пацанам интересующимся за юниксы читать ниже.

Linux

Ну, тут легко. «Все красноглазые знают это». По крайней мере, с архитектурой x86, о которой пойдёт речь. Используем uname или arch.

Способ 1

Просто говорим arch. Если ответ i386 — то это 32 бита. Вместо тройки может быть 4, 5 или 6. Если ответ x86_64 — то это 64 бита. Если ответ ia64 — то это тоже 64 бита, процессор Intel Itanium или Intel Itanium 2.
[root@ololo ~]# arch
i686

Способ 2

man от uname как бы говорит нам, что опция:
-a, --all    выводит всю подробную информацию
-m, --machine    выводит сведения о типе компьютера
-p, --processor    выводит тип процессора для данного компьютера
-i, --hardware-platform    выводит сведения о платформе компьютера
Поэтому достаточно посмотреть на вывод uname -imp или uname -a:
[root@ololo ~]# uname -imp
i686 i686 i386
[root@ololo ~]# uname -a
Linux ololo.ru 2.6.18-194.26 #1 SMP Fri Dec 17 19:25:15 MSK 2010 i686 i686 i386 GNU/Linux

Способ 3

Тут даже без комментариев.
[root@ololo ~]# getconf LONG_BIT
32

Способ 4

Наконец, можно просто посмотреть на битность бинарника ядра:
[root@ololo32 ~]# file /boot/vmlinuz-`uname -r`
/boot/vmlinuz-2.6.18-194.0.0.0.3.el5PAE: ELF 32-bit LSB shared object, Intel 80386, version 1, stripped

[root@ololo64 ~]# file /boot/vmlinuz-`uname -r`
/boot/vmlinuz-2.6.18-194.0.0.0.3.el5: ELF 64-bit LSB shared object, AMD x86-64, version 1, stripped

Битность процессора

Но 32-хбитная операционка не означает, что процессор не умеет набор 64-хбитных инструкций. Чтобы узнать, поддерживает ли процессор набор инструкций AMD64 или Intel EM64T, смотрим наличие флага lm (long mode) в строке флагов процессора в /proc/cpuinfo. Если флага lm нет — процессор 32-хбитный.
[root@ololo ~]# grep ^flags /proc/cpuinfo | grep lm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc
nonstop_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
Для процессоров Intel Itanium (ia64) это не работает, у них нет строчки «flags» и они всегда 64-хбитные.

Solaris

Способ 1

Смотрим на бинарник /bin/isainfo или /usr/bin/isainfo. Если его нет — система 32-хбитная. Если есть — запускаем isainfo -kv. Вывод однозначен. Ниже примеры для Solaris 8, 9 и 10.
sol8# uname -a; isainfo -kv
SunOS sol8 5.8 Generic_117350-39 sun4u sparc SUNW,Sun-Fire
64-bit sparcv9 kernel modules

sol9# uname -a; isainfo -kv
SunOS sol9 5.9 Generic_118558-10 sun4u sparc SUNW,Sun-Fire-V490
64-bit sparcv9 kernel modules

sol10# uname -a; isainfo -kv
SunOS sol10 5.10 Generic_142900-02 sun4u sparc SUNW,SPARC-Enterprise
64-bit sparcv9 kernel modules

Битность процессора

Тип процессора определяется из вывода uname -psparc — это (сюрприз!) SPARC процессор,i86pc — это Intel x86. На процессор смотрим командой /usr/sbin/psrinfo -v. Наличие sparcv9в выводе как бы говорит нам о 64-хбитности процессора. Ну и на частоту можно посмотреть:
sol10# psrinfo -v
Status of virtual processor 0 as of: 02/17/2011 14:52:08
  on-line since 06/23/2010 01:25:47.
  The sparcv9 processor operates at 2400 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 1 as of: 02/17/2011 14:52:08
  on-line since 06/23/2010 01:25:48.
  The sparcv9 processor operates at 2400 MHz,
        and has a sparcv9 floating point processor.

Инфа 100% о железе

Инфа об окружающем железе получается из команд /usr/sbin/prtdiag и /usr/sbin/prtpicl. С опцией «-v» будет еще подробней. Ниже пример с самым интересным из вывода.
sol10# prtdiag
System Configuration:  Sun Microsystems  sun4u Sun SPARC Enterprise M5000 Server
System clock frequency: 1012 MHz
Memory size: 65536 Megabytes

==================================== CPUs ====================================
... skip ...
============================ Memory Configuration ============================
... skip ...
========================= IO Cards =========================
... skip ...
==================== Hardware Revisions ====================
System PROM revisions: OBP 4.24.10 2008/08/12 19:52
=================== System Processor Mode ===================
SPARC64-VII mode

HP-UX

HP-UX — адовая операционка, есличо. Её просто нужно уметь готовить. Многое в ней неудобно (отсутствие гнушных утилит, например), но многое зач0тно (железная и гипервизорная виртуализация искаропки, допустим).

Способ 1

Тоже без комментариев. getconf KERNEL_BITS и пыщь.
hpux# getconf KERNEL_BITS
64

Способ 2

Аналогично. Смотрим на битность файла с ядром.
hpux64# /usr/bin/file /stand/vmunix
/stand/vmunix: ELF-64 executable object file - PA-RISC 2.0 (LP64)

hpux32# /usr/bin/file /stand/vmunix
/stand/vmunix: PA-RISC1.1 executable -not stripped

Инфа о процессоре и релизе операционки

Несколько слов о том, какие сочетания вообще бывают. Сейчас последняя версия HP-UX — 11i. Её релизы: HP-UX 11.0 (B.11.00 — адское старьё), HP-UX 11i v1 (B.11.11), HP-UX 11i v2 (B.11.23) и HP-UX 11i v3 (B.11.31). Может бежать на двух типах процессоров: если в выводе uname -mнаписано 9000/800 — это PA-RISC 2.0, если написано ia64 — это Intel Itanium 2. Пара примеров с реальных систем:
dev1# uname -a
HP-UX dev1 B.11.11 U 9000/800 651111111 unlimited-user license

prod2# uname -a
HP-UX prod2 B.11.23 U ia64 4271111111 unlimited-user license

Инфа о железе

Наиболее быстрый способ — запустить sam — псевдо-гуёвую (или гуёвую, если в иксах) утилиту, которая есть искаропки во всех HP-UX. sam -> [Enter] -> Performance Monitors -> System Properties и ты-дыщ!
  ┌───────────┐┌────────┐┌──────────────────┐┌─────────┐┌─────────┐
  │ Processor ││ Memory ││ Operating System ││ Network ││ Dynamic │
  │           ────────────────────────────────────────────────────────┐
  │┌──────────────────────────────────────────────────────────────────┐│
  ││Processors:                                                       ││
  ││  Active:                6                                        ││
  ││  Total:                 8                                        ││
  ││Clock Frequency:         400 MHz , 1598 MHz(Core Freq.)           ││
  ││Machine Identification:  4211111111                               ││
  ││Hardware Model:          ia64 hp server rx8640                    ││
  ││Kernel Width Support:    64                                       ││
  ││CPU Version:             Intel(R) Itanium(TM) Family Processor    ││
  ││CPU Model No:            1                                        ││
  ││CPU Revision:            1                                        ││
  │└──────────────────────────────────────────────────────────────────┘│
  └────────────────────────────────────────────────────────────────────┘

AIX

Способ 1 (только от root)

aix64# /usr/sbin/bootinfo -K
64

Способ 2

aix64$ /usr/bin/locale64
LANG=en_US
LC_COLLATE="en_US"
... skip ...

aix32$ /usr/bin/locale64
exec(): 0509-036 Cannot load program /bin/locale64 because of the following errors:
0509-032 Cannot run a 64-bit program on a 32-bit machine.

Способ 3

Файл /unix — симлинка на текущее ядро. Имя ядра доставляет.
aix64$ ls -l /unix
lrwxrwxrwx    1 root     system           21 Nov 19 2007  /unix -> /usr/lib/boot/unix_64

aix32$ ls -l /unix
lrwxrwxrwx    1 root     system           21 Jan 16 2006  /unix -> /usr/lib/boot/unix_mp # либо просто '/usr/lib/boot/unix'

Способ 4

Опять волшебная команда getconf:
aix64$ getconf KERNEL_BITMODE
64

Способ 5

Смотрим на наличие пакета bos.64bit. В 32-хбитной операционке его не будет наличествовать.
aix64$ lslpp -l bos.64bit
  Fileset                      Level  State      Description
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  bos.64bit                 5.3.12.0  COMMITTED  Base Operating System 64 bit
                                                 Runtime

Способ 6

Вообще всё разжуют и в рот положат.
aix64$ /usr/sbin/kdb
The specified kernel file is a 64-bit kernel
... skip ...

Способ 7

Опять смотрим на файл с ядром:
aix64$ file /usr/lib/boot/unix*
/usr/lib/boot/unix_64: 64-bit XCOFF executable or object module not stripped

aix32$ file /usr/lib/boot/unix*
/usr/lib/boot/unix_mp: executable (RISC System/6000) or object module not stripped

Способ 8

aix64$ /usr/sbin/prtconf  | grep ^Kernel
Kernel Type: 64-bit

Инфа о процессоре и железе

Тот же /usr/sbin/prtconf. Инфы выдаёт доставляющей и много. Пример с живой системы:
aix64$ /usr/sbin/prtconf
System Model: IBM,9116-561
Machine Serial Number: 11111XX
Processor Type: PowerPC_POWER5
Processor Implementation Mode: POWER 5
Processor Version: PV_5_3
Number Of Processors: 10
Processor Clock Speed: 1798 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 51 aix64
Memory Size: 20480 MB
Good Memory Size: 20480 MB
Platform Firmware level: SF240_358
Firmware Version: IBM,SF240_358

Network Information
... skip ...
Paging Space Information
... skip ...
Volume Groups Information
... skip ...
INSTALLED RESOURCE LIST
  Model Architecture: chrp
  Model Implementation: Multiple Processor, PCI bus
+ sys0                                                                           System Object
+ sysplanar0                                                                     System Planar
* vio0                                                                           Virtual I/O Bus
* vsa0             U9116.561.11111XX-V51-C0                                      LPAR Virtual Serial Adapter
+ ent4             U1111.001.DQQQQQQ-P1-C5-T1                                    4-Port 10/100/1000 Base-TX PCI-X Adapter
+ fcs0             U1111.001.DQQQQQQ-P1-C3-T1                                    FC Adapter
* fcnet0           U1111.001.DQQQQQQ-P1-C3-T1                                    Fibre Channel Network Protocol Device
+ fscsi0           U1111.001.DQQQQQQ-P1-C3-T1                                    FC SCSI I/O Controller Protocol Device
* hdiskpower4      U1111.001.DQQQQQQ-P1-C3-T1-L8                                 PowerPath Device
* hdisk21          U1111.001.DQQQQQQ-P1-C3-T1-W8888888888888888-L0               EMC CLARiiON FCP RAID 5 Disk
* hdisk22          U1111.001.DQQQQQQ-P1-C3-T1-W8888888888888888-L0               EMC CLARiiON FCP RAID 5 Disk
... skip ...
+ L2cache0                                                                       L2 Cache
+ mem0                                                                           Memory
+ proc0                                                                          Processor
+ proc2                                                                          Processor
+ proc4                                                                          Processor
+ proc6                                                                          Processor
+ proc8                                                                          Processor
+ proc10                                                                         Processor
+ proc12                                                                         Processor
+ proc14                                                                         Processor
+ proc16                                                                         Processor
+ proc18                                                                         Processor

Windows

Разрядностей у Windows на сегодняшний день две: 32 бита и 64 бита, т.е. дистрибутивы делятся на x32 и x64 соответственно. x86 — это обозначение архитектуры процессоров Intel и является синонимом 32-хбитной версии (т.е. если Вы увидите x86, то знайте что речь идет об x32). То есть, если Вы не устанавливали специально 64-битную операционную систему, то Ваша Windows имеет 32-хбитную разрядность. Посмотреть разрядность в системе можно простейшим способом: «Пуск» —> правый клик на «Мой компьютер» (или сразу правый клик на «Мой компьютер», если этот ярлык есть на рабочем столе) —> «Свойства», и видим картинку на которой всё написано русским по белому.
Вот как это выглядит для Windows Vista или Windows 7:
Битность Windows 7
Вот так выглядит для предыдущих версий Windows, включая XP. Если надписи про 64 бита нет — система 32-хбитная.
Битность Windows XP
Для трушных и олдскульных товарищей есть способ узнать битность Windows, а также точный её тип (например, данная Windows 2008 — она R2 или не R2?) из командной строки. Да, правильно. Только командная строка! Только хардкор!
C:\>wmic os get osarchitecture
OSArchitecture
64-bit

C:\>wmic os get Caption,CSDVersion /value
Caption=Microsoft Windows 7 Домашняя расширенная
CSDVersion=Service Pack 1

C:\>winver

C:\>systeminfo
Предпоследняя команда показывает диалоговое окно с информацией о версии Windows. Последняя команда выводит в текстовом режиме кучу информации о системе.

Комментариев нет:

Отправить комментарий