Linux Bootloaders

πŸ“š Hoofdstuk 5.3: Linux Bootloaders

──────────────────────────────
βš™οΈ Wat is een Bootloader?
──────────────────────────────
Een **bootloader** is verantwoordelijk voor het **laden van het besturingssysteem**
na het opstarten van de firmware (BIOS of UEFI).

πŸ“Œ In Linux zijn er meerdere bootloaders beschikbaar.
De meest gebruikte is: **GRUB2**.

──────────────────────────────
❌ LILO (Linux Loader) – Verouderd:
──────────────────────────────
β€’ Eerste Linux-bootloader
β€’ Configuratiebestand: `/etc/lilo.conf`
β€’ Kon alleen Linux laden via BIOS
β€’ ❌ Geen ondersteuning voor UEFI
β€’ ❌ Wordt niet meer gebruikt

──────────────────────────────
🧩 GRUB (Grand Unified Bootloader) – Legacy:
──────────────────────────────
βœ” Vervanger van LILO
βœ” Ondersteunt **multiboot** (meerdere besturingssystemen)
βœ” Gebruiker kan een besturingssysteem of kernel kiezen

πŸ“ Configuratiebestand:
`/boot/grub/menu.lst`
(of soms `grub.conf`)

πŸ“Œ Structuur van GRUB Legacy-configuratie:

πŸ”§ Globale instellingen:

Instelling | Beschrijving
---------------|--------------------------------------------------------
color | Kleuren voor- en achtergrond van het bootmenu.
default | Stelt standaard bootmenu-item in.
fallback | Alternatieve optie bij fout.
hiddenmenu | Verbergt menu tenzij toets wordt ingedrukt.
splashimage | Afbeelding als achtergrond voor het menu.
timeout | Tijd voordat automatisch wordt geboot.

πŸ–₯️ Per besturingssysteem:

Commando | Beschrijving
-------------|----------------------------------------------------------
title | Weergavenaam in het bootmenu.
root (hd0,0) | Schijf en partitie (eerste schijf, eerste partitie).
kernel | Pad naar kernelbestand (in /boot).
initrd | Initieel RAM-bestandssysteem (initrd.img).
rootnoverify | Voor niet-Linux systemen zoals Windows.

πŸ“Œ Installatie GRUB Legacy:
`grub-install /dev/sda`
βœ” `grub-install '(hd0)'` gebruikt GRUB’s eigen schijfnummers

πŸ“Œ Bewerken tijdens het booten:
- `E` β†’ Bewerken van een menu-optie
- `B` β†’ Booten met gewijzigde instellingen
- `C` β†’ GRUB-shell openen

──────────────────────────────
πŸš€ GRUB2 – Moderne versie van GRUB:
──────────────────────────────
βœ” Ondersteunt dynamische logica en drivers tijdens boot
βœ” Detecteert systemen automatisch

πŸ“ Configuratiebestand:
`/boot/grub/grub.cfg`
⚠️ **Niet handmatig bewerken!**

πŸ“Œ Debian-gebaseerde systemen:
symbolische link naar `/etc/grub2.cfg`

πŸ“Š Belangrijkste verschillen:

GRUB Legacy | GRUB2
----------------------|-------------------------------
`title` | `menuentry { }`
Partities beginnen bij 0 | Partities beginnen bij 1
`rootnoverify`, `kernel` | Niet meer nodig
menu.lst | grub.cfg, via `/etc/default/grub`

πŸ“Œ GRUB2-installatie en beheer:
β€’ Automatisch aanwezig in moderne distro’s
β€’ Aanpassingen toepassen via:
`grub2-mkconfig -o /boot/grub2/grub.cfg`

πŸ“Œ Versie controleren:
`grub-mkconfig -V`

──────────────────────────────
πŸ› οΈ Alternatieve Bootloaders (Syslinux Project):
──────────────────────────────
Hoewel GRUB2 de standaard is, biedt **Syslinux** diverse alternatieven:

Bootloader | Gebruik
------------|-------------------------------------------------------------
SYSLINUX | Opstarten vanaf FAT-bestandssystemen (USB, oude partities)
EXTLINUX | Minimalistische bootloader voor ext2/ext3/ext4/btrfs
ISOLINUX | Voor LiveCD’s of LiveDVD’s (vereist `isolinux.bin`)
PXELINUX | Netwerkboot via PXE (Preboot Execution Environment)
MEMDISK | Boottool voor het laden van oude DOS-images

──────────────────────────────