Diese Anleitung führt dich praxisnah durch die wichtigsten Bootloader unter Linux – **GRUB 2** (am weitesten verbreitet) und **systemd-boot** – und zeigt, wie du Menüeinträge ausblendest, die **Timeout-Zeit** änderst, den **Standard-Eintrag** festlegst, **Kernel-Parameter** setzt, Themes nutzt u. v. m. Am Ende findest du auch Tipps für UEFI-Bootreihenfolge, Dual-Boot und Fehlerbehebung. --- ## 1) Welchen Bootloader habe ich – BIOS/UEFI? ```bash # UEFI oder BIOS? [ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS/Legacy" # GRUB oder systemd-boot? bootctl status 2>/dev/null | grep -q 'systemd-boot' && echo "systemd-boot" || echo "GRUB (sehr wahrscheinlich)" ``` - **GRUB 2**: Standard bei Ubuntu, Debian, Fedora, openSUSE, Arch (sofern nicht umgestellt). - **systemd-boot**: Häufig bei minimalistischen Setups (Arch, Fedora/Silverblue, Pop!_OS, Manjaro-Varianten) – nur im UEFI-Modus. > **Wichtig:** **Bearbeite nie direkt** die generierte Datei `/boot/grub/grub.cfg`. Änderungen gehören in `/etc/default/grub` (GRUB) bzw. `/boot/loader/loader.conf` + `…/entries/*.conf` (systemd-boot), und **danach** wird die Konfiguration neu generiert. --- ## 2) GRUB 2 konfigurieren (die häufigste Variante) ### 2.1 Ort der Einstellungen - Hauptdatei: `/etc/default/grub` - Menüeinträge (automatisch generiert): `/boot/grub/grub.cfg` - Regenerieren: - Debian/Ubuntu: `sudo update-grub` - Fedora/RHEL/openSUSE: - BIOS: `sudo grub2-mkconfig -o /boot/grub2/grub.cfg` - UEFI: `sudo grub2-mkconfig -o /boot/efi/EFI//grub.cfg` - Arch: `sudo grub-mkconfig -o /boot/grub/grub.cfg` > Tipp: Mach vor Änderungen ein Backup: > `sudo cp /etc/default/grub /etc/default/grub.bak.$(date +%F)` ### 2.2 Zeit bis zur automatischen Auswahl (Timeout) In `/etc/default/grub` anpassen: ```ini GRUB_TIMEOUT=2 # Sekunden bis Autostart GRUB_TIMEOUT_STYLE=menu # "hidden" blendet das Menü aus (siehe unten) ``` - **Menü ausblenden**: ```ini GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 ``` -> System bootet sofort, Menü erscheint **nur** wenn du beim Einschalten **Shift (BIOS)** oder **Esc (UEFI)** gedrückt hältst (je nach Firmware/Distro). - **Menü immer zeigen**: ```ini GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=5 ``` Danach Konfiguration neu generieren (siehe 2.1). ### 2.3 Standard-Eintrag festlegen Variante A – fester Index (0-basierend, **ändert sich bei Kernel-Updates ggf.**): ```ini GRUB_DEFAULT=0 ``` Variante B – per Name (stabiler): ```ini GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.10.5" ``` Variante C – „zuletzt gebooteten“ Eintrag merken: ```ini GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true ``` Einmalig einen anderen Eintrag für den **nächsten** Boot setzen: ```bash sudo grub-reboot "Ubuntu, with Linux 6.10.5" # oder nach Index: sudo grub-reboot 2 ``` ### 2.4 Kernel-Parameter setzen (leiser, schneller, NVIDIA, etc.) In `/etc/default/grub`: ```ini GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="resume=UUID= mitigations=auto" ``` Häufige Parameter: - `quiet splash` – leiser Boot mit Grafiksplash (Plymouth). - `nomodeset` – Notfall bei Grafiktreibern. - `nowatchdog` – schaltet Watchdogs aus (Debug/Workarounds). - `acpi_osi=` / `acpi_backlight=` – Backlight-Probleme bei Laptops. - `amd_pstate=active` / `intel_pstate=` – CPU-Scaling steuern. - `mitigations=off` (nur Test!) – Sicherheits-Mitigations deaktivieren. > Nach Änderung immer Konfiguration regenerieren (2.1). ### 2.5 Einträge ausblenden / aufräumen - **Andere OS suchen (Dual-Boot)** wird teils aus Sicherheitsgründen deaktiviert. Falls Windows fehlt: ```ini GRUB_DISABLE_OS_PROBER=false ``` Danach: ```bash sudo update-grub # bzw. grub2-mkconfig ... ``` - Bestimmte **Recovery-Einträge** ausblenden: In vielen Distros via Paket `grub-customizer` oder durch eigene Skripte unter `/etc/grub.d/` (fortgeschritten). Minimal: Notfalls Einträge in `/etc/grub.d/40_custom` definieren und Standardliste ausblenden (nicht empfohlen, weil Updates überschreiben können). ### 2.6 Themes, Auflösung und Optik In `/etc/default/grub`: ```ini GRUB_GFXMODE=1920x1080 GRUB_GFXPAYLOAD_LINUX=keep GRUB_THEME="/boot/grub/themes/mein-theme/theme.txt" ``` - Auflösung prüfen: In der GRUB-Konsole `videoinfo` eintippen (interaktiv). - Themes bekommst du aus Paketquellen (z. B. `grub-theme-*`) oder GitHub. Theme in `/boot/grub/themes/...` ablegen. ### 2.7 Sonderfälle (UEFI-Pfad, BIOS, LUKS, Btrfs) - **UEFI**: Achte beim `grub2-mkconfig` auf den richtigen **Ausgabepfad** (siehe 2.1). - **Vollverschlüsselt (LUKS)**: Kernel-Parameter und initramfs müssen passen (meist automatisch korrekt). - **Btrfs-Snapshots** (z. B. mit Snapper): Paket **grub-btrfs** integriert Snapshots ins Menü. - **Sichere Bootreihenfolge**: Siehe Abschnitt 4 (efibootmgr). --- ## 3) systemd-boot konfigurieren (UEFI-Only, sehr schlank) ### 3.1 Dateien & Struktur - Hauptdatei: `/boot/loader/loader.conf` - Einträge: `/boot/loader/entries/*.conf` (eine Datei pro Eintrag) - Kernel/Initrd liegen meist unter `/boot` oder `/efi`. ### 3.2 Menü ausblenden, Timeout, Standard `/boot/loader/loader.conf`: ```ini timeout 2 # Sekunden (0 = sofort) default arch # oder: @saved editor no # verhindert Bearbeiten im Menü console-mode auto # Grafikmodus: auto, 0..4 ``` - **Menü ausblenden**: `timeout 0` -> Menü erscheint bei **gedrückter Leertaste** oder wenn mehrere Einträge vorhanden sind (je nach Firmware/Distribution). - **Zuletzt gebooteten Eintrag merken**: `default @saved` Beim Booten auswählen; systemd-boot speichert die Wahl in `loader/`. ### 3.3 Einträge bearbeiten Beispiel `/boot/loader/entries/arch.conf`: ```ini title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=UUID= rw quiet splash ``` - **Kernel-Parameter** hängst du einfach an `options` an. - Mehrere `initrd` Zeilen sind erlaubt (z. B. Microcode + initramfs). ### 3.4 Kernel installieren/aktualisieren - Viele Distros nutzen `kernel-install` Hooks, die automatisch passende `entries/*.conf` erzeugen. - Ansonsten Einträge manuell pflegen (simpel und transparent). --- ## 4) UEFI-Bootreihenfolge & Dual-Boot ### 4.1 Bootreihenfolge mit `efibootmgr` Liste anzeigen: ```bash sudo efibootmgr ``` Reihenfolge setzen (Beispiel, IDs anpassen): ```bash sudo efibootmgr -o 0003,0001,0002 ``` **GRUB** oder **systemd-boot** sollte ganz vorn stehen. Ein einzelnes Boot-Target (z. B. Windows) **einmalig** booten: ```bash sudo efibootmgr -n 0002 ``` ### 4.2 Windows fehlt im Menü? - Bei **GRUB**: `GRUB_DISABLE_OS_PROBER=false` (siehe 2.5) und neu generieren. - Bei **systemd-boot**: eigenen `windows.conf` Eintrag unter `entries/` anlegen oder die automatische Erkennung der Distribution nutzen. --- ## 5) Häufige Aufgaben – Schritt-für-Schritt ### A) Menü ausblenden & Sofort-Boot (GRUB) 1. `sudo nano /etc/default/grub` 2. Setze: ```ini GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 ``` 3. `sudo update-grub` (oder passendes `grub*-mkconfig`) 4. Test: Reboot, ggf. **Shift/Esc** halten, um das Menü zu zeigen. ### B) Timeout auf 5 s und Standard-Kernel merken (GRUB) 1. `/etc/default/grub`: ```ini GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true ``` 2. Regenerieren. 3. Nächster Boot merkt sich deine Auswahl automatisch. ### C) Ruhiger, schneller Boot mit Splash (GRUB) 1. `/etc/default/grub`: ```ini GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" ``` 2. Optional Plymouth-Theme installieren. 3. Regenerieren und neu starten. ### D) systemd-boot: Menü 1 s, zuletzt Gebootetes merken 1. `sudoedit /boot/loader/loader.conf`: ```ini timeout 1 default @saved editor no ``` 2. Reboot, Auswahl wird gemerkt. --- ## 6) Sicherheit, Recovery & Wartung - **Secure Boot**: Mit GRUB in der Regel via `shim` signiert – bei eigenen Kernel/Modulen ggf. MOK-Signatur nötig. systemd-boot lädt nur signierte Images, wenn Secure Boot aktiv ist. - **Recovery-Pfad**: Halte mindestens einen **nicht-minimalen** Kernel-Eintrag ohne aggressive Parameter bereit (ohne `nomodeset`, ohne `mitigations=off` etc.). - **Backups**: Sichere `/etc/default/grub`, `loader.conf` und eigene `entries/*.conf`. - **Fallback-Boot**: Notiere einen **UEFI-One-Shot** Befehl (`efibootmgr -n `), falls das Menü einmal nicht erscheint. --- ## 7) Troubleshooting (schnelle Checks) - GRUB-Menü erscheint nicht: - Firmware zeigt direkt Windows → Reihenfolge mit `efibootmgr` korrigieren. - `GRUB_TIMEOUT_STYLE=hidden`? → Temporär **Shift/Esc** beim Start. - Neue Kernel erscheinen nicht: - Nach Updates `update-grub` / `grub*-mkconfig` ausgeführt? - Pfad für UEFI-Ausgabe korrekt? - Dual-Boot-Einträge fehlen: - `os-prober` aktivieren (`GRUB_DISABLE_OS_PROBER=false`), dann neu generieren. - Schwarzer Bildschirm nach Grafiktreiber-Wechsel: - Temporär `nomodeset` im Bootmenü ergänzen (e), dann dauerhaft in `GRUB_CMDLINE_LINUX_DEFAULT`. --- ## 8) Nützliche Befehle (Cheatsheet) ```bash # GRUB neu generieren (Debian/Ubuntu) sudo update-grub # GRUB neu generieren (UEFI, Fedora-Beispiel) sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg # Standard-Eintrag nur für den nächsten Boot (GRUB) sudo grub-reboot 2 sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 6.10.5" # Zuletzt gebooteten Eintrag merken (Konfig siehe oben) # -> einfach normal auswählen; GRUB speichert es. # systemd-boot Status bootctl status # UEFI Boots verwalten sudo efibootmgr sudo efibootmgr -o 0003,0001,0002 sudo efibootmgr -n 0002 # One-shot # Welche Auflösungen unterstützt GRUB? # (in GRUB-Konsole: drücke 'c', dann) videoinfo ``` --- ## 9) Empfehlung nach Use-Case - **Einsteiger / klassische Desktop-Distro** → **GRUB 2** beibehalten, Timeout 2–5 s, `saved`-Default, `quiet splash`. - **Schlanke, transparente Setups (UEFI)** → **systemd-boot**: `timeout 1`, `default @saved`. - **Dual-Boot mit Windows** → GRUB 2 + `os-prober` aktivieren; in UEFI die Reihenfolge mit `efibootmgr` sichern. - **Schneller „kioskartiger“ Boot** → Menü verstecken (`hidden/0` bzw. `timeout 0`) und Hotkey kennen (Shift/Esc/Leertaste). --- Wenn du mir deine Distribution und dein Ziel (z. B. „Menü vollständig verstecken“, „Windows hinzufügen“, „Splash aktivieren“) nennst, schreibe ich dir die **exakten** Befehle für dein System in einem kleinen, kopierfertigen Block.