Получение информации о железе в 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.
Познакомились со следующими утилитами: