Files
it-know-how/Computerkram/Linux/Boot Menü anpassen.md
T
2026-03-27 12:41:00 +01:00

407 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 25 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.