CertGrid CertGrid
Concepts·LPIC-1

Boot, firmware, and what the kernel was told

Objectives 101.1 and 101.2 cover firmware, the boot sequence and the bootloader. This guide determines which firmware this machine has from the filesystem rather than from memory, reads the kernel command line the bootloader passed it, and breaks the boot into its four measured phases - which is also how you find the service that is making a machine slow to start.

101: System Architecture Guide 4 of 33 Beginner

One Debian-family host. Every command reads firmware, kernel or systemd state - nothing is configured, enabled or changed.
Server NameIP AddressOSRolesCPURAMHDD
LPIC1-A01192.168.0.76Ubuntu 26.04 LTSDebian-family host - dpkg and apt, which objective 102.4 names2 Core4 GB50 GB

This guide includes

Use this for the firmware and boot objectives. This matters because all of it can be answered from a running machine - firmware, kernel parameters and where the boot time went, with no reboot.

Before you start

  1. UEFI or BIOS, answered by a directory

    You do not need to reboot to find out.

    bash Example session
    ls /sys/firmware/efi >/dev/null 2>&1 && echo "UEFI" || echo "BIOS (no /sys/firmware/efi)"BIOS (no /sys/firmware/efi)sudo -n dmesg | head -3; echo "--- the kernel's own boot messages, oldest first"[    0.000000] Linux version 7.0.0-30-generic (buildd@lcy02-amd64-048) (x86_64-linux-gnu-gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, GNU ld (GNU Binutils for Ubuntu) 2.46) #30-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 31 18:22:54 UTC 2026 (Ubuntu 7.0.0-30.30-generic 7.0.12)[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-7.0.0-30-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M[    0.000000] KERNEL supported cpus:--- the kernel's own boot messages, oldest firstsudo -n dmesg -l err,warn 2>/dev/null | head -4; echo "--- filtered by priority, same as journalctl"[    0.068239] acpi PNP0A03:00: fail to add MMCONFIG information, can't access extended configuration space under this bridge[    0.071379] * Found PM-Timer Bug on the chipset. Due to workarounds for a bug,               * this clock source is slow. Consider trying other clock sources[    1.117510] psmouse serio1: trackpoint: failed to get extended button data, assuming 3 buttons--- filtered by priority, same as journalctl

    Expected resultThe firmware verdict, then the kernel's earliest boot messages, then the same log filtered to warnings and errors.

    Success conditionYou can identify a machine's firmware and read its boot log.

  2. The parameters the bootloader passed

    /proc/cmdline is what the kernel actually received.

    bash Example session
    cat /proc/cmdline; echo "--- the parameters the bootloader passed"BOOT_IMAGE=/vmlinuz-7.0.0-30-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M--- the parameters the bootloader passedls /boot/grub/grub.cfg 2>/dev/null; ls /etc/default/grub; grep -E '^GRUB_(TIMEOUT|CMDLINE_LINUX_DEFAULT)=' /etc/default/grub/boot/grub/grub.cfg/etc/default/grubGRUB_TIMEOUT=0GRUB_CMDLINE_LINUX_DEFAULT=""

    Expected resultThe live kernel command line, then the generated grub.cfg and the /etc/default/grub you are supposed to edit instead.

    Success conditionYou know where a boot parameter comes from and where to change it.

  3. Where the boot time went

    Four phases, measured, and the slowest units named.

    bash Example session
    systemctl is-system-running; echo "--- one word for the whole machine"running--- one word for the whole machinesystemctl --failed --no-pager | head -4  UNIT LOAD ACTIVE SUB DESCRIPTION 0 loaded units listed.systemd-analyze; echo "---"; systemd-analyze blame --no-pager 2>/dev/null | head -4Startup finished in 604ms (kernel) + 1.248s (initrd) + 1.760s (userspace) = 3.614sgraphical.target reached after 1.758s in userspace.---2.854s apt-daily.service2.050s xfs_scrub_all.service1.605s sys-devices-virtual-misc-rfkill.device1.605s dev-rfkill.device

    Expected resultrunning, 0 failed units, and 604ms (kernel) + 1.248s (initrd) + 1.760s (userspace) = 3.614s with apt-daily.service slowest at 2.854s.

    Success conditionYou can say where a slow boot is spending its time.

Troubleshooting

Official sources