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