Courseiva
LPIC-2Chapter 3 of 15Objective 200.3

System Startup, Init, and Service Management

The LPIC-2 exam objective 200.3 focuses on system startup, which is the sequence of events that happens after you press the power button on a Linux server. Understanding this process is critical for Level 2 candidates because you must be able to troubleshoot boot failures, configure bootloaders, and switch between init systems in a production environment. If you cannot control how a server starts, you cannot guarantee it will start at all.

12 min read
Intermediate
Updated Jul 23, 2026
Reviewed by Johnson Ajibi· Senior Network & Security Engineer · MSc IT Security

A simple way to picture System Startup, Init, and Service Management

The Head Chef and Kitchen Brigade Analogy

A head chef arrives at a restaurant kitchen that has been closed for the night. The kitchen is dark, all the equipment is off, and the ingredients are locked away. The head chef's first job is to get the kitchen ready for service. They do this in a strict order: first, they turn on the lights (power check), then they fire up the main ovens and grills (kernel startup), next they wake up the sous chefs and line cooks (init system), and finally they assign each cook their station — the salad station, the grill station, the pastry station (starting services like networking, databases, and web servers).

The head chef does not just shout out random orders. They follow a standard procedure: the runbook, which is like the boot sequence. Some kitchens use a very old system where the head chef personally tells every cook exactly what to do (SysV init). Other modern kitchens use a head chef who says, 'You, start your station and tell me when you are ready. You, wait until the grill is hot before you start the fryer.' This parallel startup is systemd, which starts services simultaneously and tracks dependencies.

The head chef also has a backup plan: if the fryer fails to ignite, they try again before calling the kitchen manager (emergency mode). If the grill catches fire, they shut everything down safely (shutdown sequence). The whole process — from fumbling for the light switch to plating the first dish — is the system startup. Every step must happen in the right order, or the lunch rush is ruined.

How It Actually Works

System startup is the complete sequence of events that occurs between pressing the power button and seeing a login prompt. For a beginner, think of it as a chain of smaller programs that each hand off control to the next, like runners passing a baton in a relay race.

The very first thing that happens is the power supply sends a signal to the motherboard. The motherboard wakes up the BIOS (Basic Input/Output System) or its modern replacement, UEFI (Unified Extensible Firmware Interface). The BIOS or UEFI is firmware: a tiny operating system stored on a chip on the motherboard. Its job is to perform a POST (Power-On Self Test) to check that hardware like RAM and the CPU are working. If the POST fails, the system beeps or shows an error code. Once POST passes, the firmware looks for a bootable device: usually the first hard drive, but it could be a USB stick, a DVD, or a network card. It reads the first 512 bytes of that device, called the Master Boot Record (MBR) or the GUID Partition Table (GPT) header, depending on whether you use legacy BIOS or modern UEFI.

The next step is the bootloader. The bootloader is a small program that finds and loads the Linux kernel into memory. The most common bootloader on Linux systems is GRUB (GRand Unified Bootloader). GRUB presents a menu that lets you choose which kernel to boot or which operating system to run if you have a dual-boot setup. GRUB also lets you pass parameters to the kernel, like 'nomodeset' for driver issues or 'single' for single-user mode for recovery. Once you make your selection, GRUB loads the kernel and an initial RAM filesystem called initramfs (initial RAM filesystem). The initramfs is a tiny filesystem loaded into RAM that contains drivers and tools needed to mount the real root filesystem. The kernel starts executing and uses the initramfs to load drivers for your storage controller, filesystem types (like ext4 or XFS), and any other hardware needed to access the root filesystem.

Once the kernel can access the real root filesystem, it mounts it (makes it available at the '/' directory). Then the kernel looks for the first user-space process: the init process. The init process is always process ID 1 (PID 1), and it is the ancestor of every other process on the system. On older Linux systems, this was SysV init, which started services one at a time using shell scripts in '/etc/rc.d'. On modern systems, it is systemd, which starts services in parallel and manages them through units (files that describe a service, socket, mount point, or other resource).

The init process then reads its configuration to decide which services to start. Services include everything from the network manager (which gets your IP address) to a web server (like Apache or Nginx) to the SSH daemon that lets you log in remotely. The init system also handles dependencies: for example, it will not start the PostgreSQL database service until the network is running, because a database that cannot listen on a network port is useless.

The last step is to start a login manager or getty (a program that provides a terminal login prompt). At this point, the system is fully booted and ready for use.

Understanding this sequence matters because boot failures are common. The kernel might panic (crash) if it cannot find the root filesystem. The init might fail if a critical service like the filesystem mount is corrupt. A competent LPIC-2 candidate must know how to interrupt the boot process to drop into a recovery shell, how to repair GRUB, and how to switch from systemd back to SysV init if needed. You must also understand the different runlevels or targets that control which services run. In SysV init, runlevels are numbers (0 for halt, 1 for single-user, 3 for multi-user with network, 5 for graphical, 6 for reboot). In systemd, these are 'targets' like poweroff.target, rescue.target, multi-user.target, and graphical.target.

Flowchart of the Linux system boot sequence from power-on to login prompt, showing the decision points and failure paths.

Walk-Through

1

Power-On Self Test (POST)

The motherboard's firmware (BIOS or UEFI) runs a quick hardware check to verify that essential components like CPU, RAM, and storage controllers are functional. If POST fails, the system halts with beep codes or an error message. This is the first gate a server must pass.

2

Bootloader (GRUB) Stage

The firmware reads a bootloader from the MBR (BIOS) or the EFI System Partition (UEFI). GRUB displays a menu to choose which kernel to load. You can edit kernel parameters here for recovery. GRUB then loads the kernel and initramfs into memory.

3

Kernel Initialisation and initramfs

The kernel starts executing, but it cannot access the real root filesystem yet because it lacks storage drivers. It uses the initramfs (a temporary filesystem in RAM) to load the necessary kernel modules for your disk controller, encryption, and filesystem type. This step is critical: missing drivers here cause a kernel panic.

4

Init System Starts Services

PID 1 (systemd or SysV init) reads its configuration and starts all required services in the correct order. systemd uses parallel startup and dependency management. It ensures that services like networking are up before a database service attempts to start. This is where the system becomes usable.

5

Login Prompt

The init system starts getty processes on virtual consoles (or a graphical display manager like GDM). A login prompt appears, and the system is ready for user interaction. This marks the end of the boot sequence.

What This Looks Like on the Job

An IT professional working for a medium-sized e-commerce company gets a call at 2 AM: the payment processing server is not responding. Customers cannot check out. The professional first tries to ping the server: no response. They walk to the datacenter (or log in via a remote management card called IPMI or iLO) and see the server is powered on but stuck at a black screen with a blinking cursor. This is a classic boot failure.

The professional reboots the server and watches the console output. They see the POST pass. They see GRUB load. But then the screen fills with kernel panic messages: 'VFS: Unable to mount root fs on unknown-block(0,0)'. This means the kernel found its initramfs but could not mount the real root filesystem. The cause could be a corrupted initramfs, a wrong root= parameter in GRUB, or a filesystem error on the disk.

The professional presses 'e' at the GRUB menu to edit the boot parameters. They add 'single' to the end of the kernel line to boot into single-user mode (recovery mode). The system boots to a root shell. From here, they check the GRUB configuration file at '/boot/grub/grub.cfg' and confirm the root= parameter points to the correct partition, for example '/dev/sda2'. They then run 'fsck' (filesystem check) on that partition to repair any errors. After repair, they reboot and the server comes online normally.

In a different scenario, the professional is migrating an old server from CentOS 6 (which used SysV init) to CentOS 7 (which uses systemd). They must rewrite old init scripts as systemd unit files. They create a file 'myapp.service' in '/etc/systemd/system/' that looks like:

[Unit] section: Description=My Application, After=network.target

[Service] section: Type=simple, ExecStart=/usr/local/bin/myapp, Restart=on-failure

[Install] section: WantedBy=multi-user.target

Then they run 'systemctl enable myapp.service' and 'systemctl start myapp.service'. They must also know how to migrate old 'chkconfig' commands to 'systemctl' and how to check the boot time of services using 'systemd-analyze blame'.

The professional also sets up a custom boot splash screen for the company's point-of-sale (POS) terminals, which run a stripped-down Linux. They modify the GRUB configuration to add a 'quiet' splash parameter, which hides kernel messages and shows a company logo. Later, when a POS terminal fails to boot, they remove the 'quiet' flag to see the actual error messages during boot, which speeds up troubleshooting.

How LPIC-2 Actually Tests This

LPIC-2 exam objective 200.3 tests your understanding of the entire boot sequence from firmware to login prompt. The exam does not ask you to recite lines of code, but it does test your ability to identify stages, tools, and common failures. Here is exactly what they love to quiz:

The difference between BIOS and UEFI. BIOS uses MBR partitioning and boots from a 512-byte boot sector. UEFI uses GPT partitioning and boots from an EFI System Partition (ESP) that contains bootloaders as files (e.g., /EFI/grubx64.efi). You must know which partitioning scheme supports disks larger than 2TB (GPT) and which boot process scans for a bootable device.

GRUB configuration. You will be asked about the location of the GRUB config file: /boot/grub/grub.cfg (legacy) or /boot/grub2/grub.cfg (modern). The exam tests that you should not edit this file directly; instead, edit /etc/default/grub and run grub-mkconfig or grub2-mkconfig. A common trap is asking you which file to edit for permanent boot parameters: the answer is /etc/default/grub, not grub.cfg.

Kernel panic and initramfs. The exam loves scenarios where the system panics because it cannot mount the root filesystem. The solution is often to rebuild the initramfs using dracut (Red Hat family) or update-initramfs (Debian family). You must know the command: 'dracut --force' or 'mkinitramfs -o /boot/initrd.img-$(uname -r)'.

SysV init runlevels versus systemd targets. They will give you a runlevel number (e.g., 3) and ask which systemd target it maps to (multi-user.target). They also test the inverse: which runlevel does graphical.target correspond to? (runlevel 5). They ask about the command to change the default target: 'systemctl set-default multi-user.target'.

Emergency and rescue modes. In systemd, emergency.target gives you a very minimal shell with only the root filesystem mounted read-only. Rescue.target mounts the root filesystem read-write and starts some core services. The exam tests how to boot into these modes using GRUB: append 'systemd.unit=emergency.target' to the kernel command line.

The 'ps -p 1' command to show the init system. If PID 1 is /sbin/init, it is often a symlink to systemd on modern systems. They might ask how to check if systemd is running: 'systemctl is-system-running' or check for /run/systemd/system.

Boot messages. Use 'dmesg' to view kernel ring buffer messages from boot. Use 'journalctl -b' (systemd) or 'less /var/log/messages' (SysV) to review service startup logs. The exam asks which command shows all messages from the current boot.

Common traps include asking which service starts after network.target (systemd does not guarantee order, only that network is available), and confusing 'systemctl start' with 'systemctl enable' (start runs now, enable runs at boot). Another trap: SysV init scripts are in /etc/init.d, but systemd unit files are in /etc/systemd/system or /lib/systemd/system.

To pass, memorise these command patterns: - grub2-install /dev/sda: installs GRUB to the MBR. - systemctl list-units: shows running services. - systemctl list-unit-files: shows installed unit files. - grub2-mkconfig -o /boot/grub2/grub.cfg: regenerates GRUB config.

Key Takeaways

The Linux boot sequence is: firmware (BIOS/UEFI) -> bootloader (GRUB) -> kernel -> initramfs -> root filesystem -> init/PID 1 (systemd or SysV init) -> services -> login prompt.

GRUB configuration must be changed by editing /etc/default/grub and running grub2-mkconfig, never by editing /boot/grub/grub.cfg directly.

systemd is the modern init system; it uses unit files and targets instead of SysV init scripts and runlevels.

When a system fails to boot with a kernel panic, boot into single-user mode by appending 'single' to the kernel command line in GRUB to diagnose and repair.

UEFI boot requires a GPT partition table and an EFI System Partition (ESP), unlike BIOS which uses MBR for booting.

The initramfs contains necessary drivers and tools to mount the real root filesystem; if it becomes corrupt, rebuild it using dracut or mkinitramfs.

To see messages from the current boot, use 'journalctl -b' on systemd systems or 'dmesg' for kernel ring buffer messages.

The 'ps -p 1' command shows PID 1, which identifies your init system: /lib/systemd/systemd for systemd, or /sbin/init for SysV init.

Easy to Mix Up

These come up on the exam all the time. Here's how to tell them apart.

BIOS (Legacy)

Uses MBR partition table and boots from 512-byte boot sector

Only supports disks up to 2TB without extra work

Firmware is 16-bit mode and slower at initialising hardware

UEFI (Modern)

Uses GPT partition table and boots from EFI System Partition

Supports disks larger than 2TB natively

Firmware runs in 64-bit mode, supports Secure Boot and faster hardware init

SysV init

Starts services sequentially using shell scripts in /etc/init.d

Uses numbered runlevels (0-6) to determine which services run

No built-in dependency handling; scripts must order themselves

systemd

Starts services in parallel where possible, using unit files

Uses named targets (multi-user.target, graphical.target) instead of numbers

Built-in dependency and ordering via unit file directives (After=, Requires=)

MBR (Master Boot Record)

Stores partition table in first 512 bytes of disk

Maximum 4 primary partitions (or 3 + extended)

No backup copy; if MBR is corrupted, entire disk is lost

GPT (GUID Partition Table)

Stores partition table at start and backup at end of disk

Supports up to 128 partitions without extended partitions

CRC32 checksums protect partition table integrity

GRUB Legacy (version 0.97)

Config file is /boot/grub/menu.lst

Does not support GPT or UEFI boot well

Older, less flexible scripting; no autogeneration

GRUB2 (version 2.x)

Config file is /boot/grub/grub.cfg

Full support for GPT, UEFI, Secure Boot, and Btrfs

Uses /etc/default/grub and grub2-mkconfig for autogeneration

initramfs (modern)

Compressed cpio archive loaded as RAM filesystem

Smaller and more modular

Can be rebuilt with systemd or dracut easily

initrd (old)

Block device image that must be mounted as a RAM disk

Larger and harder to customise

No longer used in modern distributions, replaced by initramfs

Emergency Target (systemd)

Very minimal shell; root filesystem mounted read-only

No network or most services started

Used for severe system recovery

Rescue Target (systemd)

Root filesystem mounted read-write; core services started

Network available but no multi-user services

Used for repairing configuration files or reinstalling packages

Watch Out for These

Mistake

The BIOS and UEFI are the same thing, just with different names.

Correct

BIOS is legacy firmware that uses MBR and boots from a 512-byte boot sector, while UEFI is modern firmware that uses GPT and boots from an EFI System Partition. They handle booting completely differently, and Linux supports both with separate tools.

Most consumer hardware has used UEFI for years, but older training materials still refer to BIOS. Beginners assume the terms are interchangeable because the user interface looks similar.

Mistake

Editing /boot/grub/grub.cfg directly is the correct way to change boot parameters permanently.

Correct

You should never edit grub.cfg directly because it is auto-generated. Instead, edit /etc/default/grub and then run grub2-mkconfig (RHEL) or update-grub (Debian) to regenerate grub.cfg.

Beginners see that grub.cfg is a text file and edit it 'temporarily' expecting changes to stick. They do not realise that updates to the kernel or running mkconfig overwrite their edits.

Mistake

If a server fails to boot, you must always reinstall the operating system.

Correct

Most boot failures can be fixed by booting into rescue mode (single-user mode) and repairing the GRUB configuration, rebuilding initramfs, or checking filesystems with fsck.

In a desktop environment, a corrupted boot often leads to a 'black screen' that users cannot fix, so they reinstall. In server environments, recovery tools are essential, but beginners do not know they exist.

Mistake

systemd is just a faster version of SysV init.

Correct

systemd is a complete init system and service manager with parallel startup, dependency tracking, socket activation, and logging via journald. It is architecturally different from SysV init, which runs scripts sequentially.

Both systems end up 'starting services', so beginners think they are merely different implementations of the same idea. They miss the fundamental design shift from shell scripts to declarative unit files.

Mistake

The kernel panic message 'VFS: Unable to mount root fs' always means the hard drive is dead.

Correct

This error usually means the kernel cannot find the root filesystem because the wrong device name is in the GRUB root= parameter, or the initramfs lacks the necessary driver for the storage controller.

A panic looks catastrophic and scary to beginners, so they assume hardware failure. In practice, it is often a configuration mistake after a kernel update or disk re-ordering.

Mistake

Runlevels 0, 1, 3, 5, and 6 are the only ones that matter, and systemd uses numbers too.

Correct

systemd replaces runlevels with named 'targets' like poweroff.target, rescue.target, multi-user.target, and graphical.target. While compatibility maps exist, systemd does not use numbers internally.

Beginners learn runlevels from older LPIC-1 material and assume systemd keeps the same system. They try to use 'init 3' on a systemd distribution and wonder why it works differently.

Do You Actually Know This?

Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.

Frequently Asked Questions

What is the difference between BIOS and UEFI booting on Linux?

BIOS boots from a 512-byte Master Boot Record (MBR) on a disk with an MBR partition table. UEFI boots from files on an EFI System Partition (ESP) formatted with GPT. UEFI also supports Secure Boot, which checks the bootloader's signature.

How do I boot into single-user mode to fix a broken system?

At the GRUB menu, highlight your kernel entry, press 'e' to edit, find the line starting with 'linux', add the word 'single' at the end, then press Ctrl+X to boot. This gives you a root shell with minimal services.

Why do I get 'kernel panic - not syncing: VFS: Unable to mount root fs'?

This usually means the kernel cannot find or read the root filesystem. Common causes: the root= parameter in GRUB points to the wrong device, the initramfs is missing or corrupted, or the storage controller driver is not included in the initramfs.

What command shows me all error messages from the last boot?

On systemd systems, use 'journalctl -b' to show all logs from the current boot. For older SysV init systems, use 'dmesg' for kernel messages or check '/var/log/messages' for service logs.

How do I change the default runlevel or target to boot into text mode instead of graphical?

For systemd, use 'systemctl set-default multi-user.target' to boot to text mode. For SysV init, edit '/etc/inittab' and change the line 'id:5:initdefault:' to 'id:3:initdefault:'.

What is the initramfs and why is it needed?

The initramfs (initial RAM filesystem) is a small compressed filesystem loaded into memory during boot. It contains essential kernel modules and tools needed to mount the real root filesystem, especially for encrypted disks, LVM, or uncommon storage controllers.

How do I rebuild a corrupted initramfs?

On Red Hat-based systems, run 'dracut --force'. On Debian-based systems, run 'update-initramfs -u'. This regenerates the initramfs file for the current kernel, replacing a corrupted one.

Terms Worth Knowing

Keep going

You've finished System Startup, Init, and Service Management. Continue through the LPIC-2 study guide to build a complete picture of the exam.

Done with this chapter?