87 lines
3.0 KiB
Markdown
87 lines
3.0 KiB
Markdown
# systemd-cryptsetup – Boot-Reihenfolge und Abhängigkeiten
|
||
|
||
**Zusammenfassung**: systemd steuert die Reihenfolge beim Boot: Zuerst muss der USB-Stick mit den Schlüsseldateien gemountet sein, dann können die LUKS-Container geöffnet werden. Spezielle crypttab-Optionen stellen dies sicher.
|
||
**Quellen**: `chats/fstab und crypttab.md`, `konfigurationsdateien/crypttab`
|
||
**Zuletzt aktualisiert**: 2026-06-16
|
||
|
||
---
|
||
|
||
## Die Herausforderung
|
||
|
||
Die LUKS-Container auf sdb3 und sdc3 werden mit Schlüsseldateien auf einem USB-Stick (`/dev/sda1`) entsperrt. Beim Boot muss systemd sicherstellen:
|
||
|
||
1. **USB-Stick mounten** (`/mnt/usb_key`)
|
||
2. **Dann erst** die LUKS-Container öffnen (Schlüsseldatei liegt auf dem USB-Stick)
|
||
3. **Dann** die Dateisysteme mounten (siehe [fstab](./fstab.md))
|
||
|
||
## Lösung: systemd-Optionen in der crypttab
|
||
|
||
Die crypttab-Einträge enthalten systemd-spezifische Optionen:
|
||
|
||
```
|
||
encrypt_data UUID=097bccad-... /mnt/usb_key/twotb.bin luks,tries=3,\
|
||
x-systemd.requires=mnt-usb_key.mount,\
|
||
x-systemd.after=mnt-usb_key.mount,\
|
||
x-systemd.device-timeout=15s
|
||
```
|
||
|
||
### Optionen im Detail
|
||
|
||
| Option | Wirkung |
|
||
|---|---|
|
||
| `x-systemd.requires=mnt-usb_key.mount` | Stellt sicher, dass der USB-Key-Mount **aktiv** ist, bevor der LUKS-Container geöffnet wird. Schlägt der Mount fehl, wird auch der Container nicht geöffnet. |
|
||
| `x-systemd.after=mnt-usb_key.mount` | Legt die **Reihenfolge** fest: Der USB-Key-Mount muss **vor** dem Container-Öffnen gestartet werden. |
|
||
| `x-systemd.device-timeout=15s` | systemd wartet maximal 15 Sekunden auf das Device (falls der USB-Stick langsam initialisiert). |
|
||
| `tries=3` | Maximale Anzahl an Fehlversuchen bei der Entschlüsselung. |
|
||
|
||
### Wie der Unit-Name zustande kommt
|
||
|
||
Der systemd-Mount-Name folgt einer festen Konvention: Pfade werden mit `-` statt `/` und `.mount` als Suffix geschrieben.
|
||
|
||
- `/mnt/usb_key` → `mnt-usb_key.mount`
|
||
- `/mnt/data` → `mnt-data.mount`
|
||
|
||
## Ablauf beim Boot
|
||
|
||
```
|
||
USB-Stick wird erkannt (udev)
|
||
│
|
||
▼
|
||
mnt-usb_key.mount (systemd mount unit)
|
||
│
|
||
├── x-systemd.requires ──┐
|
||
├── x-systemd.after ─────┤
|
||
│ ▼
|
||
│ systemd-cryptsetup@encrypt_data.service
|
||
│ systemd-cryptsetup@encrypt_sdc3.service
|
||
│ │
|
||
│ ▼
|
||
│ /dev/mapper/encrypt_data ← verfügbar
|
||
│ /dev/mapper/encrypt_sdc3 ← verfügbar
|
||
│
|
||
▼
|
||
mnt-data.mount (aus /etc/fstab)
|
||
media-piadmin-data.mount (aus /etc/fstab)
|
||
```
|
||
|
||
## Fehlerbehebung
|
||
|
||
```bash
|
||
# Status des Container-Öffnens prüfen
|
||
journalctl -b -u systemd-cryptsetup@encrypt_data.service -e
|
||
journalctl -b -u systemd-cryptsetup@encrypt_sdc3.service -e
|
||
|
||
# Prüfen, ob der USB-Stick gemountet ist
|
||
lsblk /dev/sda
|
||
mount | grep usb_key
|
||
|
||
# systemd-Abhängigkeiten visualisieren
|
||
systemctl list-dependencies mnt-data.mount
|
||
```
|
||
|
||
## Verwandte Seiten
|
||
|
||
- [crypttab](./crypttab.md) – Die crypttab-Konfiguration
|
||
- [fstab](./fstab.md) – Mountet die geöffneten Container
|
||
- [cryptsetup](./cryptsetup.md) – Manuelle cryptsetup-Befehle
|