I'm starting this thread specifically about the booting process so that we can have a home for questions/answer about booting process. This post starts with a summary, and later we can expand the description, as needed.
Summary:
The booting process has 2 phases:
1. Boot loader:
- Power up, bootROM is running, u-boot image is loaded and run.
- u-boot uses the envs to find uImage and uInitrd.
- u-boot loads uImage and uInitrd from partition that has /boot folder, and start kernel. If multiple drives exist, only one drive and partition should have /boot.
2. Kernel
- Kernel starts using bootargs.
- Kernel search for rootfs to mount. This is when root device with label, uuid are used. If none specified, drive letter is used (e.g. /dev/sda1). If multiple drives exist, rootfs label or UUID will pinpoint to the exact rootfs partition.
Summary:
The booting process has 2 phases:
1. Boot loader:
- Power up, bootROM is running, u-boot image is loaded and run.
- u-boot uses the envs to find uImage and uInitrd.
- u-boot loads uImage and uInitrd from partition that has /boot folder, and start kernel. If multiple drives exist, only one drive and partition should have /boot.
2. Kernel
- Kernel starts using bootargs.
- Kernel search for rootfs to mount. This is when root device with label, uuid are used. If none specified, drive letter is used (e.g. /dev/sda1). If multiple drives exist, rootfs label or UUID will pinpoint to the exact rootfs partition.