init at home
This commit is contained in:
@@ -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 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.
|
||||
Reference in New Issue
Block a user