First boot occurs from RAMDISTRIBUTION which runs initialise.sh from the initial-setup directory under either the release or testing branch, depending on the version chosen.
This script does the following:
- Erase partition table on SD card
- Create new partition table
- Creates partitions on SD card
- Formats these partitions
- Populates partition 1 with Raspberry Pi firmware.
- Populates partition 3 with a root file system.
- Adds branch specific (release or testing) update system content to root file system.
- Adds kernel modules and /opt/vc to root filesystem. Flags kernel as up to date in update system.
- Reboots the Pi.
A one-off first time run script is executed on reboot. This:
- Re-generates the SSH keys so they are unique.
- Configures the swap partition. Not possible under RAMDISTRIBUTION as the kernel sees /dev/mmcblk0p2 as in use.
- Set config.txt options. Do this here rather than the kernel because otherwise users wishes will not be respected and will be overwritten every update. This honours them by setting them once
- Runs ldconfig