Power on
Press the power button. The CPU knows nothing about disks or Linux yet. It starts running the firmware, a program kept in a flash chip on the main board; on modern PCs it is UEFI. The firmware checks and wakes the hardware.
The boot loader
The firmware finds the disk's EFI system partition, a small FAT-formatted area. From it, it copies a boot loader (a small program that loads the kernel) into memory, RAM, and jumps to it. Here the boot loader is GRUB.
GRUB reads its settings file, grub.cfg, and may show a menu for a few seconds. The chosen entry names two files: the kernel, vmlinuz, and the initramfs, initrd.img. The rest of the linux line is the kernel command line.
GRUB can read the disk's file system, so it copies both files from /boot on the root partition into memory. Nothing new is running yet: the kernel and the initramfs are just bytes waiting in RAM, and GRUB still runs the CPU.
The kernel
GRUB jumps into the kernel and is never needed again; its memory can be reused. The kernel unpacks itself, sets up memory and starts its drivers, the code for each device. It reads the command line: root=/dev/sda2 ro.
The kernel unpacks the initramfs into memory as a temporary root file system, /. It holds just enough drivers and tools to reach the real disk, for example disk or encryption drivers. The kernel runs its /init program as process 1.
/init finds the partition named by root=, here /dev/sda2, and mounts it: its files join the folder tree, read-only as ro asks. Then it switches root: the real disk, not the initramfs, becomes the folder /.
User space
/init deletes the initramfs to free its memory, then hands over to /sbin/init on the real disk, which keeps process ID 1. On Ubuntu, Debian, Fedora and Arch that program is systemd, which starts and watches the rest.
systemd reads its unit files and starts services, background programs, side by side, not one by one: the journal for logs, the network, the SSH server and a login prompt (getty). When the goal, default.target, is reached, the machine is up.
Log in and look. ps -p 1 -o comm= names process 1: systemd. cat /proc/cmdline shows the command line the kernel got, ending in root=/dev/sda2 ro. systemd-analyze shows how long the kernel, the initramfs and user space took.
What happens
;; step 1/10 · power
power on
CPU first instruction at 0xFFFFFFF0 (x86)
the board maps that address to the flash chip
firmware UEFI on modern PCs (BIOS on older ones)
checks the memory, finds the disks
baton the firmware runs the CPU
The machine is an example: an Ubuntu-style PC with UEFI, GRUB, the kernel /boot/vmlinuz and the root file system on /dev/sda2. A real grub.cfg is longer and names the disk by UUID; /proc/cmdline also starts with BOOT_IMAGE=/boot/vmlinuz, cut to "…" on the card. Warning: grub.cfg is generated; do not edit it by hand. To change the kernel command line, edit GRUB_CMDLINE_LINUX in /etc/default/grub and run sudo update-grub (Ubuntu, Debian) or grub2-mkconfig (Fedora). A wrong root= can leave the machine unable to boot, so keep a rescue USB stick ready.