Получение информации о железе в Linux

Получение информации о железе в Linux — это один из важных навыков. В этой статье мы рассмотрим разные утилиты для этой задачи.

Информация о центральном процессоре

Файл /proc/cpuinfo

Посмотреть информацию о центральном процессоре можно в файле /proc/cpuinfo, например:

# cat /proc/cpuinfo 

*** Вывод обрезан ***

processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 58
model name      : Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz
stepping        : 9
microcode       : 0x12
cpu MHz         : 3044.420
cache size      : 8192 KB
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
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 pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm cpuid_fault epb pti tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips        : 6799.95
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

В выводе вы увидите информацию по каждому ядру. Их у меня 8, и так как отсчет начинается с нуля то последнее ядро имеет номер 7 (processor : 7). Из вывода вы можете определить модель процессора (model name : Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz), и другую информацию.

Утилита lscpu

Также вы можете использовать утилиту lscpu, которая получает информацию из уже рассмотренного файла /proc/cpuinfo и файловой системы sysfs.

Эта команда выводит информацию об архитектуре ЦП, например:

# lscpu 
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
Address sizes:       36 bits physical, 48 bits virtual
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  2
Core(s) per socket:  4
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               58
Model name:          Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz
Stepping:            9
CPU MHz:             2473.007
CPU max MHz:         3800.0000
CPU min MHz:         1600.0000
BogoMIPS:            6799.95
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            8192K
NUMA node0 CPU(s):   0-7
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 pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm cpuid_fault epb pti tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts

Здесь также видна модель процессора (Model name: Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz). Количество ядер (CPU(s): 8). Можем заметить что настоящих ядер всего 4 (Core(s) per socket: 4), но каждое ядро способно обрабатывать 2 потока (Thread(s) per core: 2). Технология разделения одного ядра на два потока называется гипертрейдинг (hyper-threading).

Информация о pci

Утилита lspci

Утилита lspci используется для вывода информации о шинах PCI в системе и подключенных к ним устройствах.

Пример работы:

# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 05)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a5)
00:1f.0 ISA bridge: Intel Corporation C204 Chipset Family LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)
02:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
02:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
05:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection
06:03.0 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200eW WPCM450 (rev 0a)

Здесь мы видим все PCI мосты и устройства, подключенные к серверу. Например, видна сетевая карта на два SFP+ выхода, и другие, две, гигабитные сетевые карта. Также видим SATA контроллер и другое.

С опцией -k, можно увидеть, какие модули ядра обслуживают то или иное устройство:

# lspci -k
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller (rev 09)
        Subsystem: Super Micro Computer Inc Xeon E3-1200 v2/Ivy Bridge DRAM Controller
        Kernel driver in use: ie31200_edac
        Kernel modules: ie31200_edac
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
        Kernel driver in use: pcieport
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
        Kernel driver in use: pcieport
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 05)
        Subsystem: Super Micro Computer Inc 82579LM Gigabit Network Connection (Lewisville)
        Kernel driver in use: e1000e
        Kernel modules: e1000e
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
        Subsystem: Super Micro Computer Inc 6 Series/C200 Series Chipset Family USB Enhanced Host Controller
        Kernel driver in use: ehci-pci
        Kernel modules: ehci_pci

*** Вывод урезан ***

02:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
        Subsystem: Intel Corporation Ethernet Server Adapter X520-2
        Kernel driver in use: ixgbe
        Kernel modules: ixgbe
02:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
        Subsystem: Intel Corporation Ethernet Server Adapter X520-2
        Kernel driver in use: ixgbe
        Kernel modules: ixgbe

*** Вывод урезан ***

С помощью опции -s можно указать конкретное устройство, а с помощью опции -v можно получить больше информации. Например, получим больше информации по сетевой карте:

# lspci -s 02:00.0 -v
02:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)
        Subsystem: Intel Corporation Ethernet Server Adapter X520-2
        Flags: bus master, fast devsel, latency 0, IRQ 17
        Memory at df180000 (64-bit, non-prefetchable) [size=512K]
        I/O ports at e020 [size=32]
        Memory at df604000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
        Capabilities: [70] MSI-X: Enable+ Count=64 Masked-
        Capabilities: [a0] Express Endpoint, MSI 00
        Capabilities: [e0] Vital Product Data
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [140] Device Serial Number 00-1b-21-ff-ff-bc-c0-62
        Capabilities: [150] Alternative Routing-ID Interpretation (ARI)
        Capabilities: [160] Single Root I/O Virtualization (SR-IOV)
        Kernel driver in use: ixgbe
        Kernel modules: ixgbe

Информация по usb устройствам

Утилита lsusb

Утилита lsusb используется для вывода информации о шинах USB в системе и подключенных к ним устройствах.

Пример работы:

# lsusb 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0557:2221 ATEN International Co., Ltd Winbond Hermon
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

А также, с помощью опции -t мы можем посмотреть информацию в древовидном виде:

# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=tusb-vhci-driver/15p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=tusb-vhci-driver/15p, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 1.5M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=tusb-stub-driver, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M

Кстати, в древовидном виде также отображается информацию по драйверам.

Также как в lspci мы можем указать конкретное устройство с помощью опции -s, и получить больше информации используя -v, например:

# lsusb -s 003:002 -v

Bus 003 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0529 Aladdin Knowledge Systems
  idProduct          0x0001 HASP copy protection dongle
  bcdDevice            3.25
  iManufacturer           1 AKS
  iProduct                2 HASP HL 3.25
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0014
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               50mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      ** UNRECOGNIZED:  02 ff
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Здесь видна информацию о usb ключе для 1С.

Утилита usb-devices

Команда usb-devices — это сценарий оболочки, который также показывает информацию о usb шинах и подключенных к ним устройствах, например:

# usb-devices 

*** Вывод урезан ***

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 2
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=05.04
S:  Manufacturer=Linux 5.4.114-1-pve ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:1d.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 6
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=8087 ProdID=0024 Rev=00.00
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=1.5 MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0529 ProdID=0001 Rev=03.25
S:  Manufacturer=AKS
S:  Product=HASP HL 3.25
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=50mA
I:  If#=0x0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=tusb-stub-driver

*** Вывод урезан ***

Получение общей информации о железе

Для получения информации о железе также существуют специальные утилиты.

  • Утилита lshw позволяет получить информацию о всём железе сразу, для этого утилита обращается к ядру и к файловым системам /proc и /sys, а также взаимодействует с драйверами устройств. Но более интересно то, что эта утилита умеет выводить информацию в разных форматах (html, json, xml). Про эту утилиту я писал здесь.
  • Утилита dmidecode также получает всю информацию о железе и отображает её. Но для сбора информации используется таблица DMI, что делает сбор информации более быстрым. Подробнее про неё я писал здесь.

Если понравилась статья, подпишись на мой канал в VK.

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