init at home

This commit is contained in:
2026-03-27 12:41:00 +01:00
commit 352c352056
58 changed files with 13083 additions and 0 deletions
+407
View File
@@ -0,0 +1,407 @@
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.