ruk·si

🐧 Linux
Hardware

Updated at 2016-12-10 02:11

This note is about configuring hardware devices on Linux systems.

lspci lists devices in your computer.

lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)

lspci -v -k
# for more verbose information

"Everything is a file" philosophy applies to hardware.

cat /proc/cpuinfo       # CPU overview
cat /proc/interrupts    # shows how interrupts are distributed between devices
cat /proc/version       # kernel version
uname -a                # filtered result of /proc/version

ls -l /sys/block/           # lists attached disks
find /sys -iname \*eepc\*   # search for drivers of hardware buttons on Eee PC
cat /sys/bus/platform/devices/eeepc/camera # is camera hardware button enabled?
echo 1 > /sys/bus/platform/devices/eeepc/rfkill:rfkill0/state # turn on WiFi

Linux hardware is configured with kernel modules. This allows changing hardware and their settings without booting the system.

rmmod modulename # unloads kernel module if not used by any process
modprobe modulename option1=value # configure and load kernel module

modinfo shows available options while loading the module.

modinfo /lib/modules/4.4.23-31.54.amzn1.x86_64/kernel/drivers/cdrom/cdrom.ko
filename:       /lib/modules/4.4.23-31.54.amzn1.x86_64/kernel/drivers/cdrom/cdrom.ko
license:        GPL
srcversion:     05419E88D1E55A3545ADE7F
depends:
intree:         Y
vermagic:       4.4.23-31.54.amzn1.x86_64 SMP mod_unload modversions
parm:           debug:bool
parm:           autoclose:bool
parm:           autoeject:bool
parm:           lockdoor:bool
parm:           check_media_type:bool
parm:           mrw_format_restart:bool

# `alias` field tells the device/product id
# and vendor id of the hardware that this module responsible for
alias:          cpu:type:x86,ven*fam*mod*:feature:*00E8*
alias:          cpu:type:x86,ven*fam*mod*:feature:*0016*

Some module options can be configured using the file system. Works in modern 2.6+ kernels.

cat /sys/module/printk/parameters/console_suspend
Y

Disks are partitioned using MBR or GPT standard.

  • MBR: A disk is divided to partitions, defined in Master Boot Record (MBR) on the disk. Max 4 partitions and 2TB per partition.
  • GPT: GUID Partition Table (GPT) is a new standard that should be used if the disk supports it. Max 128 partitions.
fdisk -l                # all disk info
fdisk -l /dev/xvda      # disk info
fdisk -l /dev/xvda1     # partition info
fdisk /dev/xvda         # start interactive mode for e.g. creating partitions

gdisk -l /dev/xvda      # disk info
gdisk /dev/xvda         # start interactive mode
sda   # SATA Drive, First (A)
sda1  # SATA Drive, First (A), First partition (1)
sdb   # SATA Drive, Second (B)
sdb1  # SATA Drive, Second (B), First partition (1)
xvda1 # Xen Virtual Block Drive, First (A), First partition (1)

# there are frequently symbolic links between device names
ls -la /dev/sda1
... /dev/sda1 -> xvda1
mkfs -h
mkfs -t ext4 /dev/xvda1 # creates ext4 type filesystem to partition xvda1
mkfs -t ext4 -b 4096 /dev/xvda1 # force 4096-byte blocks
mkfs.ext4 # there are also file system specific helper tools

tune2fs     # tool for configuring ext2, ext3 and ext4 file systems
e4defrag    # tool for defragmenting ext4 file system
df -h            # show all partition info in human-readable format
df -h /dev/xvda1 # show information on a specific partition
du -ha /tmp/     # show storage usage of this directory tree

Mounting means associating a directory with a media device. Devices such as hard drives, CDs or USB disk. Most modern distros handle mounting automatically but manual mounting is sometimes required for debugging hardware problems.

cat /etc/fstab   # lists file systems that are mounted on boot
mount            # lists currently mounted devices
mount /dev/sdc1 /media/usb # mount device `sdc` in an existing directory
mount -o remount,ro /dev/sdc1 /media/usb # remount as read-only
unmount /media/usb         # unmount, removing the linking

# sometimes unmounting is blocked by open file
# then you need to stop the process that is using the file
lsof            # list open files (and which process id is using it)
lsof /dev/xvda1 # list open files on /dev/xvda1

Sources

  • Linux Shell Handbook, 7th Edition