Linux Boot Sequence: From Power-On to Login Prompt [Under the Hood]

hafeez@unixshadow: /var/log/boot.log
hafeez@unixshadow:~$ journalctl –list-boots | head -1 # what actually happens at boot

Linux Boot Sequence
From Power-On to Login Prompt

seven stages, as the kernel would tell it — no steps skipped.

[1/7] FIRMWARE — UEFI takes over
[ 0.000][ OK ] Power-On Self-Test: CPU, RAM and devices probed and initialized.
[ 0.412][ OK ] Boot entries read from NVRAM; grubx64.efi loaded from /boot/efi.

[2/7] BOOTLOADER — GRUB 2
[ 0.988][ OK ] /boot/grub2/grub.cfg parsed; boot menu rendered.
[ 1.204][ OK ] Kernel + initramfs loaded into memory; command line (root=, quiet, …) passed along.

[3/7] KERNEL LOAD — vmlinuz takes the CPU
[ 1.310][ OK ] /boot/vmlinuz-* decompressed; control transferred from GRUB.
[ 1.455][ OK ] /boot/initramfs-*.img unpacked — early userspace with the drivers needed to find your disks.

[4/7] KERNEL INIT — start_kernel()
[ 1.520][ OK ] Memory management, scheduler and device drivers up.
[ 2.031][ OK ] Real root mounted; switch_root pivots off the initramfs.
[ 2.033][INFO] Full story in the ring buffer: dmesg.

[5/7] INIT SYSTEM — systemd, PID 1
[ 2.140][ OK ] Kernel executes /sbin/init → systemd becomes the first userspace process.
[ 2.188][ OK ] Default target read — usually multi-user.target or graphical.target — units start in parallel, honoring dependencies.

[6/7] TARGETS — userspace comes alive
[ 3.042][ OK ] sysinit.target: mounts, udev, hostname, machine ID.
[ 4.317][ OK ] basic.target → multi-user.target: networking, sshd, cron, logging — daemons online.

[7/7] LOGIN — runtime reached
[ 5.009][ OK ] getty spawned on virtual consoles; login prompt ready.
[ 5.010][ OK ] Reached multi-user.target. Authenticate, get a shell — system is fully at runtime.

$ ls — key files

$/boot/efi/EFI/*/grubx64.efi
$/boot/grub2/grub.cfg
$/boot/vmlinuz-*
$/boot/initramfs-*.img
$/etc/fstab

$ — key commands

$dmesg | less
$journalctl -b
$systemd-analyze blame
$systemctl get-default

# root tip: slow boot?
systemd-analyze blame shows which units ate your boot time;
systemd-analyze critical-chain finds the chain holding everything up.
unixshadow.com  ·  VPS & hosting from the shadowshafeez@unixshadow:~$

Scroll to Top