Skip to main content

Raspberry Pi 4 (8 GB) als Proxmox VE Test-Node

Raspberry Pi 4 – Debian 13, LUKS2, Dropbear und Proxmox VE

InstallationDiese vonAnleitung Debianbeschreibt 13die (Trixie)Einrichtung ARM64 auf einemeines Raspberry Pi 4 mit 8 GB RAM.RAM als verschlüsselten Proxmox-Testserver auf Basis von Debian 13 (Trixie).

Debian wird direkt von einem Linux-PC aus mit debootstrap installiert. Die Konfiguration erfolgt innerhalb einer ARM64-chroot-Umgebung.

Das Root-Dateisystem wird mit LUKS2 verschlüsseltverschlüsselt. undWährend beimdes SystemstartSystemstarts ermöglicht Dropbear eine Entsperrung über Dropbear-SSH entsperrt.

Die Einrichtung erfolgt über debootstrap und eine ARM64-chroot-Umgebung aufmit einem Linux-PC.separaten Anschließend werden die angepassten Proxmox-Pakete des Community-Projekts PXVIRT installiert.Schlüssel.

1. Voraussetzungen

  • Raspberry Pi 4 mit 8 GB RAM
  • USB-SSD abmit 32 GB, empfohlenmindestens 64 GB oder mehr
  • Debian-13-Linux-PC mit Internetzugang
  • Netzwerkverbindung über EthernetEthernet-Verbindung
  • StatischeFeste IPv4-Adresse, NetzmaskeAdresse und Gateway
  • SSH-Schlüssel für die Administration
  • USB-Boot-fähige Raspberry-Pi-Firmware
  • SSH-Client unter Linux

Für alle administrativen Befehle auf dem Linux-PC wird eine Root-Shell mit su - verwendet.

Datenträgeraufbau

Partition

Format

Verwendung

Partition 1

FAT32

/boot/firmware

Partition 2

LUKS2

Verschlüsselter Root-Datenträger

cryptroot

ext4

Debian, Proxmox, ContainerProxmox und VMsVM-Daten

Die Boot-Partition bleibt unverschlüsselt.unverschlüsselt, Alleda die Raspberry-Pi-Firmware sie lesen können muss. Die Verschlüsselung schützt Daten innerhalbauf dem ausgeschalteten Datenträger, verhindert jedoch keine Manipulation an der Root-Partition werden durch LUKS2 geschützt.Boot-Partition.

2. SSH-Schlüssel vorbereitenerzeugen

Auf dem Linux-Client zwei getrenntevoneinander Ed25519-unabhängige SSH-Schlüssel erzeugen.erstellen.

Schlüssel zur LUKS-Entsperrung:Entsperrung

ssh-keygen -t ed25519 -a 100 \
-f ~/.ssh/id_initramfs_unlock_pi4id_pi4_unlock \
-C "Pi4 LUKS Unlock"

Schlüssel für die normale Administration:

Administrationsschlüssel

ssh-keygen -t ed25519 -a 100 \
-f ~/.ssh/id_pi4_admin \
-C "Pi4 Administration"

Beide privaten Schlüssel mit jeweilseiner einereigenen Passphrase schützen.

Öffentliche Schlüssel anzeigen:

cat ~/.ssh/id_pi4_unlock.pub
cat ~/.ssh/id_pi4_admin.pub

Die öffentlichen Schlüssel werden später in dasDebian neuehinterlegt. Debian-SystemDie übernommen.privaten Schlüssel verbleiben ausschließlich auf dem Client.

3. Linux-PC vorbereiten

Zur Root-Shell wechseln:öffnen:

su -

Paketlisten aktualisieren:

apt update
apt full-upgrade

Benötigte Pakete installieren:

apt install -y \
debootstrap \
debian-archive-keyring \
qemu-user \
qemu-user-binfmt \
binfmt-support \
cryptsetup \
parted \
dosfstools \
e2fsprogs \
kmod \
ca-certificates \
curl \
git \
openssh-client

QEMU ermöglicht dasdie AusführenAusführung vonder ARM64-ProgrammenProgramme auf einem Linux-SystemPC mit anderer CPU-Architektur.Prozessorarchitektur.

Binfmt-UnterstützungQEMU-Registrierung kontrollieren:prüfen:

cat /proc/sys/fs/binfmt_misc/qemu-aarch64

BeiAuf einem x86-64-Host muss der EintragInterpreter aktiviert sein,sein. bevor ARM64-Programme innerhalb der chroot-Umgebung ausgeführt werden können.

Bei einem nativen ARM64-Host wird QEMUkeine fürCPU-Emulation benötigt.

chroot begrenzt die AusführungCPU-Kernzahl dernicht. ZielprogrammeParallele Programme können mehrere Kerne verwenden. Die Paketinstallation selbst ist allerdings nicht benötigt.vollständig parallelisiert.

4. USB-SSD partitionierenauswählen

USB-SSD anschließen undAngeschlossene Datenträger anzeigen:

lsblk -o NAME,SIZE,MODEL,TYPE,MOUNTPOINTS

DasIm Beispiel verwendetist /dev/sdb alsdie gewünschte SSD. DieDer korrekte GerätebezeichnungGerätename muss voranhand jederder Änderungtatsächlichen geprüftLaufwerksinformationen angepasst werden.

Zieldatenträger festlegen:

DISK=/dev/sdb

Datenträger erneutGerät kontrollieren:

lsblk "$DISK"
findmnt /

Die ausgewählte SSD darf keinenicht eingehängtendas laufende System enthalten. Sämtliche Partitionen enthalten.des Zielgeräts müssen ausgehängt sein.

Achtung: Die folgendennächsten Befehle entfernenlöschen sämtliche Daten vomauf dem ausgewählten Datenträger.

Partitionstabelle erstellen:

parted -s "$DISK" mklabel msdos

Boot-Partition mit 1 GiB erstellen:

parted -s "$DISK" mkpart primary fat32 1MiB 1025MiB

Root-Partition mit dem restlichen Speicher:erstellen:

parted -s "$DISK" mkpart primary 1025MiB 100%

Boot-Flag setzen:

parted -s "$DISK" set 1 boot on
partprobe "$DISK"
udevadm settle

BeiPartitionsnamen USB-SATA-Laufwerken heißen die Partitionen beispielsweise /dev/sdb1 und /dev/sdb2. Bei NVMe-Laufwerken heißen sie beispielsweise /dev/nvme0n1p1 und /dev/nvme0n1p2.

Die folgenden Variablen automatisch anhand der Gerätebezeichnung bilden:bestimmen:

case "$DISK" in
  *[0-9])
    BOOT="${DISK}p1"
    ROOT="${DISK}p2"
    ;;
  *)
    BOOT="${DISK}1"
    ROOT="${DISK}2"
    ;;
esac

lsblk "$DISK"

5. LUKS2LUKS2-Verschlüsselung einrichten

Boot-Partition formatieren:

mkfs.vfat -F32 -n PVEBOOT "$BOOT"

Die zweite Partition

LUKS2 mit LUKS2AES-256-XTS und Argon2id

verschlüsseln:

Die folgende Konfiguration nutzt AES-XTS mit zwei AES-256-Schlüsseln sowie Argon2id zur Ableitung des Schlüssels aus der Passphrase.

cryptsetup luksFormat \
  --type luks2 \
  --cipher aes-xts-plain64 \
  --key-size 512 \
  --pbkdf argon2id \
  --pbkdf-memory 262144524288 \
  --pbkdf-parallel 2 \
  --iter-time 2000 \
  --verify-passphrase \
  "$ROOT"

Parameterübersicht:

Parameter

Einstellung

Format

LUKS2

Verschlüsselung

AES-256-XTS

Schlüsselmaterial

512 Bit insgesamt

Passwortableitung

Argon2id

Speichergrenze

512 MiB

Parallelität

2

Kalibrierungsziel

2000 ms

Die Werte sind ein Ausgangspunkt für den Raspberry Pi 4 mit 8 GB RAM. Cryptsetup kalibriert die tatsächlichen Argon2-Parameter auf dem einrichtenden Rechner. Insbesondere bei Verwendung von QEMU oder einem schnelleren Host können sich die späteren Entsperrzeiten deutlich unterscheiden.

Eine lange,zufällige, einzigartigelange Passphrase festlegen.verwenden, Diesebeispielsweise wirdsieben späteroder mehr unabhängig ausgewählte Diceware-Wörter.

Keine kurzen Kennwörter, Gerätebezeichnungen, Geburtsdaten oder wiederverwendeten Passwörter nutzen.

Die gewählten Parameter müssen im Raspberry-Pi- Initramfs ausreichend RAM zur Verfügung haben. Höhere Argon2-Werte sind nicht automatisch besser.

SSD-Discard beziehungsweise TRIM für cryptroot-unlockdas benötigt.verschlüsselte Dateisystem zunächst nicht aktivieren. Discard kann Informationen über belegte Datenbereiche preisgeben.

Gespeicherte LUKS-PartitionParameter prüfen:

cryptsetup luksDump "$ROOT"

Insbesondere PBKDF, Memory, Time cost und Threads kontrollieren.

Verschlüsselung öffnen:

cryptsetup open "$ROOT" cryptroot

Ext4-Dateisystem erstellen:

mkfs.ext4 -L pve-root /dev/mapper/cryptroot

VerschlüsselungStatus prüfen:anzeigen:

cryptsetup status cryptroot
lsblk -f "$DISK"

6. UUIDs dokumentieren

Die UUIDs vor dem Betreten der chroot-Umgebung ermitteln und für die Konfiguration notieren.

LUKS-UUID:

cryptsetup luksUUID "$ROOT"

Boot-UUID:

blkid -s UUID -o value "$BOOT"

Die LUKS-UUID bezeichnet die verschlüsselte Partition. Die Boot-UUID bezeichnet das FAT32-Dateisystem.

7. Dateisysteme einhängen

Verschlüsselte Root-DateisystemPartition einhängen:

mkdir -p /mnt/pi4Temp/1
mount /dev/mapper/cryptroot /mnt/pi4Temp/1

Firmware-Verzeichnis erstellen:vorbereiten:

mkdir -p /mnt/pi4/Temp/1/boot/firmware

Boot-Partition einhängen:

mount "$BOOT" /mnt/pi4/Temp/1/boot/firmware

Mountpoints kontrollieren:überprüfen:

findmnt /mnt/pi4Temp/1
findmnt /mnt/pi4/Temp/1/boot/firmware

7.8. Debian 13 direkt installieren

Debian wird mit debootstrap direkt auf dasder verschlüsselteverschlüsselten Root-DateisystemPartition installiert.

debootstrap \
  --arch=arm64 \
  --keyring=/usr/share/keyrings/debian-archive-keyring.gpg \
  trixie \
  /mnt/pi4Temp/1 \
  https://deb.debian.org/debian

DieAnschließend werden die Partitionen dauerhaft in der neuen Installation erstellt ein minimales Debian-13-ARM64-System.konfiguriert.

Crypttab erstellen

nano /mnt/Temp/1/etc/crypttab

DieEintrag:

ARM64-Systemprogramme
cryptroot werdenUUID=LUKS-UUID beinone Bedarfluks,initramfs
über

LUKS-UUID QEMUdurch ausgeführt.die Diezuvor Geschwindigkeitermittelte hängt vom Linux-Host, dessen CPU undUUID der SSDverschlüsselten ab.Partition ersetzen.

Fstab konfigurieren

nano /mnt/Temp/1/etc/fstab

Einträge:

/dev/mapper/cryptroot / ext4 defaults,noatime 0 1
UUID=BOOT-UUID /boot/firmware vfat defaults,umask=0077 0 2

BOOT-UUID durch die zuvor ermittelte UUID der FAT32-Partition ersetzen.

8.9. ARM64-chroot vorbereiten

Die notwendigen Systemdateisysteme in das neue Debian einbinden:

for DIR in dev proc sys run; do
    mount --rbind "/$DIR" "/mnt/pi4/Temp/1/$DIR"
    mount --make-rslave "/mnt/pi4/Temp/1/$DIR"
done

DNS-Konfiguration übernehmen:

cp -L /etc/resolv.conf /mnt/pi4/Temp/1/etc/resolv.conf

ARM64-chroot starten:

chroot /mnt/pi4Temp/1 /bin/bash

Architektur überprüfen:

dpkg --print-architecture

Erwartete Ausgabe:

arm64

AlleDie folgenden InstallationsbefehleSchritte werden innerhalb dieserder chroot-Umgebung ausgeführt.

Debian

10. und QEMU können mehrere Prozessoren für parallele Aufgaben verwenden. Ein separater CPU-Parameter für chroot ist nicht erforderlich.

9. Debian-APT-Paketquellen konfiguriereneinrichten

APT-QuellenPaketquellen bearbeiten:öffnen:

nano /etc/apt/sources.list

DieFolgende vorhandenenQuellen verwenden. Bereits vorhandene gleichwertige Einträge kontrollieren.unter Für/etc/apt/sources.list.d Debiannicht 13 können folgende Quellen verwendet werden:duplizieren.

deb https://deb.debian.org/debian trixie main non-free-firmware
deb https://deb.debian.org/debian trixie-updates main non-free-firmware
deb https://security.debian.org/debian-security trixie-security main non-free-firmware

Gleichwertige bereits vorhandene Einträge unter /etc/apt/sources.list.d dürfen nicht doppelt eingerichtet werden.

Paketlisten aktualisieren:

apt update

10.11. Kernel und BasispaketeBasissystem installieren

DenBenötigte ARM64-Kernel, Raspberry-Pi-Firmware, Initramfs und NetzwerkdiensteSystempakete installieren:

apt install -y \
linux-image-arm64 \
raspi-firmware \
initramfs-tools \
cryptsetup-initramfs \
dropbear-initramfs \
openssh-server \
ifupdown2 \
systemd-sysv \
ca-certificates \
curl \
git \
nano \
less \
locales \
busybox \
kmod \
e2fsprogs

Hostname festlegen:setzen:

echo pve-pi4 >nano /etc/hostname

HostdateiInhalt:

pve-pi4

Hosts-Datei bearbeiten:

nano /etc/hosts

Beispiel:

127.0.0.1 localhost
10.100.0.2 pve-pi4.home.arpa pve-pi4

Root-Passwort setzen:

passwd

Für root eine eigene starke Passphrase verwenden, nicht die LUKS-Passphrase.

SSH-Dienst für den Systemstart aktivieren:

systemctl enable ssh

11.12. SSH absichern

Die reguläre SSH-Administration einrichtenverwendet

Denausschließlich den zuvor erzeugten öffentlichenAdministrationsschlüssel.

Administrationsschlüssel

SSH-Verzeichnis hinterlegen:erstellen:

install -d -m 0700 /root/.ssh

Authorized-Keys-Datei öffnen:

nano /root/.ssh/authorized_keys

Den vollständigen Inhaltöffentlichen vonSchlüssel aus id_pi4_admin.pub einfügen.

Dateirechte setzen:

chmod 0600 /root/.ssh/authorized_keys

SSH-KonfigurationHärtung ergänzen:konfigurieren:

nano /etc/ssh/sshd_config.d/10-pi4-security.conf

Folgenden Inhalt verwenden:Inhalt:

PermitRootLogin prohibit-password
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
MaxAuthTries 3
LoginGraceTime 30

DadurchDiese Konfiguration ist auf die Root-AnmeldungAdministration überdes SSHHosts nurausgerichtet. mitFür einemspätere passendenSSH-basierte SchlüsselClusterfunktionen möglich.

oder

12.Migrationen Boot-Konfigurationmüssen vorbereiten

die

DebianWeiterleitungsregeln verwendetpassend raspi-firmwareüberprüft zur Bereitstellung der Bootdateien.werden.

DateiKonfiguration bearbeiten:prüfen:

nanosshd /etc/default/raspi-firmware

Folgende Werte setzen:

ROOTPART="/dev/mapper/cryptroot"
KERNEL="auto"
INITRAMFS="auto"
CMA=0-t

Der ParameterBefehl ROOTPARTdarf sorgtkeine dafür,Konfigurationsfehler dass die generierte Kernel-Kommandozeile auf das entschlüsselte Root-Dateisystem zeigt.

Die Bootdateien werden später durch die Kernel- und Initramfs-Hooks in die Firmware-Partition übernommen.melden.

13. Crypttab und Fstab konfigurieren

LUKS-UUID anzeigen:

cryptsetup luksUUID "$ROOT"

Falls die Variable ROOT nicht mehr verfügbar ist, auf dem Linux-Host die UUID der LUKS-Partition mit cryptsetup luksUUID ermitteln.

Crypttab bearbeiten:

nano /etc/crypttab

Eintrag hinzufügen:

cryptroot UUID=LUKS-UUID none luks,initramfs

LUKS-UUID durch die tatsächliche UUID der verschlüsselten Partition ersetzen.

Die UUID der FAT32-Boot-Partition wird auf dem Linux-Host mit blkid ermittelt.

Fstab bearbeiten:

nano /etc/fstab

Folgende Einträge verwenden:

/dev/mapper/cryptroot / ext4 defaults,noatime 0 1
UUID=BOOT-UUID /boot/firmware vfat defaults,umask=0077 0 2

BOOT-UUID durch die tatsächliche Dateisystem-UUID der FAT32-Partition ersetzen.

14. Netzwerk konfigurieren

Das Initramfs verwendet eth0 unmittelbar für die SSH-Entsperrung. Nach dem Entsperren verwendet Debian die Linux-Bridge vmbr0.

Beispielwerte:Beispielnetzwerk:

IP-AdresseManagement-IP

10.100.0.2

Netzmaske

255.255.0.0

Gateway

10.100.0.1

Interface

eth0

Bridge

vmbr0

Die BeispielwerteAdressen an das eigene Netzwerk anpassen. Die Management-IP sollte dauerhaft reserviert sein.

Netzwerkkonfiguration bearbeiten:öffnen:

nano /etc/network/interfaces

Inhalt:

auto lo
iface lo inet loopback

iface eth0 inet manual

auto vmbr0
iface vmbr0 inet static
    address 10.100.0.2/16
    gateway 10.100.0.1
    bridge-ports eth0
    bridge-stp off
    bridge-fd 0

Den Netzwerkdienst aktivieren:

systemctl enable networking

Für die DNS-Auflösung in /etc/resolv.conf einen erreichbaren DNS-Server konfigurieren. Die dauerhafte DNS-Verwaltung darf nach dem ersten Boot nicht mit einem anderen aktiven Netzwerkmanager in Konflikt stehen.

14. Raspberry-Pi-Boot konfigurieren

Firmware-Konfiguration bearbeiten:

nano /etc/resolv.confdefault/raspi-firmware
eintragen,

Folgende beispielsweiseVariablen denaktivieren eigenenbeziehungsweise Router,ergänzen:

sofern
ROOTPART="/dev/mapper/cryptroot"
dieserKERNEL="auto"
DNSINITRAMFS="auto"
bereitstellt.

Die Debian-Firmware-Hooks verwenden diese Einstellungen zur Erstellung der Bootdateien.

Zusätzliche Kernelparameter hinterlegen:

nano /etc/default/raspi-extra-cmdline

Inhalt als eine einzelne Zeile:

rootwait ip=10.100.0.2::10.100.0.1:255.255.0.0:pve-pi4:eth0:none

Die Adresse dient dem Netzwerkzugriff im Initramfs vor der Entsperrung.

15. Initramfs-NetzwerkInitramfs konfigurierenvorbereiten

Initramfs-Konfiguration öffnen:

nano /etc/initramfs-tools/initramfs.conf

Folgende WerteEinstellungen setzen:

MODULES=most
DEVICE=eth0
IP=10.100.0.2::10.100.0.1:255.255.0.0:pve-pi4:eth0:none

FürDas Initramfs benötigt die Kernel-KommandozeileTreiber wirdfür zusätzlichden dieselbeUSB-Controller, IP-Konfigurationdie hinterlegt.SSD und den Ethernet-Port.

DateiKernel-Versionen bearbeiten:anzeigen:

ls /lib/modules

Die tatsächlich installierte Kernel-Version auswählen:

KVER=$(ls /lib/modules | sort -V | tail -n 1)
echo "$KVER"

Zusätzliche Module konfigurieren:

nano /etc/default/raspi-extra-cmdlineinitramfs-tools/modules

InhaltBeim alsRaspberry einzelnePi Zeile:

4
ip=10.100.0.2::10.100.0.1:255.255.0.0:pve-pi4:eth0:none
ist

Dasinsbesondere Initramfs verwendet eth0reset_raspberrypi für den Netzwerkzugriff,USB-Controller bevorrelevant. cryptrootBenötigte geöffnetStorage- wird.und Netzwerktreiber ebenfalls berücksichtigen.

Beispielsweise folgende Module anhand ihrer tatsächlichen Verfügbarkeit prüfen:

modinfo -k "$KVER" reset_raspberrypi
modinfo -k "$KVER" bcmgenet
modinfo -k "$KVER" usb_storage
modinfo -k "$KVER" uas

Verfügbare und benötigte Module in /etc/initramfs-tools/modules eintragen. Fest in den Kernel eingebaute Treiber benötigen keinen zusätzlichen Moduleintrag.

16. DropbearDropbear-SSH konfigurieren

Dropbear stellt während der Initramfs-Phase eine eigene SSH-Verbindung bereit. Diese wird auf die Entsperrfunktion beschränkt.

Konfigurationsverzeichnis vorbereiten:erstellen:

install -d -m 0700 /etc/dropbear/initramfs

Authorized-Keys-DateiSchlüsseldatei bearbeiten:

nano /etc/dropbear/initramfs/authorized_keys

Den vollständigen öffentlichen Schlüssel aus id_initramfs_unlock_pi4.id_pi4_unlock.pub einfügenmit und folgendefolgenden Optionen voranstellen:eintragen:

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="/bin/cryptroot-unlock" ssh-ed25519 SSH-PUBLIC-KEY

SSH-PUBLIC-KEY durch den echtenvollständigen öffentlichen Schlüssel ersetzen. Der gesamte Eintrag muss in einer einzelnen Zeile stehen.

Der Schlüssel ist damit für die Entsperrung vorgesehen, nicht für eine frei nutzbare Initramfs-Shell.

Dateirechte setzen:

chmod 0600 /etc/dropbear/initramfs/authorized_keys

Dropbear-Konfiguration bearbeiten:öffnen:

nano /etc/dropbear/initramfs/dropbear.conf

Folgende Einstellung verwenden:Inhalt:

DROPBEAR_OPTIONS="-p 2222 -s -j -k -I 120"

DerDropbear SSH-Zugriff ist damit auf Schlüsselanmeldung und den Entsperrbefehl beschränkt.

Der Dienst lauscht während der Initramfs-Phase aufverwendet Port 2222. Passwortzugriff und SSH-Portweiterleitungen sind deaktiviert.

17. Dropbear-HostkeySSH-Hostkeys prüfenkontrollieren

Der SSH-Hostkey für Dropbear wird normalerweise währendund der Paketinstallationreguläre erstellt.SSH-Dienst verwenden unterschiedliche Hostkeys.

Vorhandenen SchlüsselDropbear-Hostkey prüfen:

ls -l /etc/dropbear/initramfs/dropbear_ed25519_host_key

Falls kein entsprechender Schlüssel existiert:

dropbearkey -t ed25519 \
-f /etc/dropbear/initramfs/dropbear_ed25519_host_key

Öffentlichen Dropbear-Hostkey und Fingerprint anzeigen:

dropbearkey -y \
-f /etc/dropbear/initramfs/dropbear_ed25519_host_key

DenRegulären FingerprintSSH-Hostkey füranzeigen:

ssh-keygen -y \
-f /etc/ssh/ssh_host_ed25519_key

Die beiden öffentlichen Hostkeys sicher dokumentieren. Sie werden auf dem SSH-Client vor dem ersten Verbindungsaufbau hinterlegt.

Wichtig: Der private Dropbear-Hostkey befindet sich später im unverschlüsselten Initramfs. Physischer Zugriff auf die spätereBoot-Partition SSH-Verbindungermöglicht dokumentieren.daher auch den Zugriff auf diesen Schlüssel. Die Boot-Integrität ist eine separate Sicherheitsanforderung.

18. Initramfs und Firmware erzeugen

Installierte Kernel-Versionen anzeigen:

ls /lib/modules

Neueste installierte Kernel-Version ermitteln:erneut festlegen:

KVER=$(ls /lib/modules | sort -V | tail -n 1)
echo "$KVER"

Das Initramfs für diese Kernel-Version neu erstellen oder aktualisieren:

if [ -f "/boot/initrd.img-$KVER" ]; then
    update-initramfs -u -k "$KVER"
else

Falls noch kein Initramfs für die ausgewählte Version existiert, stattdessen eines erstellen:

update-initramfs -c -k "$KVER"
fi

DieBeide KonfigurationVarianten dessind Firmwarepaketsalternativ solltezu dabeiverwenden, dienicht Bootdateiennacheinander nachfür /boot/firmwaredieselbe übernehmen.bereits existierende Datei.

Firmware-VerzeichnisBootdateien kontrollieren:anzeigen:

ls -lh /boot/firmware

Die folgenden DateienKonfiguration prüfen:

cat /boot/firmware/config.txt
cat /boot/firmware/cmdline.txt

config.txt muss den passenden ARM64-Kernel und das passendezugehörige Initramfs laden.

cmdline.txt muss Folgendesdie enthalten:verschlüsselte Root-Partition referenzieren:

root=/dev/mapper/cryptroot

Außerdem muss dieder konfiguriertezuvor Initramfs-IPfestgelegte ip-Parameter vorhanden sein.

Initramfs-Inhalt prüfen:anzeigen:

lsinitramfs "/boot/initrd.img-$KVER" | less

ImWichtige InitramfsBestandteile:

müssen die benötigten Cryptsetup-Komponenten, Dropbear, authorized_keys
  • Cryptsetup und cryptroot-unlock enthalten sein.

    Auch Treiber für Ethernet, USB, Datenträger, Device Mapper

  • Argon2-Unterstützung
  • Dropbear und ext4der müssenSSH-Hostkey
  • authorized_keys
  • cryptroot-unlock
  • USB- enthaltenund sein.Storage-Treiber
  • Ethernet-Treiber
  • Ext4-Unterstützung

WennDie verschlüsselte SSD darf erst eingesetzt werden, wenn die Dateienerforderlichen oderKomponenten Treiberund fehlen,Bootdateien nichtvorhanden mit dem ersten Boot fortfahren.sind.

19. Installation abschließen

chroot verlassen:

exit

Die Variablen für die Partitionen bei Bedarf auf dem Linux-Host erneut festlegen.

UUIDs kontrollieren:

blkid "$BOOT"
cryptsetup luksUUID "$ROOT"

Prüfen, ob die hinterlegten Werte in crypttab und fstab korrekt sind.

MountpointsDateisysteme anzeigen:

findmnt -R /mnt/pi4Temp/1

AnschließendAlle alle eingebundenen Dateisysteme sauberZiel-Mountpoints aushängen:

umount -R /mnt/pi4Temp/1

LUKS-MappingContainer schließen:

cryptsetup close cryptroot

Schreibvorgänge abschließen:

sync

Die SSD kann nunanschließend mit dem Raspberry Pi verbundenverbinden werden.und den Bootvorgang starten.

20. LUKSSSH-Hostkeys überauf SSHdem entsperrenClient hinterlegen

NachAuf dem Einschalten lädt der Raspberry Pi den Kernel und das Initramfs.

Dropbear verwendet die konfigurierte statische Adresse und wartet auf die SSH-Verbindung zur Entsperrung.

Vom Linux-Client verbinden:separate Known-Hosts-Dateien für Dropbear und OpenSSH erstellen.

Dateien vorbereiten:

sshinstall -tm \600 -p 2222 \
-i/dev/null ~/.ssh/id_initramfs_unlock_pi4known_hosts_pi4_unlock
\install root@10.100.0.2-m 600 /dev/null ~/.ssh/known_hosts_pi4_admin

BeimInitramfs-Hostkey ersteneintragen:

Kontakt
nano den~/.ssh/known_hosts_pi4_unlock
Hostkey-Fingerprint mit dem

Den zuvor dokumentierten Wertöffentlichen vergleichen.Dropbear-Hostkey im folgenden Format eintragen:

[10.100.0.2]:2222 ssh-ed25519 HOSTKEY

Nach erfolgreicherRegulären SSH-AuthentifizierungHostkey wird cryptroot-unlock gestartet.hinterlegen:

nano ~/.ssh/known_hosts_pi4_admin

DieFormat:

LUKS-Passphrase
10.100.0.2 eingeben.ssh-ed25519 AnschließendHOSTKEY
wird

HOSTKEY diejeweils Root-Partitiondurch geöffnetdas undkorrekte Debianöffentliche startet.Schlüsselmaterial ersetzen.

21. SSH-Client konfigurieren

SSH-Konfiguration öffnen:

nano ~/.ssh/config

Folgende Hosts ergänzen:

Host pi4-unlock
    HostName 10.100.0.2
    User root
    Port 2222
    IdentityFile ~/.ssh/id_initramfs_unlock_pi4id_pi4_unlock
    IdentitiesOnly yes
    RequestTTY force
    StrictHostKeyChecking yes
    UserKnownHostsFile ~/.ssh/known_hosts_pi4_unlock

Host pi4
    HostName 10.100.0.2
    User root
    Port 22
    IdentityFile ~/.ssh/id_pi4_admin
    IdentitiesOnly yes
    StrictHostKeyChecking yes
    UserKnownHostsFile ~/.ssh/known_hosts_pi4_admin

DieDateirechte beiden SSH-Dienste verwenden unterschiedliche Hostkeys. Deshalb sollten ihre Fingerprints getrennt überprüft werden.setzen:

chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/id_pi4_unlock
chmod 600 ~/.ssh/id_pi4_admin

22. LUKS über SSH entsperren

DieSobald SSH-VerbindungDropbear zurim Initramfs gestartet ist, kann die Entsperrung kann nach der erstmaligen Hostkey-Prüfung folgendermaßen geöffnet werden:erfolgen:

ssh pi4-unlock

NormaleDie AdministrationLUKS-Passphrase nacheingeben.

dem

Nach Boot:erfolgreicher Entsperrung öffnet das Initramfs die Root-Partition und der normale Debian-Bootvorgang wird fortgesetzt.

Debian anschließend administrieren:

ssh pi4

SSH-Verbindungen mit falschem Hostkey dürfen nicht bestätigt oder durch Abschalten der Hostkey-Prüfung erzwungen werden.

22.23. Debian überprüfenprüfen

Nach dem erfolgreichen Entsperren über SSH am Debian-System anmelden.

Root-Dateisystem prüfen:anzeigen:

findmnt /

Verschlüsselung prüfen:überprüfen:

cryptsetup status cryptroot

Netzwerk überprüfen:kontrollieren:

ip -br address
ip route show default

DieKernel reguläre Management-IP sollte auf vmbr0 liegen.

Systempakete aktualisieren:anzeigen:

aptuname update
apt full-upgrade-r

SSH-Konfiguration überprüfen:

sshd -t

Die Root-Partition muss über /dev/mapper/cryptroot eingebunden sein.

Vor derweiteren Proxmox-Installation zunächstPaketinstallationen einen vollständigen Neustart miteinschließlich erneuter LUKS-SSH-Entsperrung durchführen.

23.24. Proxmox-Pakete vorbereiten

FürDie denangepassten Raspberry PiProxmox-Komponenten werden angepassteüber Proxmox-ARM64-Pakete aus demdas Community-Projekt PXVIRT verwendet.bereitgestellt.

Pimox ARM64 RPI Control

PXVIRT

Das vollständige Installationsskript build.sh-Skriptsh wird nicht verwendet, da es Schritte zur automatischen Root-PartitionserweiterungPartitionen und Netzwerkkonfiguration enthält,automatisch dieverändern für dieses LUKS-System ungeeignet sind.kann.

Repository herunterladen:

cd /root
git clone https://github.com/topa-LE/pve-arm64-rpi-control.git
cd pve-arm64-rpi-control

AktuellenVerwendeten Commit anzeigen:dokumentieren:

git rev-parse HEAD

DasInstallationsskripte Skript zur Einrichtung der Paketquelle untersuchen:überprüfen:

less scripts/06_add_proxmox_repo.sh
less scripts/07_install_proxmox_ve.sh

DieBesondere Aufmerksamkeit gilt externen Paketquellen, APT-Signaturschlüsseln, Kernel-Paketen und automatischen Änderungen an der Bootkonfiguration.

Das PXVIRT-Repository ist ein zusätzlicher Vertrauensbereich. Ein gültiger APT-Schlüssel bestätigt nur die Signatur des jeweiligen Herausgebers, nicht die Sicherheit des Codes.

Ohne unabhängige Bestätigung des erwarteten Signaturschlüssel-Fingerprints sollte die Paketquelle benötigtnicht einen externen Signaturschlüssel. Dessen Fingerprint muss vor dem Hinterlegen unabhängig überprüfthinzugefügt werden.

ErstNach nachÜberprüfung entsprechenderdes PrüfungRepositories dieund Paketquelledes einrichten:Installationsskripts:

bash scripts/06_add_proxmox_repo.sh

Verfügbare APT-Pakete prüfen:kontrollieren:

apt update
apt-cache policy proxmox-ve

24.25. Proxmox installieren

Vor der tatsächlichen Installation dieeine geplantenSimulation Paketänderungen simulieren:durchführen:

apt-get -s install proxmox-ve

DabeiFolgende dürfenPakete dermüssen funktionierendeerhalten bleiben:

  • Raspberry-Pi-Kernel,kompatibler Linux-Kernel
  • raspi-firmware, firmware
  • cryptsetup-initramfs
  • dropbear-initramfs
  • initramfs-tools
  • OpenSSH-Server

Die Simulation muss außerdem auf unerwartete Änderungen an Netzwerkpaketen und dropbear-initramfsdem nichtVirtualisierungsstack unkontrolliert entfernt oder ersetztüberprüft werden.

Wenn die PaketauflösungAbhängigkeiten kompatibel ist,sind und die InstallationPaketquelle starten:als vertrauenswürdig bewertet wurde:

apt install proxmox-ve

Proxmox-Installierte Version anzeigen:

pveversion -v

Webdienst kontrollieren:

systemctl status pveproxy --no-pager

Die Community-Pakete können zusätzliche Anpassungen benötigen. Sollte die Installation Abhängigkeiten oder Boot-Komponenten ersetzen wollen, nicht mit erzwungener Paketinstallation fortfahren.

26. Bootkonfiguration nach Updates prüfen

Nach derÄnderungen Installationam Kernel, Cryptsetup oder Dropbear das Initramfs aktualisieren.

update-initramfs -u -k all

Boot-Konfiguration kontrollieren:

cat /boot/firmware/config.txt
cat /boot/firmware/cmdline.txt

Prüfen, ob Kernel, Initramfs, root=/dev/mapper/cryptroot und dieder Firmware-Konfigurationstatische erneutip-Parameter prüfen,weiterhin bevorstimmen.

das

Ein SystemKernel-Update neudarf gestartetnicht wird.ungeprüft auf einen für den Raspberry Pi ungeeigneten Kernel umstellen.

25.27. Proxmox-Weboberfläche

NachDie Weboberfläche kann nach erfolgreicher Installation ist Proxmox über HTTPS erreichbar:geöffnet werden:

https://10.100.0.2:8006

Anmeldedaten:Anmeldung:

  • Benutzer: root
  • Passwort: Debian-Root-Passwort des Debian-Systems
  • Realm: Linux PAM

Das TLS-Zertifikat vor dem ersten Zugriff kontrollieren. Das anfängliche TLS-Zertifikat kann selbstsigniert sein.

Für den dauerhaften Betrieb sollte ein vertrauenswürdiges Zertifikat eingerichtet werden, dessen Hostname zum System passt.

28. Netzwerk absichern

Die Management-Oberfläche sollte ausschließlich aus einem dafür vorgesehenen Verwaltungsnetz erreichbar sein.

Zu schützen sind insbesondere:

  • SSH auf Port 22
  • Dropbear im Initramfs auf Port 2222
  • Proxmox HTTPS auf Port 8006

Den Zugriff nach Möglichkeit bereits am Router beziehungsweise an der Netzwerk-Firewall anhand des Management-Netzes begrenzen.

Für den Initramfs-Zugriff gilt das besonders, da die normale Firewall-Konfiguration von Debian in dieser Bootphase noch nicht läuft.

Bei Verwendung der Proxmox-Firewall deren Regeln so konfigurieren, dass die erlaubten Management-Verbindungen erhalten bleiben.

29. LUKS-Header sichern

Ein beschädigter LUKS-Header kann den Zugriff auf sämtliche verschlüsselte Daten dauerhaft verhindern.

Verschlüsseltes Gerät identifizieren:

lsblk -f

Header auf einem externen Datenträger sichern:

cryptsetup luksHeaderBackup /dev/sda2 \
--header-backup-file /PFAD/ZUM/BACKUP/pi4-luks-header.img

/dev/sda2 und den Sicherungspfad anhand der tatsächlichen Umgebung anpassen.

Der Backup-Datenträger muss geschützt sein. Den FingerprintHeader vor dem ersten Verbindungsaufbau kontrollieren.

26. Sicherheit und Backups

  • SSH-Private-Keysnicht ausschließlich auf demder Clientverschlüsselten speichern.SSD selbst sichern.

    Einen separaten Wiederherstellungsplan mit LUKS-Passphrase, Header-Backup und einem dokumentierten Wiederherstellungsweg aufbewahren.

    30. Sicherheitsregeln

    • Für LUKS, Debian-root und SSH unterschiedliche Zugangsdaten verwenden.
    • LUKS-PassphraseSSH ausschließlich mit Schlüsselauthentifizierung betreiben.
    • Private SSH-Schlüssel niemals inauf Skriptendie hinterlegen.unverschlüsselte Boot-Partition kopieren.
    • Dropbear-PortDropbear 2222ausschließlich nurfür auscryptroot-unlock dem Verwaltungsnetz erreichbar machen.
    • Port 8006 nicht öffentlich ins Internet weiterleiten.freigeben.
    • Den LUKS-HeaderSSH-Hostkey externvor der ersten Verbindung verifizieren.
    • Keine öffentlichen Portweiterleitungen für die Managementdienste verwenden.
    • Debian-Sicherheitsupdates zeitnah installieren.
    • Kernel-, Firmware- und geschütztInitramfs-Änderungen sichern.vor einem unbeaufsichtigten Neustart prüfen.
    • Nur vertrauenswürdige APT-Paketquellen verwenden.
    • Community-Pakete vor größeren Updates von Kernelprüfen und InitramfsBackups erstellen.
    • Keine unverschlüsselten zusätzlichen VM-Datenträger oder Swap-Partitionen verwenden.
    • Den unverschlüsselten Bootbereich vor Manipulationen schützen.
    • Für VM- und Container-Backups ebenfalls Verschlüsselung einsetzen.
    • Die LUKS-Entsperrung nach Änderungen durch einen vollständigen Neustart überprüfen.
    • Alle VM- und Containerdatenträger innerhalb des verschlüsselten Speichers ablegen.
    • Keine unverschlüsselte Swap-Partition außerhalb von LUKS erstellen.
    • Boot-Partition gegen unbefugte Manipulation schützen.testen.

    27.31. Weiterführende Dokumentation

    Stand: Oktober 2026. Installationskonzept für Debian 13 ARM64, LUKS2, Dropbear und Community-Proxmox. Der vollständige InstallationsablaufAblauf wurde nicht auf dereinem ZielhardwareRaspberry Pi 4 mit dieser konkreten Datenträgerkonfiguration validiert.