Table of Contents
- Kernel Version & System Information
- Kernel Modules Management
- Kernel Logs & Troubleshooting
- CPU & Memory Monitoring
- Storage & Block Devices
- Kernel Tuning with sysctl
- Conclusion
- References
1. Kernel Version & System Information
Before diving into advanced tasks, you’ll often need to check basic system details, starting with the kernel version and how long your system has been running.
1.1 uname: Check Kernel Version
What it does: The uname (unix name) command displays system information, including the kernel version, hostname, and hardware architecture.
Syntax:
uname [options]
Common Options:
-r: Kernel release (e.g.,5.15.0-78-generic).-v: Kernel version (includes compile date).-a: Show all system information (kernel version, hostname, architecture, etc.).
Examples:
- Check your kernel version:
uname -r # Output: 5.15.0-78-generic - Get all system details:
uname -a # Output: Linux my-laptop 5.15.0-78-generic #85-Ubuntu SMP Fri Jul 7 15:25:09 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Newbie Notes:
- The kernel release (
-r) is the most commonly used option. It helps when troubleshooting (e.g., checking if a bug is fixed in your kernel version).
1.2 uptime: System Uptime
What it does: uptime tells you how long the system (and thus the kernel) has been running, plus the current time, number of logged-in users, and system load average.
Syntax:
uptime
Example Output:
14:30:45 up 2 days, 3 hours, 15 min, 2 users, load average: 0.89, 0.76, 0.65
Breakdown:
up 2 days, 3 hours, 15 min: Time since the kernel booted.2 users: Number of active user sessions.load average: 0.89, 0.76, 0.65: Average system load over 1, 5, and 15 minutes (lower = less busy).
Newbie Notes:
- High load averages (e.g., >2.0 on a 2-core CPU) may indicate the system is struggling to keep up with tasks.
2. Kernel Modules Management
Kernel modules are small pieces of code that load into the kernel at runtime to add support for hardware (e.g., Wi-Fi adapters) or filesystems (e.g., NTFS). They let you extend the kernel without rebooting.
2.1 lsmod: List Loaded Modules
What it does: lsmod (list modules) shows all currently loaded kernel modules, along with their size and dependencies.
Syntax:
lsmod
Example Output:
Module Size Used by
nvidia_uvm 3145728 0
nvidia_drm 77824 8
nvidia_modeset 1204224 1 nvidia_drm
nvidia 55812096 26 nvidia_uvm,nvidia_modeset
Columns:
Module: Name of the module.Size: Size of the module in bytes.Used by: Number of other modules/drivers using this module (and their names).
Pro Tip: Filter modules with grep to find specific hardware support:
lsmod | grep usb # List USB-related modules
2.2 modprobe: Add/Remove Modules
What it does: modprobe (module probe) is the safest way to load or unload modules. Unlike older tools like insmod, it automatically resolves dependencies (e.g., loading a USB module may require a parent USB controller module first).
Syntax:
sudo modprobe <module-name> # Load a module
sudo modprobe -r <module-name> # Unload a module
Examples:
- Load the
ext4filesystem module (used for most Linux partitions):sudo modprobe ext4 - Unload the
bluetoothmodule (disable Bluetooth):sudo modprobe -r bluetooth
Newbie Notes:
- Always use
sudo—modifying modules requires root privileges. - Avoid unloading critical modules (e.g.,
ext4on a running system) to prevent crashes.
2.3 rmmod: Remove Modules (Caution!)
What it does: rmmod (remove module) unloads modules but does not handle dependencies. Use modprobe -r instead unless you’re certain no other modules depend on it.
Syntax:
sudo rmmod <module-name>
Example:
sudo rmmod bluetooth # Only safe if no other modules use "bluetooth"
Warning: Unloading a module with dependencies can crash your system. Stick to modprobe -r!
2.4 depmod: Update Module Dependencies
What it does: depmod (dependency modules) updates the modules.dep file, which tracks module dependencies. Run this after installing new modules (e.g., after updating your kernel).
Syntax:
sudo depmod -a # Update dependencies for all modules
When to use: After manually installing kernel modules (e.g., for proprietary drivers like NVIDIA).
3. Kernel Logs & Troubleshooting
The kernel logs everything from hardware detection to errors. dmesg is your go-to tool for accessing these logs.
3.1 dmesg: Kernel Ring Buffer Messages
What it does: dmesg (diagnostic messages) prints the kernel’s ring buffer—a temporary log of messages generated since boot. It’s critical for troubleshooting hardware issues (e.g., a failed USB drive) or boot problems.
Syntax:
dmesg [options]
Common Options:
-H: Human-readable timestamps (e.g.,2023-10-05 14:30:00instead of seconds since boot).-T: Same as-Hbut uses local time.-w: “Follow” mode (liketail -f), showing new messages in real time.
Examples:
- Find disk errors (e.g., a failing hard drive):
dmesg | grep -i error # "-i" ignores case (match "Error" or "ERROR") - Check if a USB drive was detected:
dmesg | grep -i usb - View logs with timestamps:
dmesg -T | grep -i "bluetooth" # When did Bluetooth initialize?
Newbie Notes:
- Logs are stored in
/var/log/dmesgfor persistence (the ring buffer resets on reboot).
4. CPU & Memory Monitoring
The kernel manages CPU and memory allocation. These commands help you track usage and spot bottlenecks.
4.1 lscpu: CPU Architecture Details
What it does: lscpu (list CPU) displays detailed information about your CPU, including cores, threads, architecture (32-bit/64-bit), and clock speed.
Syntax:
lscpu
Example Output Snippet:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Model name: Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Why it matters: Useful for checking if your CPU supports features like virtualization (required for tools like VirtualBox).
4.2 free: Memory Usage Statistics
What it does: free shows how much RAM and swap space is used, free, or cached by the kernel.
Syntax:
free [options]
Common Option:
-h: Human-readable units (e.g.,1Ginstead of1024M).
Example Output:
free -h
total used free shared buff/cache available
Mem: 15Gi 3.2Gi 8.1Gi 452Mi 4.2Gi 11Gi
Swap: 19Gi 0B 19Gi
Breakdown:
total: Total installed RAM.used: RAM actively used by processes.free: Unused RAM.buff/cache: RAM used for temporary file storage (can be freed if needed).available: Estimated RAM available for new processes (most useful metric!).
4.3 vmstat: Virtual Memory Statistics
What it does: vmstat (virtual memory statistics) provides a snapshot of system performance, including processes, memory, disk I/O, and CPU usage.
Syntax:
vmstat [interval] # Refresh every [interval] seconds
Example Output (run vmstat 2 to refresh every 2 seconds):
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 8456232 123456 4321000 0 0 10 20 120 340 5 2 93 0 0
Key Columns:
r: Number of processes waiting for CPU (high = system is busy).si/so: Swap in/out (data moved between RAM and swap; high values = not enough RAM).us: User CPU usage (processes you run).sy: System CPU usage (kernel processes).
4.4 top/htop: Real-Time Process & Resource Monitor
What it does: top (table of processes) is an interactive tool to monitor running processes and their CPU/memory usage. htop is a modern, user-friendly alternative with colors and mouse support.
How to Use:
- Run
topor installhtopfirst (sudo apt install htopon Debian/Ubuntu):top # OR htop - In
top, pressPto sort by CPU usage,Mto sort by memory, andqto quit.
Example htop Screenshot (simplified):
CPU[||| 15%] Tasks: 180, 1 running
Mem[||||| 30%] Load average: 0.89 0.76 0.65
Swp[| 1%] Uptime: 2 days, 3h15m
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1234 user 20 0 2.5G 300M 150M R 12.0 2.0 5:30.12 firefox
5678 root 20 0 1.2G 80M 40M S 5.0 0.5 2:15.45 systemd
Newbie Notes:
htopis easier for beginners—use it instead oftopif possible!
5. Storage & Block Devices
The kernel manages storage devices (hard drives, SSDs, USBs) as “block devices.” These commands help you list, partition, and monitor them.
5.1 lsblk: List Block Devices
What it does: lsblk (list block devices) shows all storage devices (disks, partitions, and their mount points) in a tree-like format.
Syntax:
lsblk
Example Output:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 256G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 255.5G 0 part /
sdb 8:16 1 15.5G 0 disk
└─sdb1 8:17 1 15.5G 0 part /media/usb
Key Details:
sda/sdb: Physical disks (e.g.,sdais the first SSD).sda1/sda2: Partitions onsda.MOUNTPOINTS: Where the partition is mounted (e.g.,/is the root filesystem).
5.2 fdisk: Disk Partition Management (Caution!)
What it does: fdisk (fixed disk) is a tool to create/delete partitions on disks. Use with extreme caution—accidental changes can erase data!
Syntax:
sudo fdisk -l # List all disks and partitions (safe!)
sudo fdisk /dev/sdX # Modify disk /dev/sdX (DANGEROUS!)
Example (Safe): List disks to identify a USB drive:
sudo fdisk -l | grep "Disk /dev/sd"
# Output: Disk /dev/sda: 256 GB, Disk /dev/sdb: 16 GB (your USB)
Newbie Notes:
- Only use
fdiskto list partitions (fdisk -l) unless you’re an advanced user. For partitioning, use GUI tools like GParted instead.
5.3 df: Disk Space Usage
What it does: df (disk free) shows how much space is used/free on mounted filesystems (partitions).
Syntax:
df -h # Human-readable units (GB, MB)
Example Output:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 250G 80G 160G 34% /
/dev/sda1 511M 60M 452M 12% /boot/efi
/dev/sdb1 16G 8G 8G 50% /media/usb
Pro Tip: Use df -h /home to check space in your user directory.
6. Kernel Tuning with sysctl
The kernel has thousands of tweakable parameters (e.g., network buffers, file limits). sysctl lets you modify these settings temporarily or permanently.
6.1 What is sysctl?
sysctl interacts with the /proc/sys virtual filesystem, which exposes kernel parameters as readable/writable files. For example, /proc/sys/net/ipv4/ip_forward controls whether the system forwards network traffic (useful for routers).
6.2 Viewing Kernel Parameters
List all parameters with:
sysctl -a # Warning: Very long output!
Filter for specific parameters (e.g., network settings):
sysctl net.ipv4.ip_forward # Check if IP forwarding is enabled
6.3 Modifying Parameters Temporarily
Change a parameter with sysctl -w (resets after reboot):
Example: Enable IP forwarding (useful for a home router):
sudo sysctl -w net.ipv4.ip_forward=1
6.4 Making Changes Permanent
To persist changes across reboots, edit /etc/sysctl.conf or add a file to /etc/sysctl.d/:
- Open the config file:
sudo nano /etc/sysctl.conf - Add your parameter (e.g., enable IP forwarding):
net.ipv4.ip_forward=1 - Save and exit (
Ctrl+O,Enter,Ctrl+Xin nano). - Apply changes:
sudo sysctl -p # Reload /etc/sysctl.conf
7. Conclusion
These commands are your gateway to understanding and managing the Linux kernel. Start with basics like uname -r (kernel version) and free -h (memory usage), then move to troubleshooting with dmesg and module management with modprobe.
Remember: Always test commands in a safe environment (e.g., a virtual machine) before using them on critical systems. And when in doubt, check the man page (man command-name) for more details!