Access to accurate hardware information in Linux simplifies capacity planning, troubleshooting, and hardware compatibility checks. Clear visibility into installed components such as CPUs, memory modules, storage devices, and controllers avoids guesswork when diagnosing issues or deciding on upgrades.

Command line utilities such as lshw, lspci, lsusb, lscpu, lsmem, and lsblk query the kernel, firmware, and device buses to describe hardware that is currently detected. These tools combine information from firmware interfaces like DMI and ACPI with the virtual filesystems under /proc and /sys, producing structured text output that can be filtered, searched, and logged.

Many of these tools require sudo because firmware tables and low level device attributes are only readable by privileged users, and their output can include sensitive details such as serial numbers, asset tags, and UUIDs. Output is safest stored locally and sanitized before sharing externally, especially when examining production systems or virtual machines hosted on platforms such as VMware or KVM.

Steps to check hardware information in Linux:

  1. Open the terminal.

    Use an account with sudo privileges so utilities that read firmware tables and low level device attributes can run successfully.

  2. Use lshw to display all installed hardware.
    $ sudo lshw
    14844ef6f7fc
        description: Computer
        width: 64 bits
        capabilities: smp tagged_addr_disabled
      *-core
           description: Motherboard
           physical id: 0
         *-cpu:0
              description: CPU
              product: cpu
              physical id: 0
              bus info: cpu@0
              capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint
         *-cpu:1
              description: CPU
              product: cpu
              physical id: 1
              bus info: cpu@1
              capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint
    ##### snipped #####

    Use lshw for a comprehensive overview of all hardware components, including CPU, memory, and storage devices.

    More options for lshw:

    $ lshw --help
    Hardware Lister (lshw) - 
    usage: lshw [-format] [-options ...]
           lshw -version
    
      -version        print program version ()
    
    format can be
      -html           output hardware tree as HTML
      -xml            output hardware tree as XML
      -json           output hardware tree as a JSON object
      -short          output hardware paths
      -businfo        output bus information
    
    options can be
      -class CLASS    only show a certain class of hardware
      -C CLASS        same as '-class CLASS'
      -c CLASS        same as '-class CLASS'
      -disable TEST   disable a test (like pci, isapnp, cpuid, etc. )
      -enable TEST    enable a test (like pci, isapnp, cpuid, etc. )
      -quiet          don't display status
      -sanitize       sanitize output (remove sensitive information like serial numbers, etc.)
      -numeric        output numeric IDs (for PCI, USB, etc.)
      -notime         exclude volatile attributes (timestamps) from output
  3. Run lspci to list connected PCI devices.
    $ lspci
    00:00.0 Host bridge: Apple Inc. Device 1a05
    00:01.0 Ethernet controller: Red Hat, Inc. Virtio 1.0 network device (rev 01)
    00:05.0 Communication controller: Red Hat, Inc. Virtio 1.0 console (rev 01)
    00:06.0 Mass storage controller: Red Hat, Inc. Virtio 1.0 block device (rev 01)
    00:07.0 Mass storage controller: Red Hat, Inc. Virtio 1.0 block device (rev 01)
    00:08.0 Mass storage controller: Red Hat, Inc. Virtio file system (rev 01)
    00:09.0 Mass storage controller: Red Hat, Inc. Virtio file system (rev 01)
    00:0a.0 Mass storage controller: Red Hat, Inc. Virtio file system (rev 01)
    00:0b.0 Mass storage controller: Red Hat, Inc. Virtio file system (rev 01)
    00:0c.0 Mass storage controller: Red Hat, Inc. Virtio file system (rev 01)
    00:0d.0 Mass storage controller: Red Hat, Inc. Virtio file system (rev 01)
    00:0e.0 Communication controller: Red Hat, Inc. Virtio 1.0 socket (rev 01)
    00:0f.0 Network and computing encryption device: Red Hat, Inc. Virtio 1.0 RNG (rev 01)
    00:10.0 Memory controller: Red Hat, Inc. Virtio 1.0 memory balloon (rev 01)
    ##### snipped #####

    Use lspci to view PCI devices such as network cards, sound cards, and GPUs.

    More options for lspci:

    $ lspci --help
    lspci: invalid option -- '-'
    Usage: lspci [<switches>]
    
    Basic display modes:
    -mm   Produce machine-readable output (single -m for an obsolete format)
    -t    Show bus tree
    
    Display options:
    -v    Be verbose (-vv or -vvv for higher verbosity)
    -k    Show kernel drivers handling each device
    -x    Show hex-dump of the standard part of the config space
    -xxx    Show hex-dump of the whole config space (dangerous; root only)
    -xxxx   Show hex-dump of the 4096-byte extended config space (root only)
    -b    Bus-centric view (addresses and IRQ's as seen by the bus)
    -D    Always show domain numbers
    -P    Display bridge path in addition to bus and device number
    -PP   Display bus path in addition to bus and device number
    
    Resolving of device ID's to names:
    -n    Show numeric ID's
    -nn   Show both textual and numeric ID's (names & numbers)
    -q    Query the PCI ID database for unknown ID's via DNS
    -qq   As above, but re-query locally cached entries
    -Q    Query the PCI ID database for all ID's via DNS
    
    Selection of devices:
    -s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]] Show only devices in selected slots
    -d [<vendor>]:[<device>][:<class>]    Show only devices with specified ID's
    
    Other options:
    -i <file> Use specified ID database instead of /usr/share/misc/pci.ids.gz
    -p <file> Look up kernel modules in a given file instead of default modules.pcimap
    -M    Enable `bus mapping' mode (dangerous; root only)
    
    PCI access options:
    -A <method> Use the specified PCI access method (see `-A help' for a list)
    -O <par>=<val>  Set PCI access parameter (see `-O help' for a list)
    -G    Enable PCI access debugging
    -H <mode> Use direct hardware access (<mode> = 1 or 2)
    -F <file> Read PCI configuration dump from a given file
  4. Use lsusb to list connected USB devices.
    $ lsusb
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

    More options for lsusb:

    $ lsusb --help
    Usage: lsusb [options]...
    List USB devices
      -v, --verbose
          Increase verbosity (show descriptors)
      -s [[bus]:][devnum]
          Show only devices with specified device and/or
          bus numbers (in decimal)
      -d vendor:[product]
          Show only devices with the specified vendor and
          product ID numbers (in hexadecimal)
      -D device
          Selects which device lsusb will examine
      -t, --tree
          Dump the physical USB device hierarchy as a tree
      -V, --version
          Show version of program
      -h, --help
          Show usage and help
  5. Use lscpu to view CPU architecture details.
    $ lscpu
    Architecture:                            aarch64
    CPU op-mode(s):                          64-bit
    Byte Order:                              Little Endian
    CPU(s):                                  10
    On-line CPU(s) list:                     0-9
    Vendor ID:                               Apple
    Model name:                              -
    Model:                                   0
    Thread(s) per core:                      1
    Core(s) per cluster:                     10
    Socket(s):                               -
    Cluster(s):                              1
    Stepping:                                0x0
    BogoMIPS:                                48.00
    Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint
    Vulnerability Gather data sampling:      Not affected
    Vulnerability Indirect target selection: Not affected
    Vulnerability Itlb multihit:             Not affected
    Vulnerability L1tf:                      Not affected
    Vulnerability Mds:                       Not affected
    Vulnerability Meltdown:                  Not affected
    Vulnerability Mmio stale data:           Not affected
    Vulnerability Reg file data sampling:    Not affected
    Vulnerability Retbleed:                  Not affected
    Vulnerability Spec rstack overflow:      Not affected
    Vulnerability Spec store bypass:         Vulnerable
    Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
    Vulnerability Spectre v2:                Mitigation; CSV2, but not BHB
    Vulnerability Srbds:                     Not affected
    Vulnerability Tsa:                       Not affected
    Vulnerability Tsx async abort:           Not affected
    Vulnerability Vmscape:                   Not affected

    The lscpu command shows detailed CPU information such as architecture, core count, and supported features.

    More options for lscpu:

    $ lscpu --help
    
    Usage:
     lscpu [options]
    
    Display information about the CPU architecture.
    
    Options:
     -a, --all               print both online and offline CPUs (default for -e)
     -b, --online            print online CPUs only (default for -p)
     -B, --bytes             print sizes in bytes rather than in human readable format
     -C, --caches[=<list>]   info about caches in extended readable format
     -c, --offline           print offline CPUs only
     -J, --json              use JSON for default or extended format
     -e, --extended[=<list>] print out an extended readable format
     -p, --parse[=<list>]    print out a parsable format
     -s, --sysroot <dir>     use specified directory as system root
     -x, --hex               print hexadecimal masks rather than lists of CPUs
     -y, --physical          print physical instead of logical IDs
         --hierarchic[=when] use subsections in summary (auto, never, always)
         --output-all        print all available columns for -e, -p or -C
    
     -h, --help              display this help
     -V, --version           display version
    
    Available output columns for -e or -p:
          BOGOMIPS  crude measurement of CPU speed
               CPU  logical CPU number
              CORE  logical core number
            SOCKET  logical socket number
           CLUSTER  logical cluster number
              NODE  logical NUMA node number
              BOOK  logical book number
            DRAWER  logical drawer number
             CACHE  shows how caches are shared between CPUs
      POLARIZATION  CPU dispatching mode on virtual hardware
           ADDRESS  physical address of a CPU
        CONFIGURED  shows if the hypervisor has allocated the CPU
            ONLINE  shows if Linux currently makes use of the CPU
               MHZ  shows the currently MHz of the CPU
          SCALMHZ%  shows scaling percentage of the CPU frequency
            MAXMHZ  shows the maximum MHz of the CPU
            MINMHZ  shows the minimum MHz of the CPU
         MODELNAME  shows CPU model name
    
    Available output columns for -C:
          ALL-SIZE  size of all system caches
             LEVEL  cache level
              NAME  cache name
          ONE-SIZE  size of one cache
              TYPE  cache type
              WAYS  ways of associativity
      ALLOC-POLICY  allocation policy
      WRITE-POLICY  write policy
          PHY-LINE  number of physical cache line per cache tag
              SETS  number of sets in the cache; set lines has the same cache index
     COHERENCY-SIZE  minimum amount of data in bytes transferred from memory to cache
    
    For more details see lscpu(1).
  6. Use lsmem to check memory status and details.
    $ lsmem
    lsmem: cannot open /sys/devices/system/memory: No such file or directory

    The lsmem command provides a view of available memory blocks and their status.

    More options for lsmem:

    $ lsmem --help
    
    Usage:
     lsmem [options]
    
    List the ranges of available memory with their online status.
    
    Options:
     -J, --json           use JSON output format
     -P, --pairs          use key="value" output format
     -a, --all            list each individual memory block
     -b, --bytes          print SIZE in bytes rather than in human readable format
     -n, --noheadings     don't print headings
     -o, --output <list>  output columns
         --output-all     output all columns
     -r, --raw            use raw output format
     -S, --split <list>   split ranges by specified columns
     -s, --sysroot <dir>  use the specified directory as system root
         --summary[=when] print summary information (never,always or only)
    
     -h, --help           display this help
     -V, --version        display version
    
    Available output columns:
          RANGE  start and end address of the memory range
           SIZE  size of the memory range
          STATE  online status of the memory range
      REMOVABLE  memory is removable
          BLOCK  memory block number or blocks range
           NODE  numa node of memory
          ZONES  valid zones for the memory range
    
    For more details see lsmem(1).
  7. Run lsblk to list available block storage devices.
    $ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    loop0    7:0    0   512M  0 loop /mnt/bench
    nbd0    43:0    0     0B  0 disk 
    nbd1    43:32   0     0B  0 disk 
    nbd2    43:64   0     0B  0 disk 
    nbd3    43:96   0     0B  0 disk 
    nbd4    43:128  0     0B  0 disk 
    nbd5    43:160  0     0B  0 disk 
    nbd6    43:192  0     0B  0 disk 
    nbd7    43:224  0     0B  0 disk 
    vda    254:0    0   1.8T  0 disk 
    `-vda1 254:1    0   1.8T  0 part /etc/hosts
                                     /etc/hostname
                                     /etc/resolv.conf
    vdb    254:16   0 606.5M  1 disk 
    nbd8    43:256  0     0B  0 disk 
    nbd9    43:288  0     0B  0 disk 
    nbd10   43:320  0     0B  0 disk 
    nbd11   43:352  0     0B  0 disk 
    nbd12   43:384  0     0B  0 disk 
    nbd13   43:416  0     0B  0 disk 
    nbd14   43:448  0     0B  0 disk 
    nbd15   43:480  0     0B  0 disk 

    The lsblk command shows block storage devices, including partitions and mounted filesystems.

    More options for lsblk:

    $ lsblk --help
    
    Usage:
     lsblk [options] [<device> ...]
    
    List information about block devices.
    
    Options:
     -A, --noempty        don't print empty devices
     -D, --discard        print discard capabilities
     -E, --dedup <column> de-duplicate output by <column>
     -I, --include <list> show only devices with specified major numbers
     -J, --json           use JSON output format
     -M, --merge          group parents of sub-trees (usable for RAIDs, Multi-path)
     -O, --output-all     output all columns
     -P, --pairs          use key="value" output format
     -S, --scsi           output info about SCSI devices
     -N, --nvme           output info about NVMe devices
     -v, --virtio         output info about virtio devices
     -T, --tree[=<column>] use tree format output
     -a, --all            print all devices
     -b, --bytes          print SIZE in bytes rather than in human readable format
     -d, --nodeps         don't print slaves or holders
     -e, --exclude <list> exclude devices by major number (default: RAM disks)
     -f, --fs             output info about filesystems
     -i, --ascii          use ascii characters only
     -l, --list           use list format output
     -m, --perms          output info about permissions
     -n, --noheadings     don't print headings
     -o, --output <list>  output columns
     -p, --paths          print complete device path
     -r, --raw            use raw output format
     -s, --inverse        inverse dependencies
     -t, --topology       output info about topology
     -w, --width <num>    specifies output width as number of characters
     -x, --sort <column>  sort output by <column>
     -y, --shell          use column names to be usable as shell variable identifiers
     -z, --zoned          print zone related information
         --sysroot <dir>  use specified directory as system root
    
     -h, --help           display this help
     -V, --version        display version
    
    Available output columns:
        ALIGNMENT  alignment offset
          ID-LINK  the shortest udev /dev/disk/by-id link name
               ID  udev ID (based on ID-LINK)
         DISC-ALN  discard alignment offset
              DAX  dax-capable device
        DISC-GRAN  discard granularity
         DISK-SEQ  disk sequence number
         DISC-MAX  discard max bytes
        DISC-ZERO  discard zeroes data
          FSAVAIL  filesystem size available
          FSROOTS  mounted filesystem roots
           FSSIZE  filesystem size
           FSTYPE  filesystem type
           FSUSED  filesystem size used
           FSUSE%  filesystem use percentage
            FSVER  filesystem version
            GROUP  group name
             HCTL  Host:Channel:Target:Lun for SCSI
          HOTPLUG  removable or hotplug device (usb, pcmcia, ...)
            KNAME  internal kernel device name
            LABEL  filesystem LABEL
          LOG-SEC  logical sector size
          MAJ:MIN  major:minor device number
           MIN-IO  minimum I/O size
             MODE  device node permissions
            MODEL  device identifier
               MQ  device queues
             NAME  device name
           OPT-IO  optimal I/O size
            OWNER  user name
        PARTFLAGS  partition flags
        PARTLABEL  partition LABEL
            PARTN  partition number as read from the partition table
         PARTTYPE  partition type code or UUID
     PARTTYPENAME  partition type name
         PARTUUID  partition UUID
             PATH  path to the device node
          PHY-SEC  physical sector size
           PKNAME  internal parent kernel device name
           PTTYPE  partition table type
           PTUUID  partition table identifier (usually UUID)
               RA  read-ahead of the device
             RAND  adds randomness
              REV  device revision
               RM  removable device
               RO  read-only device
             ROTA  rotational device
          RQ-SIZE  request queue size
            SCHED  I/O scheduler name
           SERIAL  disk serial number
             SIZE  size of the device
            START  partition start offset
            STATE  state of the device
       SUBSYSTEMS  de-duplicated chain of subsystems
       MOUNTPOINT  where the device is mounted
      MOUNTPOINTS  all locations where device is mounted
             TRAN  device transport type
             TYPE  device type
             UUID  filesystem UUID
           VENDOR  device vendor
            WSAME  write same max bytes
              WWN  unique storage identifier
            ZONED  zone model
          ZONE-SZ  zone size
       ZONE-WGRAN  zone write granularity
         ZONE-APP  zone append max bytes
          ZONE-NR  number of zones
        ZONE-OMAX  maximum number of open zones
        ZONE-AMAX  maximum number of active zones
    
    For more details see lsblk(8).
  8. Browse the /dev directory for available special or device files.
    $ ls /dev
    autofs
    btrfs-control
    bus
    cachefiles
    core
    cpu_dma_latency
    cuse
    fd
    full
    fuse
    gpiochip0
    hvc0
    hvc1
    hvc2
    hvc3
    hvc4
    hvc5
    hvc6
    hvc7
    hwrng
    input
    kmsg
    log
    loop-control
    loop0
    loop1
    loop2
    loop3
    loop4
    loop5
    loop6
    loop7
    mapper
    mem
    mqueue
    nbd0
    nbd1
    nbd10
    nbd11
    nbd12
    nbd13
    nbd14
    nbd15
    nbd2
    nbd3
    nbd4
    nbd5
    nbd6
    nbd7
    nbd8
    nbd9
    net
    null
    port
    ppp
    ptmx
    pts
    ram0
    ram1
    ram10
    ram11
    ram12
    ram13
    ram14
    ram15
    ram2
    ram3
    ram4
    ram5
    ram6
    ram7
    ram8
    ram9
    random
    rtc0
    shm
    stderr
    stdin
    stdout
    tty
    tty0
    tty1
    tty10
    tty11
    tty12
    tty13
    tty14
    tty15
    tty16
    tty17
    tty18
    tty19
    tty2
    tty20
    tty21
    tty22
    tty23
    tty24
    tty25
    tty26
    tty27
    tty28
    tty29
    tty3
    tty30
    tty31
    tty32
    tty33
    tty34
    tty35
    tty36
    tty37
    tty38
    tty39
    tty4
    tty40
    tty41
    tty42
    tty43
    tty44
    tty45
    tty46
    tty47
    tty48
    tty49
    tty5
    tty50
    tty51
    tty52
    tty53
    tty54
    tty55
    tty56
    tty57
    tty58
    tty59
    tty6
    tty60
    tty61
    tty62
    tty63
    tty7
    tty8
    tty9
    ttyS0
    ttyS1
    ttyS2
    ttyS3
    uinput
    urandom
    usbmon0
    usbmon1
    usbmon2
    vcs
    vcs1
    vcs2
    vcs3
    vcs4
    vcs5
    vcs6
    vcsa
    vcsa1
    vcsa2
    vcsa3
    vcsa4
    vcsa5
    vcsa6
    vcsu
    vcsu1
    vcsu2
    vcsu3
    vcsu4
    vcsu5
    vcsu6
    vda
    vda1
    vdb
    vga_arbiter
    vhost-net
    vhost-vsock
    vport1p0
    vsock
    zero
  9. Use dmidecode to view BIOS and system information.
    $ sudo dmidecode
    # dmidecode 3.5
    # No SMBIOS nor DMI entry point found, sorry.

    More options for dmidecode:

    $ dmidecode --help
    Usage: dmidecode [OPTIONS]
    Options are:
     -d, --dev-mem FILE     Read memory from device FILE (default: /dev/mem)
     -h, --help             Display this help text and exit
     -q, --quiet            Less verbose output
         --no-quirks        Decode everything without quirks
     -s, --string KEYWORD   Only display the value of the given DMI string
     -t, --type TYPE        Only display the entries of given type
     -H, --handle HANDLE    Only display the entry of given handle
     -u, --dump             Do not decode the entries
         --dump-bin FILE    Dump the DMI data to a binary file
         --from-dump FILE   Read the DMI data from a binary file
         --no-sysfs         Do not attempt to read DMI data from sysfs files
         --oem-string N     Only display the value of the given OEM string
     -V, --version          Display the version and exit
  10. Explore sysfs for hardware devices and related kernel information.
    $ cat /sys/class/power_supply/ACAD/type
    cat: /sys/class/power_supply/ACAD/type: No such file or directory

    sysfs under /sys exposes kernel devices and their attributes in a structured directory tree grouped by class and bus.

  11. Inspect the /proc and /sys directories for additional hardware details.
    $ cat /proc/meminfo
    MemTotal:       24314884 kB
    MemFree:        21206808 kB
    MemAvailable:   22949396 kB
    Buffers:          436616 kB
    Cached:          1195512 kB
    SwapCached:            0 kB
    Active:          1017988 kB
    Inactive:        1337016 kB
    Active(anon):     739584 kB
    Inactive(anon):        0 kB
    Active(file):     278404 kB
    Inactive(file):  1337016 kB
    Unevictable:           0 kB
    Mlocked:               0 kB
    SwapTotal:       1048572 kB
    SwapFree:        1048572 kB
    Zswap:                 0 kB
    Zswapped:              0 kB
    Dirty:               148 kB
    Writeback:             0 kB
    AnonPages:        591660 kB
    Mapped:           232180 kB
    Shmem:             16728 kB
    KReclaimable:     445948 kB
    Slab:             521696 kB
    SReclaimable:     445948 kB
    SUnreclaim:        75748 kB
    KernelStack:        5616 kB
    PageTables:         5804 kB
    SecPageTables:         0 kB
    NFS_Unstable:          0 kB
    Bounce:                0 kB
    WritebackTmp:          0 kB
    CommitLimit:    13206012 kB
    Committed_AS:    1747536 kB
    VmallocTotal:   135288315904 kB
    VmallocUsed:        6148 kB
    VmallocChunk:          0 kB
    Percpu:             3760 kB
    AnonHugePages:    350208 kB
    ShmemHugePages:        0 kB
    ShmemPmdMapped:        0 kB
    FileHugePages:         0 kB
    FilePmdMapped:         0 kB
    HugePages_Total:       0
    HugePages_Free:        0
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    Hugetlb:               0 kB

    The /proc and /sys directories contain real-time and persistent system and hardware data, which can be accessed using the cat command.

  12. Use dmesg to view kernel diagnostic messages for hardware related information.
    $ dmesg | head -n 20
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x610f0000]
    [    0.000000] Linux version 6.12.54-linuxkit (root@buildkitsandbox) (gcc (Alpine 13.2.1_git20240309) 13.2.1 20240309, GNU ld (GNU Binutils) 2.42) #1 SMP Tue Nov  4 21:21:47 UTC 2025
    [    0.000000] OF: reserved mem: Reserved memory: No reserved-memory node in the DT
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000070000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   [mem 0x0000000100000000-0x000000065fffffff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000070000000-0x000000065fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000070000000-0x000000065fffffff]
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.1
    [    0.000000] percpu: Embedded 34 pages/cpu s100312 r8192 d30760 u139264
    [    0.000000] pcpu-alloc: s100312 r8192 d30760 u139264 alloc=34*4096
    [    0.000000] pcpu-alloc: [0] 00 [0] 01 [0] 02 [0] 03 [0] 04 [0] 05 [0] 06 [0] 07 
    [    0.000000] pcpu-alloc: [0] 08 [0] 09 

    More options for dmesg:

    $ dmesg --help
    
    Usage:
     dmesg [options]
    
    Display or control the kernel ring buffer.
    
    Options:
     -C, --clear                 clear the kernel ring buffer
     -c, --read-clear            read and clear all messages
     -D, --console-off           disable printing messages to console
     -E, --console-on            enable printing messages to console
     -F, --file <file>           use the file instead of the kernel log buffer
     -f, --facility <list>       restrict output to defined facilities
     -H, --human                 human readable output
     -J, --json                  use JSON output format
     -k, --kernel                display kernel messages
     -L, --color[=<when>]        colorize messages (auto, always or never)
                                   colors are enabled by default
     -l, --level <list>          restrict output to defined levels
     -n, --console-level <level> set level of messages printed to console
     -P, --nopager               do not pipe output into a pager
     -p, --force-prefix          force timestamp output on each line of multi-line messages
     -r, --raw                   print the raw message buffer
         --noescape              don't escape unprintable character
     -S, --syslog                force to use syslog(2) rather than /dev/kmsg
     -s, --buffer-size <size>    buffer size to query the kernel ring buffer
     -u, --userspace             display userspace messages
     -w, --follow                wait for new messages
     -W, --follow-new            wait and print only new messages
     -x, --decode                decode facility and level to readable string
     -d, --show-delta            show time delta between printed messages
     -e, --reltime               show local time and time delta in readable format
     -T, --ctime                 show human-readable timestamp (may be inaccurate!)
     -t, --notime                don't show any timestamp with messages
         --time-format <format>  show timestamp using the given format:
                                   [delta|reltime|ctime|notime|iso]
    Suspending/resume will make ctime and iso timestamps inaccurate.
         --since <time>          display the lines since the specified time
         --until <time>          display the lines until the specified time
    
     -h, --help                  display this help
     -V, --version               display version
    
    Supported log facilities:
        kern - kernel messages
        user - random user-level messages
        mail - mail system
      daemon - system daemons
        auth - security/authorization messages
      syslog - messages generated internally by syslogd
         lpr - line printer subsystem
        news - network news subsystem
    
    Supported log levels (priorities):
       emerg - system is unusable
       alert - action must be taken immediately
        crit - critical conditions
         err - error conditions
        warn - warning conditions
      notice - normal but significant condition
        info - informational
       debug - debug-level messages
    
    For more details see dmesg(1).