-
-
Notifications
You must be signed in to change notification settings - Fork 196
Installation LXC
Möchte man als Virtualisierungslösung auf Linux Containers (LXC) um darüber auf einem bereits bestehenden Debian-basierten Linux System (Debian, Ubuntu, RaspberryPiOS, Armbian, etc.) RaspberryMatic als nativen leichtgewichtigen Linux Container zu betreiben, kann man mit dem folgenden Schritten eine Installation eines solchen LXC-basierten RaspberryMatic Systems vornehmen. Hierbei kann im Folgenden dann eine teilautomatische Installation vorgenommen werden.
Important
Bei der Nutzung von LXC im Kontext einer RaspberryMatic/CCU gilt zu beachten, dass im Gegensatz zu einer virtuellen Maschine z.B. unter Proxmox VE oder mittels QEmu/KVM auf dem jeweiligen Host-System (d.h. auf dem System auf dem man LXC betreibt) für den Betrieb eines solchen RaspberryMatic LXC gewisse Zusatzpakete und Modifikationen vorgenommen werden müssen um auf die notwendige Homematic Funkmodulhardware (z.B. RPI-RF-MOD
, HmIP-RFUSB
, etc.) zugreifen zu können. Zwar können diese Zusatzpakete/Modifikationen später wieder komplett zurückgenommen werden. Auf Grund dieser Abhängigkeiten zu notwendigen Paketen des Host-Systems können im späteren Verlauf (ggf. bei OS-Updates des Host-Systems) es zu Problemen kommen. Solche Host-Updates sollten also immer mit dem Wissen durchgeführt werden, dass diese ggf. Auswirkungen auf die Funktion des RaspberryMatic LXC Container haben kann.
Note
Hat man unter seinem Host-System bereits LXC installiert und auch eine Netzwerk-Bridge (br0
) als Hauptinterface eingerichtet kann man direkt mit Installation Container fortfahren.
Um ein RaspberryMatic LXC Container auf seinem bereits bestehenden Linux System betreiben zu können, müssen auf diesem (dem sogenannten "Host") vor der eigentlichen Installation gewisse Voraussetzungen erfüllt sein bzw. gewisse Vorkehrungen getroffen sein damit der in Betrieb zu nehmende RaspberryMatic LXC dann auch korrekt funktioniert. Dies betrifft vor allem die Netzwerkkonfiguration des Hostsystems. Damit dort der RaspberryMatic Container korrekt funktionieren muss darauf ein sogenanntes "Bridge" Interface (br0
) mit statischer IP-Adresse eingerichtet werden worüber dann dann Host system mit dem LAN Interface verbunden wird. Je nach eingesetztem Betriebssystem und Netzwerkframework muss dies ggf. jeweils etwas anders umgesetzt werden.
In den kommenden Abschnitten werden hierbei in <
und >
eingeschlossene Platzhalter verwendet um die Netzwerkkonfiguration entsprechend umzusetzen. Die verwendeten Platzhalter sind hierbei wie folgt definiert:
-
<device>
: der Name des Hauptinterfaces (z.B.eth0
) unter dem das Host-System aktuell erreichbar ist. -
<address>/<prefix>
: die statische IPv4 Adresse samt Netzwerkprefix die man in Zukunft für das Host-System nutzen möchte (z.B.192.168.178.10/24
). -
<gateway>
: die IPv4 Adresse des "default gatway" bzw. Routers (z.B.192.168.178.1
). -
<dns1>,<dns2>
: die IPv4 Adressen (oder nur eine ohne komma) des DNS-Servers bzw. Routers (z.B.192.168.178.1
).
Setzt man als Host-OS ein Linux ein das auf NetworkManager als Netzwerkmanagement Tool setzt (z.B. Armbian, RaspberryPiOS), so kann man mit den folgenden Schritten dafür sorgen das solch ein "Bridge Interface" entsprechend angelegt und nutzbar wird:
-
Aktuellen Interfacenamen identifizieren: Mit dem folgenden Befehl sollte man an erstes sich alle aktuellen "Interfaces" ausgeben lassen:
sudo nmcli connection show --active
Aus der Ausgabe dieses Befehles sollte man sich dann den Namen des Hauptinterfaces (z.B.
eth0
) notieren da man diesen dann später wieder benötigt. Zusätzlich dazu sollte man sich noch die aktuelle IP-Adresse bzw. eine IP-Adresse die man später statisch vergeben will samt Netmaske notieren (z.B.192.168.178.10/24
). -
bridge-utils
installieren: Damit man eine "Netzwerk-Bridge" einrichten kann muss mit folgendem Befehl sichergestellt werden das die passendenbridge-utils
installiert sind:sudo apt install bridge-utils
-
Netzwerk-Bridge einrichten: Nun sollte man mit den folgenden Befehlen
sudo nmcli connection add ifname br0 type bridge con-name br0 sudo nmcli connection add type bridge-slave ifname <device> master br0 sudo nmcli connection modify br0 ipv4.addresses "<address>/<prefix>" ipv4.gateway "<gateway>" ipv4.dns "<dns1>,<dns2>" ipv4.method "manual"
Anstelle der hier mit
<
und>
eingeschlosenen Beispielwerten muss man stattdessen die oben genannten Platzhalter verwenden.⚠️ Achtung: Bitte beachten, das sobald diese Befehle eingegeben werden das Host-System ggf. kurzzeitig seine aktuelle Netzwerkverbindung verliert und damit nicht erreichbar ist. Ggf. muss hier auch via direktem Tastatur/Monitorzugriff eingegriffen werden falls falsche Angaben bei diesen Befehlen vorgenommen werden. -
Neustart durchführen: Hat man die notwendige Netzwerkbridge (
br0
) eingerichtet sollte diese viaip a
Befehl bzw.nmcli
auf der Kommandozeile sichtbar werden. Trotzdem wäre nun angeraten vor der weiteren Einrichtung des LXC Containers erst ein Neustart des Hostsystems durchzuführen um sicherzustellen das dieses auch nach einem Neustart wieder korrekt hochfährt:sudo reboot
Setzt man als Host-OS ein Linux ein das auf ifupdown
als Netzwerkmanagement Tool setzt (z.B. Debian Linux), so kann man mit den folgenden Schritten dafür sorgen das solch ein "Bridge Interface" entsprechend angelegt und nutzbar wird:
-
bridge-utils
installieren: Damit man eine "Netzwerk-Bridge" einrichten kann muss mit folgendem Befehl sichergestellt werden das die passendenbridge-utils
installiert sind:sudo apt install bridge-utils
-
/etc/network/interfaces
anpassen: Um die statischen IP-Adressdaten muss man in der/etc/network/interfaces
Datei sicherstellen das folgende Einträge existieren:Anstelle der hier mitauto lo iface lo inet loopback iface <device> inet manual auto br0 iface br0 inet static bridge_ports <device> address <address>/<prefix> gateway <gateway> dns-nameservers <dns1>,<dns2>
<
und>
eingeschlosenen Beispielwerten muss man stattdessen die oben genannten Platzhalter verwenden. -
Neustart durchführen: Um die vorgenommene Konfigurationsänderung aktiv werden zu lassen, muss man nun via folgendem Befehl das Host-System einmal neustarten lassen um so auch zu kontrollieren das es wieder korrekt hochfährt und unter der gewählten IP-Adresse erreichbar ist:
sudo reboot
Setzt man als Host-OS ein Linux ein das auf netplan
als Netzwerkmanagement Tool setzt (z.B. Ubuntu Linux), so kann man mit den folgenden Schritten dafür sorgen das solch ein "Bridge Interface" entsprechend angelegt und nutzbar wird:
-
/etc/netplan/<file>.yaml
anpassen: Um die statischen IP-Adressdaten sowie die Netzwerk-Bridge auf einem Netplan verwalteten System umzusetzen sollte man die unter dem/etc/netplan/
verzeichnis liegendeyaml
Datei wie folgt anpassen:Anstelle der hier mitnetwork: version: 2 renderer: networkd ethernets: <device>: dhcp4: false dhcp6: false bridges: br0: interfaces: [<device>] addresses: [<address>/<prefix>] routes: - to: default via: <gateway> metric: 100 on-link: true mtu: 1500 nameservers: addresses: [<dns1>] parameters: stp: true forward-delay: 4 dhcp4: no dhcp6: no
<
und>
eingeschlosenen Beispielwerten muss man stattdessen die oben genannten Platzhalter verwenden. -
Änderungen anwenden: Mittels der folgenden Befehle kann man die unter netplan vorgenommenen Änderungen direkt anwenden lassen:
sudo netplan generate sudo netplan --debug apply
⚠️ Achtung: Bitte beachten, das sobald diese Befehle eingegeben werden das Host-System ggf. kurzzeitig seine aktuelle Netzwerkverbindung verliert und damit nicht erreichbar ist. Ggf. muss hier auch via direktem Tastatur/Monitorzugriff eingegriffen werden falls falsche Angaben bei diesen Befehlen vorgenommen werden. -
Neustart durchführen: Hat man die notwendige Netzwerkbridge (
br0
) eingerichtet sollte diese viaip a
Befehl bzw.nmcli
auf der Kommandozeile sichtbar werden. Trotzdem wäre nun angeraten vor der weiteren Einrichtung des LXC Containers erst ein Neustart des Hostsystems durchzuführen um sicherzustellen das dieses auch nach einem Neustart wieder korrekt hochfährt:sudo reboot
Sind die unter Voraussetzungen genannte Dinge erfüllt und arbeitet das Host-System mit einer Netzwerkbridge (br0
) auf, kann mittels den folgenden Schritten die Installation eines RaspberryMatic LXC Containers durchgeführt werden:
-
Installationsskript starten: Um die Installation zu starten muss man in einer Konsole (z.b. in dem man sich via SSH mit dem Hostsystem verunden hat) folgenden Befehl zum automatischen Runterladen und Starten des
install-lxc.sh
Installationsskriptes durchführen:sudo sh -c "wget -qO - https://raspberrymatic.de/install-lxc.sh | bash -"
-
Dependency Check bestätigen: In einem ersten Schritt wird der Installationsskript noch einmal überprüfen ob alle notwendigen Voraussetzungen und Zusatzpakete bereits auf dem jeweiligen Host-System installiert sind die für den RaspberryMatic LXC Betrieb notwendig. Hierzu wird der folgende Hinweis angezeigt den man dann im folgenden via
Yes
bestätigen kann um die Prüfungen durchführen zu lassen:
Table of Contents RaspberryMatic Documentation © 2015-2024 Jens Maus and RaspberryMatic Contributors, licensed under CC BY-SA License 4.0