Исследуем аппаратуру на удалённом Linux-боксе (dmidecode)

dmidecode - определение аппаратуры под linuxДолгое время информация о железе на машине с уже установленным Linux (ну, например, на удалённом хосте) была почти что "тайной за семью печатями". Хотя я пользовался для определения данных об аппаратуре в Linux разными "кустарными" способами: часть информации можно вытянуть из /proc/cpuinfo и /proc/meminfo, часть -- из lspci, часть -- из hdparm. Многие вещи (версия BIOS, информация о памяти) вообще требовали перезагрузки компьютера и входа в CMOS setup или вскрытия корпуса, поэтому в случае удалённой машины были невозможны.

Очень хорошо, что я вовремя узнал про dmidecode. Вообще, DMI (Desktop Management Interface) -- это интерфейс, позволяющий собирать данные о "железе". А dmidecode -- программа, которая с этим интерфейсом взаимодействует. В Linux утилита dmidecode обычно входит в состав дистрибутива (я, по крайней мере ещё не сталкивался с дистрибутивами, где бы её не было. Но, если что, скачать исходники dmidecode можно с его домашней страницы). В портах есть версия и для FreeBSD.

Что касается железа: единственное условие -- BIOS компьютера должен иметь расширение SMBIOS. Его имеют практически все современные машины (работая по инвентаризации парка машин на работе я добирался до "древних" P-III -- на них всё работало. Ради любопытства запустил на Pentium MMX-200 -- не пошла, сказала "No SMBIOS nor DMI entry point found, sorry" Вот P-II для  эксперимента я не нашёл, поэтому ничего не могу сказать.

Использовать утилиту очень просто:

dmidecode|less

Так как вывод на экран очень обширный и пролистывать придётся много. Ключи у dmidecode есть, они главным образом упорядочивают вывод на экран по категориям.

Итак, что же можно узнать "в ходе допроса свидетеля"?

  • BIOS: версию, производителя, дату, размер, характеристики (что поддерживает, что -- нет), даже языки
  • Платформу: производителя (в худшем случае материнской платы, в брэндовом -- всей системы), серийный номер (не всегда), версию. Для некоторых брендов -- даже высота стоечного корпуса в юнитах и количество вентиляторов
  • Материнская плата: чипсет, версия, серийник. На некоторых моделях матерей -- даже (!) разъёмы для обнуления CMOS и/или пароля на BIOS
  • Процессор(ы): сокет, семейство, производитель, модель, степпинг, поддерживаемые флаги, версию, вольтаж питания, частоту (максимальную и текущую), тип и размер кэша L1, L2, L3
  • Контроллер памяти
  • Порты: COM, PS, Parallel, IDE, SATA
  • Память: общий объём, количество модулей, их тип, скорость, производителя (если повезёт), размер, занятые/свободные слоты
  • Слоты: тип -- PCI, PCI-E, количество, вольтаж
  • Периферия: сетевые карты, видео. Как минимум, можно узнать производителя и модель, а дальше -- Google в помощь!

Но это только основные данные. Я сильно надеюсь, что мне удалось заинтриговать вас. Реально, параметров ещё больше, так что стоит один раз посмотреть вывод этой полезной утилиты -- узнаете много нового и интересного о своём компьютере :-)