> For the complete documentation index, see [llms.txt](https://netsec.nerd-cafe.ir/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://netsec.nerd-cafe.ir/network-administrator/lpic-1/101.1-determine-and-configure-hardware-settings.md).

# 101.1 Determine and configure hardware settings

This involves working with:

* BIOS/UEFI
* Boot process
* Hardware devices (PCI, USB, CPU info, etc.)
* Tools like `lspci`, `lsusb`, `dmesg`, `lsmod`, `modprobe`, etc.

### <mark style="color:blue;">**Step 1: Understand the Role of BIOS/UEFI**</mark>

BIOS (Basic Input/Output System) or UEFI (Unified Extensible Firmware Interface) <mark style="color:red;">**initializes hardware before the OS starts**</mark>.

#### Tasks:

* Configure boot device order
* Enable/disable onboard devices
* Manage virtualization support
* Check CPU features like Hyper-Threading, VT-x, etc.

> You must access BIOS/UEFI before the OS boots (usually by pressing `Del`, `F2`, or `Esc` at boot time).

### <mark style="color:blue;">**Step 2: View Hardware Information from Within CentOS**</mark>

#### 2.1 Check CPU Info

```sh
[root@nerd-cafe ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 58
model name      : Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz
stepping        : 9
microcode       : 0x21
cpu MHz         : 2195.019
cache size      : 6144 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
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 mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ssbd rsb_ctxsw ibrs ibpb stibp fsgsbase tsc_adjust smep arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips        : 4390.03
clflush size    : 64
cache_alignment : 64
address sizes   : 45 bits physical, 48 bits virtual
power management:

[root@nerd-cafe ~]#
```

#### 2.2 View Memory Info

```sh
[root@nerd-cafe ~]# cat /proc/meminfo
MemTotal:         995460 kB
MemFree:          424448 kB
MemAvailable:     432864 kB
Buffers:            2108 kB
Cached:           149548 kB
SwapCached:            0 kB
Active:           311924 kB
Inactive:         129364 kB
Active(anon):     290100 kB
Inactive(anon):    25256 kB
Active(file):      21824 kB
Inactive(file):   104108 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        839676 kB
SwapFree:         839676 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:        289664 kB
Mapped:            58644 kB
Shmem:             25724 kB
Slab:              57496 kB
SReclaimable:      20364 kB
SUnreclaim:        37132 kB
KernelStack:        4048 kB
PageTables:         9304 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1337404 kB
Committed_AS:     968220 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      180460 kB
VmallocChunk:   34359310332 kB
Percpu:            33280 kB
HardwareCorrupted:     0 kB
AnonHugePages:    206848 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       73600 kB
DirectMap2M:      974848 kB
[root@nerd-cafe ~]#
```

#### 2.3 Check Disk Drives

```sh
[root@nerd-cafe ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0    8G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0    7G  0 part
  ├─centos-root 253:0    0  6.2G  0 lvm  /
  └─centos-swap 253:1    0  820M  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom
[root@nerd-cafe ~]#
```

or use:

```sh
[root@nerd-cafe ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ec008

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    16777215     7339008   8e  Linux LVM

Disk /dev/mapper/centos-root: 6652 MB, 6652166144 bytes, 12992512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 859 MB, 859832320 bytes, 1679360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@nerd-cafe ~]#
```

#### 2.4 View PCI Devices (e.g. network cards, GPUs)

```sh
[root@nerd-cafe ~]# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter
00:10.0 SCSI storage controller: Broadcom / LSI 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
00:11.0 PCI bridge: VMware PCI bridge (rev 02)
00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.7 PCI bridge: VMware PCI Express Root Port (rev 01)
02:00.0 USB controller: VMware USB1.1 UHCI Controller
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:02.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:04.0 USB controller: VMware USB2 EHCI Controller
[root@nerd-cafe ~]#
```

You can install `pciutils` if `lspci` is not found:

```python
[root@nerd-cafe ~]# sudo yum install pciutils
```

#### 2.5 View USB Devices

```sh
[root@nerd-cafe ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
[root@nerd-cafe ~]#
```

Install `usbutils` if needed:

```python
[root@nerd-cafe ~]# sudo yum install usbutils
```

### <mark style="color:blue;">**Step 3: Kernel Messages and dmesg**</mark>

#### 3.1 View Boot Hardware Messages

```sh
[root@nerd-cafe ~]# dmesg | less
```

Useful filters:

```sh
[root@nerd-cafe ~]# dmesg | grep -i usb
[    0.442446] ACPI: bus type USB registered
[    0.442463] usbcore: registered new interface driver usbfs
[    0.442471] usbcore: registered new interface driver hub
[    0.442545] usbcore: registered new device driver usb
[    0.885826] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.886259] ehci-pci 0000:02:04.0: new USB bus registered, assigned bus number 1
[    0.893015] ehci-pci 0000:02:04.0: USB 2.0 started, EHCI 1.00
[    0.893120] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 3.10
[    0.893122] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.893124] usb usb1: Product: EHCI Host Controller
[    0.893126] usb usb1: Manufacturer: Linux 3.10.0-1160.102.1.el7.x86_64 ehci_hcd
[    0.893128] usb usb1: SerialNumber: 0000:02:04.0
[    0.893244] hub 1-0:1.0: USB hub found
[    0.893469] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.893497] uhci_hcd: USB Universal Host Controller Interface driver
[    0.893936] uhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 2
[    0.894385] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 3.10
[    0.894387] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.894389] usb usb2: Product: UHCI Host Controller
[    0.894391] usb usb2: Manufacturer: Linux 3.10.0-1160.102.1.el7.x86_64 uhci_hcd
[    0.894392] usb usb2: SerialNumber: 0000:02:00.0
[    0.894490] hub 2-0:1.0: USB hub found
[    0.894742] usbcore: registered new interface driver usbserial_generic
[    0.894749] usbserial: USB Serial support registered for generic
[    0.901352] usbcore: registered new interface driver usbhid
[    0.901353] usbhid: USB HID core driver
[    1.205798] usb 2-1: new full-speed USB device number 2 using uhci_hcd
[    1.345738] usb 2-1: New USB device found, idVendor=0e0f, idProduct=0003, bcdDevice= 1.03
[    1.345743] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.345746] usb 2-1: Product: VMware Virtual USB Mouse
[    1.345748] usb 2-1: Manufacturer: VMware
[    1.357301] input: VMware VMware Virtual USB Mouse as /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/2-1:1.0/input/input4
[    1.357431] hid-generic 0003:0E0F:0003.0001: input,hidraw0: USB HID v1.10 Mouse [VMware VMware Virtual USB Mouse] on usb-0000:02:00.0-1/input0
[    1.469771] usb 2-2: new full-speed USB device number 3 using uhci_hcd
[    1.610598] usb 2-2: New USB device found, idVendor=0e0f, idProduct=0002, bcdDevice= 1.00
[    1.610602] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    1.610604] usb 2-2: Product: VMware Virtual USB Hub
[    1.610606] usb 2-2: Manufacturer: VMware, Inc.
[    1.618097] hub 2-2:1.0: USB hub found
[root@nerd-cafe ~]#
```

or:

```sh
[root@nerd-cafe ~]# dmesg | grep -i eth
[    2.556039] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:48:46:e1
[    2.556047] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection
[    2.957370] e1000 0000:02:02.0 eth1: (PCI:66MHz:32-bit) 00:0c:29:48:46:eb
[    2.957376] e1000 0000:02:02.0 eth1: Intel(R) PRO/1000 Network Connection
[root@nerd-cafe ~]#
```

This shows how hardware was detected and initialized during boot.

### <mark style="color:blue;">**Step 4: Kernel Modules (Drivers)**</mark>

Linux uses <mark style="color:red;">**kernel modules**</mark> to load drivers dynamically.

#### 4.1 List Loaded Kernel Modules

```sh
[root@nerd-cafe ~]# lsmod
Module                  Size  Used by
ip6t_rpfilter          12595  1
ip6t_REJECT            12625  2
nf_reject_ipv6         13717  1 ip6t_REJECT
ipt_REJECT             12541  2
nf_reject_ipv4         13373  1 ipt_REJECT
xt_conntrack           12760  13
ebtable_nat            12807  1
ebtable_broute         12731  1
bridge                155432  1 ebtable_broute
stp                    12976  1 bridge
llc                    14552  2 stp,bridge
ip6table_nat           12864  1
nf_conntrack_ipv6      18935  8
nf_defrag_ipv6         35104  1 nf_conntrack_ipv6
nf_nat_ipv6            14131  1 ip6table_nat
ip6table_mangle        12700  1
ip6table_security      12710  1
ip6table_raw           12683  1
iptable_nat            12875  1
nf_conntrack_ipv4      19149  7
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26583  2 nf_nat_ipv4,nf_nat_ipv6
iptable_mangle         12695  1
iptable_security       12705  1
iptable_raw            12678  1
nf_conntrack          143411  6 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ipv4,nf_conntrack_ipv6
ip_set                 45799  0
ebtable_filter         12827  1
ebtables               35009  3 ebtable_broute,ebtable_nat,ebtable_filter
ip6table_filter        12815  1
ip6_tables             26912  5 ip6table_filter,ip6table_mangle,ip6table_security,ip6table_nat,ip6table_raw
iptable_filter         12810  1
iosf_mbi               15582  0
crc32_pclmul           13133  0
ppdev                  17671  0
ghash_clmulni_intel    13273  0
aesni_intel           189456  0
lrw                    13286  1 aesni_intel
gf128mul               15139  1 lrw
glue_helper            13990  1 aesni_intel
ablk_helper            13597  1 aesni_intel
cryptd                 21190  3 ghash_clmulni_intel,aesni_intel,ablk_helper
vmw_balloon            18094  0
pcspkr                 12718  0
joydev                 17389  0
sg                     40719  0
vmw_vmci               67168  0
i2c_piix4              22401  0
parport_pc             28205  0
parport                46395  2 ppdev,parport_pc
ip_tables              27126  5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
xfs                  1014152  2
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack
sr_mod                 22416  0
cdrom                  46696  1 sr_mod
ata_generic            12923  0
pata_acpi              13053  0
vmwgfx                296089  1
sd_mod                 46281  3
crc_t10dif             12912  1 sd_mod
drm_kms_helper        186531  1 vmwgfx
crct10dif_generic      12647  0
syscopyarea            12529  1 drm_kms_helper
sysfillrect            12701  1 drm_kms_helper
sysimgblt              12640  1 drm_kms_helper
fb_sys_fops            12703  1 drm_kms_helper
ttm                   100769  1 vmwgfx
crct10dif_pclmul       14307  1
crct10dif_common       12595  3 crct10dif_pclmul,crct10dif_generic,crc_t10dif
crc32c_intel           22094  1
drm                   468454  4 ttm,drm_kms_helper,vmwgfx
ata_piix               35052  0
nfit                   59735  0
mptspi                 22673  2
serio_raw              13434  0
libata                247190  3 pata_acpi,ata_generic,ata_piix
scsi_transport_spi     30732  1 mptspi
libnvdimm             163620  1 nfit
e1000                 137624  0
mptscsih               40150  1 mptspi
mptbase               106036  2 mptspi,mptscsih
drm_panel_orientation_quirks    17180  1 drm
dm_mirror              22326  0
dm_region_hash         20813  1 dm_mirror
dm_log                 18411  2 dm_region_hash,dm_mirror
dm_mod                128595  8 dm_log,dm_mirror
[root@nerd-cafe ~]#
```

#### 4.2 Load a Kernel Module

```sh
[root@nerd-cafe ~]# sudo modprobe <module_name>
```

**Example:** To load the `e1000e` network driver:

```sh
[root@nerd-cafe ~]# sudo modprobe e1000e
```

#### 4.3 Unload a Kernel Module

```sh
[root@nerd-cafe ~]# sudo modprobe -r <module_name>
```

#### 4.4 Check Module Info

```sh
[root@nerd-cafe ~]# modinfo e1000e
filename:       /lib/modules/3.10.0-1160.102.1.el7.x86_64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.xz
version:        3.2.6-k
license:        GPL v2
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
retpoline:      Y
rhelversion:    7.9
srcversion:     098ECE9B1EBA1A3C30EA7ED
alias:          pci:v00008086d000015E2sv*sd*bc*sc*i*
...
alias:          pci:v00008086d0000105Esv*sd*bc*sc*i*
depends:        ptp
intree:         Y
vermagic:       3.10.0-1160.102.1.el7.x86_64 SMP mod_unload modversions
signer:         CentOS Linux kernel signing key
sig_key:        56:7C:0A:85:06:C7:C3:00:F0:66:03:5C:EA:63:E5:BA:FD:E2:3F:DA
sig_hashalgo:   sha256
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm:           TxIntDelay:Transmit Interrupt Delay (array of int)
parm:           TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm:           RxIntDelay:Receive Interrupt Delay (array of int)
parm:           RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm:           InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm:           IntMode:Interrupt Mode (array of int)
parm:           SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm:           KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
parm:           WriteProtectNVM:Write-protect NVM [WARNING: disabling this can lead to corrupted NVM] (array of int)
parm:           CrcStripping:Enable CRC Stripping, disable if your BMC needs the CRC (array of int)
[root@nerd-cafe ~]#
```

### <mark style="color:blue;">**Step 5: Configure Modules to Load at Boot**</mark>

Edit `/etc/modules-load.d/` or use `/etc/modprobe.d/`

#### Example: Auto-load `loop` module on boot

```sh
[root@nerd-cafe ~]# echo loop | sudo tee /etc/modules-load.d/loop.conf
loop
[root@nerd-cafe ~]#
```

### <mark style="color:blue;">**Step 6: Check and Configure IRQs and DMA (optional for most modern systems)**</mark>

View interrupt requests (IRQs):

```sh
[root@nerd-cafe ~]# cat /proc/interrupts
            CPU0
   0:        112   IO-APIC-edge      timer
   1:         42   IO-APIC-edge      i8042
   8:          1   IO-APIC-edge      rtc0
   9:          0   IO-APIC-fasteoi   acpi
  12:        127   IO-APIC-edge      i8042
  14:          0   IO-APIC-edge      ata_piix
  15:       3131   IO-APIC-edge      ata_piix
  16:       4715   IO-APIC-fasteoi   vmwgfx, ens34
  17:      11450   IO-APIC-fasteoi   ioc0
  18:         65   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2
  19:      25454   IO-APIC-fasteoi   ens33
  24:          0   PCI-MSI-edge      PCIe PME, pciehp
  25:          0   PCI-MSI-edge      PCIe PME, pciehp
  26:          0   PCI-MSI-edge      PCIe PME, pciehp
  27:          0   PCI-MSI-edge      PCIe PME, pciehp
  28:          0   PCI-MSI-edge      PCIe PME, pciehp
  29:          0   PCI-MSI-edge      PCIe PME, pciehp
  30:          0   PCI-MSI-edge      PCIe PME, pciehp
  31:          0   PCI-MSI-edge      PCIe PME, pciehp
  32:          0   PCI-MSI-edge      PCIe PME, pciehp
  33:          0   PCI-MSI-edge      PCIe PME, pciehp
  34:          0   PCI-MSI-edge      PCIe PME, pciehp
  35:          0   PCI-MSI-edge      PCIe PME, pciehp
  36:          0   PCI-MSI-edge      PCIe PME, pciehp
  37:          0   PCI-MSI-edge      PCIe PME, pciehp
  38:          0   PCI-MSI-edge      PCIe PME, pciehp
  39:          0   PCI-MSI-edge      PCIe PME, pciehp
  40:          0   PCI-MSI-edge      PCIe PME, pciehp
  41:          0   PCI-MSI-edge      PCIe PME, pciehp
  42:          0   PCI-MSI-edge      PCIe PME, pciehp
  43:          0   PCI-MSI-edge      PCIe PME, pciehp
  44:          0   PCI-MSI-edge      PCIe PME, pciehp
  45:          0   PCI-MSI-edge      PCIe PME, pciehp
  46:          0   PCI-MSI-edge      PCIe PME, pciehp
  47:          0   PCI-MSI-edge      PCIe PME, pciehp
  48:          0   PCI-MSI-edge      PCIe PME, pciehp
  49:          0   PCI-MSI-edge      PCIe PME, pciehp
  50:          0   PCI-MSI-edge      PCIe PME, pciehp
  51:          0   PCI-MSI-edge      PCIe PME, pciehp
  52:          0   PCI-MSI-edge      PCIe PME, pciehp
  53:          0   PCI-MSI-edge      PCIe PME, pciehp
  54:          0   PCI-MSI-edge      PCIe PME, pciehp
  55:          0   PCI-MSI-edge      PCIe PME, pciehp
  56:          0   PCI-MSI-edge      vmw_vmci
  57:          0   PCI-MSI-edge      vmw_vmci
 NMI:          0   Non-maskable interrupts
 LOC:     132836   Local timer interrupts
 SPU:          0   Spurious interrupts
 PMI:          0   Performance monitoring interrupts
 IWI:       7203   IRQ work interrupts
 RTR:          0   APIC ICR read retries
 RES:          0   Rescheduling interrupts
 CAL:          0   Function call interrupts
 TLB:          0   TLB shootdowns
 TRM:          0   Thermal event interrupts
 THR:          0   Threshold APIC interrupts
 DFR:          0   Deferred Error APIC interrupts
 MCE:          0   Machine check exceptions
 MCP:         12   Machine check polls
 ERR:          0
 MIS:          0
 PIN:          0   Posted-interrupt notification event
 NPI:          0   Nested posted-interrupt event
 PIW:          0   Posted-interrupt wakeup event
[root@nerd-cafe ~]#
```

Direct memory access (DMA) channels (less relevant on modern systems):

```sh
[root@nerd-cafe ~]# cat /proc/dma
 4: cascade
[root@nerd-cafe ~]#
```

### <mark style="color:blue;">**Step 7: Troubleshoot Hardware Detection**</mark>

* Check `dmesg` for errors.
* Use `lspci -v` or `lsusb -v` for detailed info.
* If a device is not working, identify its driver and ensure the module is loaded.
* Check logs:

```sh
[root@nerd-cafe ~]# sudo journalctl -k
```

### <mark style="color:blue;">Summary of Important Commands</mark>

| Command           | Description                |
| ----------------- | -------------------------- |
| cat /proc/cpuinfo | View CPU details           |
| cat /proc/meminfo | View memory usage          |
| lsblk             | List block storage devices |
| lspci             | List PCI devices           |
| lsusb             | List USB devices           |
| dmesg             | Kernel and boot messages   |
| lsmod             | Show loaded modules        |
| modprobe          | Load/unload kernel modules |
| modinfo           | View module info           |
| journalctl -k     | Kernel log messages        |

### <mark style="color:blue;">Keywords</mark>

`BIOS`, `UEFI`, `CPU info`, `memory info`, `lsblk`, `fdisk`, `lspci`, `lsusb`, `dmesg`, `kernel modules`, `lsmod`, `modprobe`, `modinfo`, `CentOS`, `IRQ`, `DMA`, `journalctl`, `hardware detection`, `boot process`, `hardware configuration`, `nerd cafe`
