Получение информации о железе в 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




Утилита lshw позволяет получить информацию о всём железе сразу, если выполнить её без опций, но вывод будет очень большим.




Чтобы уменьшить вывод, можно получить информацию по какой-то из подсистем с помощью опции -class. Доступные подсистемы:




  • network (сетевые интерфейсы);



  • processor (центральный процессор);



  • storage (sata интерфейсы);



  • disk (диски);



  • volume (разделы);



  • memory (планки памяти);



  • system (системная плата);



  • bus (шины, покажет usb);



  • bridge (pci мосты);



  • display (дисплеи).




Например:




# lshw -class processor
  *-cpu                     
       description: CPU
       product: Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz
       vendor: Intel Corp.
       physical id: 3b
       bus info: cpu@0
       version: Intel(R) Xeon(R) CPU E3-1245 V2 @ 3.40GHz
       slot: CPU
       size: 3703MHz
       capacity: 3800MHz
       width: 64 bits
       clock: 100MHz
       capabilities: lm fpu fpu_exception wp 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 x86-64 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 cpufreq
       configuration: cores=4 enabledcores=4 threads=8




Но более интересно то, что эта утилита умеет выводить информацию в формате html. Таким образом можно собрать всю информацию о железе в файл html:




# lshw -html > hw.html




Дальше, просто, забираем файл hw.html себе на компьютер и открываем его с помощью браузера.




Утилита dmidecode




Утилита dmidecode работает схожим образом с lshw. Выполнение dmidecode без дополнительных опций покажет информацию обо всём. Но можно ограничить вывод по определённому типу устройства с помощью опции -t.




Возможные типы оборудования:




  • bios (BIOS);



  • system (системная плата);



  • baseboard (системная плата);



  • chassis (переключатели и датчики шасси);



  • processor (процессор);



  • memory (оперативная память);



  • cache (кэш-память);



  • connector (коннекторы на системной плате);



  • slot (pci слоты).




Например:




# dmidecode -t memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0007, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Single-bit ECC
        Maximum Capacity: 32 GB
        Error Information Handle: 0x0010
        Number Of Devices: 4

Handle 0x000F, DMI type 17, 34 bytes
Memory Device
        Array Handle: 0x0007
        Error Information Handle: 0x0013
        Total Width: 128 bits
        Data Width: 64 bits
        Size: 8192 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM_1A
        Bank Locator: BANK 0
        Type: DDR3
        Type Detail: Synchronous
        Speed: 1600 MT/s
        Manufacturer: Kingston
        Serial Number: B73A847C
        Asset Tag: 9876543210
        Part Number: 9965525-024.A00LF 
        Rank: 2
        Configured Memory Speed: 1600 MT/s

 *** И так по всем 4 планкам ***









Итог




В этой статье мы пробежались по некоторым утилитам, с помощью которых можно осуществлять получение информации о железе в Linux.




Познакомились со следующими утилитами:













2022-11-16T11:37:03
Администрирование Linux