Boot process: Difference between revisions
No edit summary |
remove introduction sentence. I don't think pmOS boot process is similar to other distros; most other distros use systemd, and don't need to deal with phone bootloaders ;) |
||
Line 1: | Line 1: | ||
== First stage boot loader == | == First stage boot loader == | ||
This isn't something controlled by postmarketOS, and most of the time the user doesn't control it either. | This isn't something controlled by postmarketOS, and most of the time the user doesn't control it either. |
Revision as of 18:48, 6 July 2020
First stage boot loader
This isn't something controlled by postmarketOS, and most of the time the user doesn't control it either.
Usually there is a first stage bootloader (actually, more of a second or more stage, depending on the device) installed somewhere on the device. That bootloader loads the linux kernel compiled by pmbootstrap in memory, as well as an initramfs (Initramfs development), which contains the smallest possible set of tools for the rest. It then passes the execution on to the kernel, which extracts the initramfs in memory and mounts it as a root filesystem. It does so, while passing on the kernel command line option, and sometimes the Device Tree Blob (dtb).
Various devices have various ways of doing this (It would be nice to document this here):
- heimdall-isorec devices expect to find the initramfs packed with the vmlinuz image, as they can't load it themselves. For these, postmarketOS has a small initramfs in the vmlinuz image that loads the usual minimalist initramfs from another partition.
- Boot process on Mediatek devices
Inside the initramfs
The task goes on to the Linux kernel, which initializes some of the peripherals, then executes the postmarketOS initramfs init script[1].
This script initializes USB Networking, looks for a postmarketOS boot partition [2][3]. At that point, you can Inspect the initramfs if you want to, and the various hook scripts are ran.
The boot partition is mounted, and the second initramfs, initramfs-extra, is loaded (a splash is displayed if not found). This initramfs contains other the remaining tools necessary for the boot process, but is kept separate in order to minimize the size of the boot image (that needs to fit on every device).
The init script then proceeds to find the root partition (it displays a splash if it isn't found), to resize it, to unlock it, to mount it at /sysroot
, and then chroots in, executing /sbin/init
.
In the root partition
TODO: complete this section