Configuring the /boot/firmware/cmdline.txt File on Raspberry Pi
The /boot/firmware/cmdline.txt
file is a critical configuration file in the Raspberry Pi OS that dictates how the kernel initializes during the boot process. This file contains kernel parameters that can control everything from root filesystem mounting to display output during boot. Understanding how to modify this file can help you troubleshoot boot issues, optimize performance, and customize your Raspberry Pi setup.
What is the cmdline.txt File?
The cmdline.txt
file is a single-line configuration file that passes parameters to the Linux kernel at boot. Unlike other configuration files, each option in cmdline.txt
must be placed on a single line, separated by spaces. No line breaks or comments are allowed.
Example cmdline.txt File
Here is an example of a typical cmdline.txt
file:
console=serial0,115200 console=tty1 root=PARTUUID=d0b645a2-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=GB
This file contains various parameters that control the boot process. Below, we’ll break down these parameters and explain how to modify them.
Key Parameters in /boot/firmware/cmdline.txt
1. console=
This parameter defines where the kernel should send console messages during boot. You can direct the output to different terminals or serial devices.
- Serial Console:
console=serial0,115200
This sends console messages to the serial port at a baud rate of 115200. Useful for debugging boot issues via a serial connection.
- TTY Console:
console=tty1
This directs output to the first virtual terminal (the screen).
2. root=
This parameter specifies the location of the root filesystem that the kernel should mount.
- Using PARTUUID:
root=PARTUUID=d0b645a2-02
This specifies the root partition by its unique identifier (PARTUUID). This is particularly useful for avoiding issues when the SD card or disk is moved between different devices.
- Alternative Options:
You can also use root=/dev/mmcblk0p2
if you prefer to reference the root partition by device name, but using PARTUUID
is generally more reliable.
3. rootfstype=
This parameter defines the filesystem type of the root partition.
- EXT4 Filesystem:
rootfstype=ext4
Specifies that the root filesystem is formatted as EXT4, which is the default and recommended filesystem for Raspberry Pi OS.
4. fsck.repair=
This option controls automatic filesystem checks and repairs on boot.
- Enable Automatic Repair:
fsck.repair=yes
This enables automatic filesystem checks and repairs if any issues are detected during boot.
5. rootwait
This instructs the kernel to wait until the root filesystem is available before attempting to mount it.
- Enable rootwait:
rootwait
This is particularly useful when booting from USB or slower storage devices.
6. quiet
and splash
These parameters control the verbosity of the boot process and the display of a splash screen.
- Quiet Boot:
quiet
This reduces the amount of boot messages displayed, leading to a cleaner startup screen.
- Splash Screen:
splash
Enables the splash screen during boot.
7. plymouth.ignore-serial-consoles
This parameter prevents the Plymouth boot splash screen from being shown on serial consoles, which can be useful in headless setups.
- Ignore Serial Consoles:
plymouth.ignore-serial-consoles
8. cfg80211.ieee80211_regdom=
This parameter sets the regulatory domain for Wi-Fi, which can affect the available channels and power settings for wireless communication.
- Set Regulatory Domain to GB:
cfg80211.ieee80211_regdom=GB
This sets the regulatory domain to Great Britain. Replace GB
with your country code as needed.
Best Practices for Modifying /boot/firmware/cmdline.txt
-
Backup Your File: Before making any changes, create a backup of your current
cmdline.txt
file:
sudo cp /boot/firmware/cmdline.txt /boot/firmware/cmdline_backup.txt
-
Make Incremental Changes: Change one parameter at a time and test your Raspberry Pi to ensure it boots correctly.
-
Use Correct Syntax: Ensure all parameters are on a single line with spaces between them. There should be no line breaks or comments in
cmdline.txt
. -
Troubleshoot Boot Issues: If your Raspberry Pi fails to boot after modifying
cmdline.txt
, try restoring the original file from your backup or using a basic configuration to identify the problematic parameter.
Default ## /boot/firmware/cmdline.txt File Example
console=serial0,115200 console=tty1 root=PARTUUID=d0b645a2-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=GB
Conclusion
The /boot/firmware/cmdline.txt
file is a powerful tool for controlling the boot behavior of your Raspberry Pi. By understanding the key parameters and how to modify them, you can optimize your Raspberry Pi's boot process, improve performance, and troubleshoot issues more effectively. Always proceed with caution when editing this file, and ensure you have a backup to restore if needed.