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.
mein Setup:
- Proxmox 7.4
- DietPi 8.16.2 (Debian 11)
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 p7zip curl -O https://dietpi.com/downloads/images/DietPi_Proxmox-x86_64-Bullseye.7z 7zr x DietPi_Proxmox-x86_64-Bullseye.7z # disk importieren und einbinden qm importdisk 404 DietPi_Proxmox-x86_64-Bullseye.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
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.
wget https://raw.githubusercontent.com/my5t3ry/machine-to-proxmox-lxc-ct-converter/master/convert.sh chmod +x convert.sh
Das convert.sh 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.
./convert.sh -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.