DietPi ist eine optimierte und minimale Debian basierte Linux Distribution.
Überwiegend für den Einsatz auf Einzelplatinencomputern (SBC) gedacht, kann aber auch auf einem normalen Computer und in virtuellen Maschinen genutzt werden.
17.05.2024 - Anleitung aktualisiert 01.05.2023 - Proxmox 7.4, DietPi 8.16.2 (Debian 11)
mein Setup:
- Proxmox 8.2
- DietPi 9.4.2 (Debian 12)
VM erstellen
Neue VM ohne Festplatte erstellen. Die VM wird später in einen Container konvertiert und kann dann auch wieder gelöscht werden.
Hier mal alles auf der Konsole. (404 ist meine VM ID – ! bitte entsprechend abändern !)
# neue vm erstellen qm create 404 --name DietPi --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --ostype l26 --memory 2048 --sockets 1 --cores 2 # DietPi image herunterladen und entpacken apt install xz-utils wget https://dietpi.com/downloads/images/DietPi_Proxmox-x86_64-Bookworm.qcow2.xz xz -dv DietPi_Proxmox-x86_64-Bookworm.qcow2.xz # disk importieren und einbinden qm importdisk 404 DietPi_Proxmox-x86_64-Bookworm.qcow2 local-lvm qm set 404 --scsi0 local-lvm:vm-404-disk-0 # disk als boot device setzen qm set 404 --boot order=scsi0 # vm starten qm start 404 # das entpackte image löschen rm DietPi_Proxmox-x86_64-Bookworm.qcow2
Anmelden und das Setup durchlaufen. (login: root / password: dietpi)
Die VM nochmal rebooten nach updates suchen und aufräumen.
dietpi-update apt autoremove -y
Damit DietPi weis, dass es sich später um einen Container und keine VM mehr handelt, in der /etc/.dietpi_hw_model_identifier den Wert von 20 auf 75 ändern.
echo 75 >/etc/.dietpi_hw_model_identifier
VM in einen Container konvertieren
Dazu nutze ich das unveränderte script von: https://github.com/my5t3ry/machine-to-proxmox-lxc-ct-converter
Die zu konvertierende VM muss eingeschaltet bleiben.
In der Shell auf dem Proxmox Host wird jetzt das script heruntergeladen und ausgeführt.
git clone https://github.com/mathewalves/machine-to-proxmox-lxc-ct-converter.git cd machine-to-proxmox-lxc-ct-converter chmod +x convert.sh bashconvert
Das bashconvert script setzt die Anzahl der CPU Cores auf unlimited, sollte man später noch auf 1 oder 2 ändern.
Erklärung der Parameter:
-n neuer container name -t ip adresse der zu konvertierenden vm -P ssh port der zu konvertierenden vm -i neuer container id -s neuer container rootfs in gb -a neuer container ip adresse -b neuer container bridge interface -g neuer container gateway ip -m neuer container memory in mb -d neuer container storage pool -p neuer container passwort
Die VM konvertieren.
./bashconvert -n dietpi -t 192.168.50.198 -P 22 -i 120 -s 8 -a 192.168.50.53 -b vmbr0 -g 192.168.50.1 -m 2048 -d local-lvm -p changeme
Container anpassen
Den konvertierten Container starten, anmelden und auch wieder das Setup durchlaufen.
Im Container benötigt man keinen bootloader, initramfs und kernel. Kann alles gelöscht werden.
apt autopurge grub-pc tiny-initramfs linux-image-amd64
Diese Services können auch deaktiviert werden.
systemctl disable --now dietpi-cloudshell systemd-networkd systemd-resolved
Nochmal rebooten und fertig. DietPi im LXC Container.
Update
DietPi von der 8.16.2 auf die aktuelle 8.19.1 Version updaten.
Im Terminal:
root@dietpi:~# dietpi-update
Update GUI
HI,
Natürlich hat man so einen leichtgewichtigen Container?
Hast du einen speziellen Anwendungszweck?
PS: Toller blog!
Nein, wollte das einfach nur mal ausprobieren.
Danke, klappt!
Für Proxmox-Newbies wäre vielleicht noch die zusätzliche Info hilfreich, dass man vor dem Schritt “VM in einen Container konvertieren” die “Übergangs-VM” nicht herunterfährt, sondern laufen lässt und parallel in die Shell des Proxmoxs-Knotens (also des eigenen Servers) wechselt, um dort das convert-Skript herunterzuladen und auszuführen.
Eine Anregung wäre noch, vielleicht die Wahl zwischen einem privilegierten und unprivilegierten Container anzubieten. Die Anleitung erzeugt einen unprivilegierten. Die Frage ist ob man mit dem unprivilegierten Dietpi-LXC-Container alles machen kann, was man will. Wenn man z.B. Nextcloud im Container laufen lassen will, verwenden Anleitungen wie die von ApfelCast z.B. einen privilegierten Container.
Danke für die Infos. Hab die Anleitung aktualisiert.
Proxmox erstellt per default einen neuen Container immer unprivilegiert mit aktiviertem nesting.
Sollte damit nicht alles laufen, kann der Container später in einen priviligierten geändert werden.
Für die Wahl zwischen einem privilegierten oder unprivilegierten Container müsste man das script anpassen.
Danke für das Update in der Anleitung.
Ergebnis meiner Recherche: Später von “unprivilegiert” auf “privilegiert” zu ändern scheint nur über ein Backup und angepasstes Restore zu funktionieren. Wenn man von vornherein einen privilegierten Container haben will, braucht es nur eine weitere Zeile im convert.sh-Skript, nämlich beim “pct create”-Befehl:
pct create "$id" "/tmp/$name.tar.gz" \
-description LXC \
-hostname "$name" \
--features nesting=1 \
-memory "$memory" -nameserver 8.8.8.8 \
-net0 name=eth0,ip="$ip"/24,gw="$gateway",bridge="$bridge" \
--rootfs "$rootsize" -storage "$storage" -password "$password" \
--unprivileged 1
Das funktioniert bei mir anstandslos.
Wenn alles super funktioniert, ist dringend eine Neuerung nötig, nerv…
s. https://github.com/my5t3ry/machine-to-proxmox-lxc-ct-converter
git clone https://github.com/mathewalves/machine-to-proxmox-lxc-ct-converter.git
cd machine-to-proxmox-lxc-ct-converter
chmod +x convert.sh bashconvert
./bashconvert -n dietpi -t 192.168.50.198 -P 22 -i 120 -s 8 -a 192.168.50.53 -b vmbr0 -g 192.168.50.1 -m 2048 -d local-lvm -p changeme
Ansonsten Gratulation für die vielen Tipps zu Proxmox, ARM, etc…
Danke, Anleitung wurde aktualisiert!
Super Blog!
Nutze selbst schon seit längerem DietPi LXC Container. Die Einrichtungsassistenten von DietPi z.B. dietpi-config erleichtern einem das Leben.
Anstelle wie in diesem Beitrag beschrieben, kreiere ich in der Regel erst mal ein Debian LXC Container (kann gerne unpriviledged sein) und folge dieser Anleitung
https://dietpi.com/docs/hardware/#make-your-own-distribution
um DietPi darüber zu installieren. Die Befehle sind natürlich im LXC Container auszuführen. An der Stelle, wo eine Geräteauswahl mit Raspberry Pis etc. präsentiert, wählt man einfach Container aus.
Ich erspare mir damit das Konvertieren in ein LXC Container, was in meiner Erfahrung oft ein wenig eine Frickelei ist. Hoffe das hilf dem einen oder anderen.
Danke für die Info, werde ich mal ausprobieren.