View on GitHub

2.1 Boot Process

Download this project as a .zip file Download this project as a tar.gz file

2.1 Boot Process


I've tried to list here a generalised overview of the boot process for the rpi / rpi2
Typically most rpi's use Noobs which makes this a little more complicated

TODO go through these

cmdline.txt options:

Firmware Versions

The differences in firmware versions:

Boot Process

Without Noobs Boot Process

First the way the boot works without Noobs
The general boot process for the Rpi is:

  1. A fixed block of code within the Soc is run on the GPU as the first stage bootloader this is fixed and inbuilt to the chip
  2. The second stage bootloader is loaded from bootcode.bin on the first partition typically mounted on /boot/
  3. The GPU Firmware start.elf / fixup.dat is loaded ( is used for the SDRAM partition)
  4. config.txt is parsed as a sort of list of bios / bootloader options
  5. The user code / linux kernel.img is then loaded and run
  6. cmdline.txt is parsed by the kernel for a list of options


With Noobs Boot Process

Most RPI's when they are installed come with noobs on the sd card by default, this makes things a little more complicated


The typical partition layout is

The general idea is Noobs never changes it's primary boot partition /dev/mmcblk0p1
This way the device should always be bootable, this partition is not mounted by default
The settings for Noobs as to which kernel / etc to boot is stored within /dev/mmcblk0p3

If the shift key is held down during boot then Noobs will interupt the boot process
and allow for the editing of the config.txt / cmdline.txt to edit the boot options

When Noobs decides to boot an OS it does so via the OS's /boot partition (/dev/mmcblk0p5)
it does a soft-reboot and loads the start.elf from that boot partition to start the boot process