Skip to content

Day 3 — Linux Boot Process

Goal

Understand the boot process of an embedded Linux system.


Linux Boot Flow

Power On
 ↓
Boot ROM
 ↓
Bootloader
 ↓
Kernel
 ↓
Device Tree
 ↓
Root File System
 ↓
init
 ↓
User Space

Boot Components

Boot ROM

Code stored inside the SoC.

Responsibilities:

  • Locate boot device
  • Load bootloader

Bootloader

Example:

U-Boot

Responsibilities:

  • Initialize hardware
  • Load kernel
  • Load device tree
  • Start kernel

Kernel

Responsibilities:

  • Initialize memory
  • Start scheduler
  • Load drivers

Device Tree

Describes hardware configuration of the board.

Examples:

  • UART
  • SPI
  • GPIO
  • interrupts

Root Filesystem

Provides the user-space environment.

Contains:

  • /bin
  • /etc
  • /usr
  • /lib

init

First user-space process started by the kernel.

Example:

systemd


Lab

Kernel version

uname -a

Kernel command line

cat /proc/cmdline

Output:

reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave nvme.max_host_mem_size_mb=0  numa=fake=8 system_heap.max_order=0 iommu_dma_numa_policy=interleave smsc95xx.macaddr=88:A2:9E:BF:5C:4C vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000  console=ttyAMA10,115200 console=tty1 root=PARTUUID=be722d08-02 rootfstype=ext4 fsck.repair=yes rootwait cfg80211.ieee80211_regdom=TW

Boot log

dmesg | less

Root filesystem

mount | grep " / "