407 lines
11 KiB
Markdown
407 lines
11 KiB
Markdown
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/<distro>/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=<swap-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=<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 <ID>`), 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. |