A Beginner’s Guide to Raspberry Pi File System

The Raspberry Pi operating system encompasses numerous critical system files that play essential roles in the operation and management of the system. These files enable users to identify potential issues for troubleshooting, configure network settings and boot options to meet specific requirements, and encrypt sensitive files to restrict access. In this article, we will conduct a comprehensive analysis of the Raspberry Pi system files and their functions within the Raspberry Pi OS with desktop operating system.

System Information:

  • System Type: 64-bit
  • Kernel Version: 6.1
  • Debian Version: 12 (bookworm)

Files in the top-level directory of the Raspberry Pi

LICENCE.broadcom

This file is a license file released by the well-known semiconductor and software company Broadcom. It contains the licensing terms and conditions for using Broadcom’s software or hardware products. Users must adhere to these conditions to utilize Broadcom’s products or services. Typically, these license files detail the user’s rights and responsibilities, including usage scope, distribution restrictions, confidentiality terms, and more. Broadcom provides not only hardware components or drivers for Raspberry Pi but also various chips and solutions.

bcm2710-rpi-.dtb and bcm2711-rpi-.dtb

These are naming conventions for Raspberry Pi device tree binary files. These files describe hardware component information on different models of Raspberry Pi boards.

In simple terms, bcm2710-rpi-.dtb is suitable for Raspberry Pi 3 series and earlier models, while bcm2711-rpi-.dtb is suitable for Raspberry Pi 4 series models.

These files are loaded by the bootloader during system startup and passed to the Linux kernel. Through this naming convention, the system can load the appropriate device tree file based on the Raspberry Pi model in use, ensuring correct operation and configuration of the system with different hardware setups.

cmdline.txt

This file contains command-line parameters for kernel booting, defining the parameters and options used by the system during boot. While users can modify the system’s boot parameters to change its boot behavior and configuration, TechSparks recommends backing up the original file before making any modifications to avoid unintentional changes that may prevent the system from booting.

				
					console=serial0,115200 console=tty1 root=PARTUUID=f6a7c4bd-02 rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspberrypi-sys-mods/firstboot splash plymouth.ignore-serial-consoles
				
			

console=serial0,115200: This parameter specifies the configuration for the serial console. serial0 indicates the use of the serial port as the console, and 115200 is the baud rate, allowing access to the system console output via a serial connection (such as a serial cable or USB adapter).

console=tty1: This parameter specifies the use of tty1 as the console, the default console used after system boot for displaying boot process logs and user interaction interfaces.

root=PARTUUID=f6a7c4bd-02: This parameter specifies the PARTUUID of the partition used as the root file system, a unique identifier used to locate the system’s root partition.

rootfstype=ext4: This parameter specifies the file system type of the root file system, in this case, ext4.

fsck.repair=yes: This parameter specifies automatic repair of errors during file system checks.

rootwait: This parameter instructs the kernel to wait for the root device to become ready before attempting to mount the root file system.

quiet: This parameter instructs the kernel to reduce verbose output during boot for a cleaner boot process.

init=/usr/lib/raspberrypi-sys-mods/firstboot: This parameter specifies the initialization program to be executed after system boot. Here, the system will execute /usr/lib/raspberrypi-sys-mods/firstboot, which may be a script or program used for initial boot setup.

splash: This parameter enables a splash screen during boot, typically a graphical boot screen.

plymouth.ignore-serial-consoles: This parameter instructs Plymouth (a boot management tool) to ignore serial consoles to avoid conflicts with serial output.

config.txt

This is a configuration file for the Raspberry Pi system used to configure various parameters and options to achieve customized boot and operation. It includes settings such as display resolution, overclocking, GPU memory allocation, GPIO pin function configuration, and more.

				
					# For more options and information see
# http://rptl.io/configtxt
# Some settings may impact device functionality. See link above for details
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
# Additional overlays and parameters are documented
# /boot/firmware/overlays/README
# Automatically load overlays for detected cameras
camera_auto_detect=1
# Automatically load overlays for detected DSI displays
display_auto_detect=1
# Automatically load initramfs files, if found
auto_initramfs=1
# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2
# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1
# Run in 64-bit mode
arm_64bit=1
# Disable compensation for displays with overscan
disable_overscan=1
# Run as fast as firmware / board allows
arm_boost=1
[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1
[all]
				
			

dtparam=audio=on: This parameter enables audio functionality and loads the corresponding kernel module snd_bcm2835.

camera_auto_detect=1 and display_auto_detect=1: These parameters enable the system to automatically load overlays required for cameras and DSI displays.

auto_initramfs=1: This parameter enables the system to automatically load initramfs files during boot if found.

dtoverlay=vc4-kms-v3d: This parameter enables the DRM VC4 V3D driver for graphics acceleration.

disable_fw_kms_setup=1: This parameter prevents the firmware from creating initial video= settings in cmdline.txt and uses the kernel’s default instead.

arm_64bit=1: This parameter enables the system to run in 64-bit mode.

disable_overscan=1: This parameter disables overscan compensation for displays.

arm_boost=1: This parameter allows the system to run as fast as firmware/board allows.

[cm4] and [all]: These are section markers indicating certain settings apply to specific hardware (here, CM4) or all hardware.

fixup*.dat

A set of binary files containing firmware fixup data used to be loaded into memory during Raspberry Pi system boot to work with other firmware and drivers in the system. The naming convention of this file typically follows the format fixup*.dat, where * represents a specific version number or identifier (e.g., fixup_x.dat).

initramfs

This is a temporary root file system used to provide necessary files and tools during system boot to enable the system to start and load the real root file system. Initramfs typically contains essential device drivers, file system tools, network configuration, etc., to ensure smooth system boot.

In the Raspberry Pi system, if auto_initramfs=1 is enabled, the system automatically loads initramfs files from the /boot/firmware directory during boot. This allows the system to boot smoothly in cases where initialization work or preparation may be required during startup. Initramfs is unloaded after boot completion, and the real root file system is mounted to take over system operation.

Overlays

The contents of the /root/overlays folder

On the Raspberry Pi, overlays are dynamically loadable and unloadable hardware configuration files. These files contain device tree fragments and parameters used to configure and enable specific hardware functions or interfaces, such as cameras, displays, sensors, etc.

By using overlays, users can dynamically adjust hardware configurations without the need to recompile the kernel, enhancing the Raspberry Pi’s flexibility and configurability. This means that in different projects or scenarios, different hardware components can be easily switched and configured without recompiling the kernel or restarting the system. Some common device tree overlay files and their functions include:

ads1015.dtbo and ads1115.dtbo: Support for ADS1015 and ADS1115 analog-to-digital converters.

gpio-fan.dtbo: Support for a fan connected to GPIO for controlling fan start/stop and speed.

i2c-gpio.dtbo: Provides GPIO-based emulation of I2C bus functionality, allowing software-based I2C communication in the absence of hardware I2C interfaces.

spi0-0cs.dtbo, spi0-1cs.dtbo, spi0-2cs.dtbo: Different configurations for the SPI0 bus.

spi1-1cs.dtbo, spi1-2cs.dtbo, spi1-3cs.dtbo: Different configurations for the SPI1 bus.

spi2-1cs.dtbo, spi2-2cs.dtbo, spi2-3cs.dtbo: Different configurations for the SPI2 bus.

spi3-1cs.dtbo, spi3-2cs.dtbo, spi3-2cs-pi5.dtbo: Different configurations for the SPI3 bus.

spi4-1cs.dtbo, spi4-2cs.dtbo: Different configurations for the SPI4 bus.

spi5-1cs.dtbo, spi5-1cs-pi5.dtbo, spi5-2cs.dtbo, spi5-2cs-pi5.dtbo: Different configurations for the SPI5 bus.

w1-gpio.dtbo, w1-gpio-pullup.dtbo: Support for GPIO-based 1-Wire bus configuration for connecting and communicating with external 1-Wire devices, such as temperature sensors, etc.

imx.dtbo*: Device tree overlay files for specific CMOS sensor models supported by Raspberry Pi, used to configure and enable specific camera modules.

start*.elf

The primary component of the Raspberry Pi bootloader responsible for loading the kernel and boot trees, where * part may vary depending on different Raspberry Pi models and system versions, e.g., start.elf is primarily used for early versions of Raspberry Pi models, while start_x.elf and start_cd.elf are mainly used to support newer models such as Raspberry Pi 3 and 4.

System Volume Information

This is a special directory in Windows operating systems, typically located in the root directory of each drive. The directory can be used to store information related to system recovery, system restoration, and metadata tracking for file changes and drive space usage.

bootcode.bin

Responsible for booting the system and preparing the necessary hardware environment and configuration for the system. Specifically, it loads the bootloader, initializes hardware, loads configuration files, prepares device trees, etc.

issues.txt

Typically, a text file used to record known issues or pending items for software or projects. In software development or project management processes, issues.txt files are commonly used to track and document issues in the project, ensuring timely resolution and handling. The file can be maintained and updated by developers, testers, or project managers to ensure a clear understanding and grasp of issues in the project.

Ending

The aforementioned files collectively constitute the Raspberry Pi system’s boot and configuration environment. They are typically stored in the boot partition and loaded and used during device startup. Their stable operation is crucial to ensuring the system boots correctly and operates smoothly.

You Might Be Interested

raspberry pi autostart
How to Auto Start Programs on Raspberry Pi

Automating program startup on the Raspberry Pi can be achieved through various methods. Editing the “/etc/rc.local” file or using desktop applications, while simpler, may not

Scroll to Top