2016-07-21

We have BBB based custom Linux board running Linux 3.12.

We are current using SysV init for boot. I understand that boot happens in following sequence:

ROM code looks for boot device based on boot pin configuration.

ROM code loads first stage boot loader(SPL/X-loader) to Internal SRAM and gives control to it.

SPL does some initialization like DDR and proceeds to load U-Boot to RAM.

U-Boot does other peripheral initialization i.e. NAND/eMMC/ethernet and loads kernel+dtb.

Kernel executes initializes configures different hardware/peripherals based on dtb and initializes all the drivers.

Kernel runs first process i.e. init (/sbin/init in our case but can be set in Kernel command line parameters).

init application based on inittab (configuration file) runs startup script specified in inittab file e.g. ::sysinit:/etc/init.d/rcS

This /etc/init.d/rcS runs all the init scripts placed in /etc/init.d/ folder.

So this is how the board boots with SysV init. (At least, this is my understanding. Correct me if I am wrong in some points.)

Now at some point we want to evaluate how systemd bootstrap happens. We will have to make POC and see any improvement or degradation of the system boot and process maintenance.

We know some basics: systemd works on cgroups, and can start processes in parallel, but handles process like what monit does.

However what we don't know is the actual boot process with systemd.

What is the boot process for BeagleBoneBlack Linux when systemd is used instead of System 5 init? How does it differ from what I've outlined above for our existing boot process?

Show more