FlorianHE Posted December 17, 2023 Share Posted December 17, 2023 Hallo. Ich habe die Tage ein wenig mit dem LXC Plugin herumprobiert und bin auf ein Problem gestoßen wo ich nicht weiter komme. Mein Plan ist später mal meine Hausautomation komplett in einen LXC Container umzulagern. Um aber erstmal zu wissen wie so ein LXC Container Funktioniert wollte ich meinen Repetier Server aus der VM in so einen Container umlagern. Dazu habe ich einen Debian Container erstellt und den Repetier Server installiert. Das hat soweit wunderbar geklappt. Jetzt müssen nurnoch meine Drucker im Container ankommen. Und da komme ich gerade nicht weiter. Meine 3 Drucker hängen in meinem Büro an einem RaspberryPi der als USBIP Host dient und ich reiche die Drucker dann mithilfe des USB Manager Plugins an meine VM weiter. Und das wollte ich jetzt mit dem Container genau so machen. Eigentlich ist das ja ganz einfach: meine 3 Drucker sind unter: /dev/bus/usb/005/006 /dev/bus/usb/005/007 und /dev/bus/usb/005/008 verfügbar. Und auch als ttyUSB1 ttyUSB2 und ttyUSB3 der Befahl "ls -l /dev/bus/usb/005" sagt mit das ich die gerätekennung "189" erlauben muss. lxc.cgroup.devices.allow = c 189:* rwm und dann muss ich ja nurnoch die 3 Geräte durchreichen lxc.mount.entry = /dev/bus/usb/005/006 dev/bus/usb/005/006 none bind,optional,create=file lxc.mount.entry = /dev/bus/usb/005/007 dev/bus/usb/005/007 none bind,optional,create=file lxc.mount.entry = /dev/bus/usb/005/008 dev/bus/usb/005/008 none bind,optional,create=file aber leider werden die Drucker nicht erkannt. Ich habe auch mal testweise mal noch ttyUSB 1-3 durchgereicht. Das hat leider auch nix gebracht. lxc.cgroup.devices.allow = c 188:* rwm lxc.mount.entry = /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file lxc.mount.entry = /dev/ttyUSB2 dev/ttyUSB2 none bind,optional,create=file lxc.mount.entry = /dev/ttyUSB3 dev/ttyUSB3 none bind,optional,create=file Dann dachte ich doch das es eventuell an den rechten liegt. Deswegen habe ich noch mit dem Befehl "chmod o+rw /dev/ttyUSB1" die Rechte geändert. aber auch das brachte keinen erfolg. Da ich in meiner Repetier Server VM Die Drucker per "dev/serial/by-path/" anspreche habe ich auch das mal probiert. Aber auch das hat nicht Funktioniert. lxc.cgroup.devices.allow = c 188:* rwm lxc.mount.entry = /dev/serial/by-path/platform-vhci_hcd.0-usb-0:1:1.0-port0 dev/serial/by-path/pci-0000:00:07.1-usb-0:1:1.0-port0 none bind,optional,create=file lxc.mount.entry = /dev/serial/by-path/platform-vhci_hcd.0-usb-0:2:1.0-port0 dev/serial/by-path/pci-0000:00:07.1-usb-0:2:1.0-port0 none bind,optional,create=file lxc.mount.entry = /dev/serial/by-path/platform-vhci_hcd.0-usb-0:3:1.0-port0 dev/serial/by-path/pci-0000:00:07.1-usb-0:3:1.0-port0 none bind,optional,create=file Ich habe diese 3 Anleitungen gefunden die ich probiert habe. Aber alle 3 brachten keinen Erfolg. https://forums.unraid.net/topic/123935-plugin-lxc-plugin/ https://homematic-forum.de/forum/viewtopic.php?t=48361 https://coldcorner.de/2018/07/12/proxmox-usb-passthrough-fuer-lxc-container-z-wave-uzb1/ Kann das eventuell sein das man USBIP geräte nicht an einen LXC Container durchreichen kann ? config tvserver-v2-diagnostics-20231217-2102.zip Quote Link to comment
Solution ich777 Posted December 17, 2023 Solution Share Posted December 17, 2023 15 minutes ago, FlorianHE said: lxc.cgroup.devices.allow = c 189:* rwm Unraid nutzt cgroup v2 nicht cgroup v1 also müsste es heißen (im support Thread ist das jetzt mittlerweile veraltet da früher cgroupv1 verwendet wurde und mit der umstellung auf 6.11.0 dann cgroupv2 als Standard gesetzt wurde) : lxc.cgroup2.devices.allow = ... Hab die posts im support thread mal angepasst. Bei deinen Beispielen musst du sicherstellen wenn ud den container normal startest das auch der Pfad vorhanden ist wo deine mounts hinzeigen weil nur die Datei selbst erstellt wird. Du kannst deinen container auch im "Vordergrund" von einem Unraid Terminal aus starten und dann siehst was nicht passt bzw. bekommst du eine Fehlermeldung warum er nicht startet: lxc-start -F <CONTAINERNAME> Beim mir hier läuft zB Homeassistant komplett im LXC und bin wesentlich zufriedener als mit den Docker container die verfügbar sind, der Zigbee Stick bei mir hängt an einem RockPi E auf dem Zigbee2MQTT läuft und das wird wiederum in Homeassistant eingebunden. Quote Link to comment
FlorianHE Posted December 18, 2023 Author Share Posted December 18, 2023 4 hours ago, ich777 said: lxc.cgroup2.devices.allow = ... Vielen Dank. Das war das Problem. komischerweise hat das durchreichen des pfades "/dev/bus/usb/005........" nicht funtioniert. Dafür habe 2 Wege gefunden wie ich meine Drucker zum laufen bekommen habe. Ich poste gleich mal die Vorgehensweise. Bevor ichs wieder vergesse VARIANTE 1: Schritt 1: USB Gerät herausfinden: - Das geht am einfachsten über den USB Manager: klickt man auf das Blattsymbol vom USB Gerät öffnet sich eine Ausgabe in der man das USB Gerät ablesen kann Schritt 2: USB-Gerät rechte ändern: chmod o+rw /dev/ttyUSB1 Schritt 3: ID herausfinden: z.b. für ttyUSB1: ls -l /dev/ttyUSB1 in meinem Fall ist das dann die "188" Schritt 4: Config vom LXC Container anpassen: #USB configuration lxc.cgroup2.devices.allow = c 188:* rwm lxc.mount.entry = /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file VARIANTE 2: - Da immerwieder die zuordnung der Drucker anders ist (Drucker 1 ist mal ttyUSB1 und dann mal ttyUSB2) habe ich einen 2. Weg versucht der die Drucker Eindeutig zuordnet indem eigene Devices erzeugt werden über eine udev Regel Schritt 1: USB Gerät herausfinden: Genau so wie bei Variante 1 Schritt 2: Filter heraussuchen: - für die Regel müssen Filter definiert werden dazu muss in der Konsole des hosts folgender Befehl eingegeben werden: udevadm info --name=/dev/ttyUSB1 --attribute-walk in der Ausgabe müssen jetzt Filter gesucht werden die die Geräte eindeutig idendifizieren. z.b. diese: ATTRS{idVendor}=="1b1f" ATTRS{idProduct}=="c020" ATTRS{serial}=="3014***************" bei mir war das aber leider so das 2 Drucker genau die gleiche "idProduct" und "serial" hatte und somit auch nicht eindeutig idendifiziert werden konnte. Deswegen musste ich anstatt "idProduct" "devpath" verwenden. Da ich die Drucker an meinem Raspi USBIP Host nie umstecke hoffe ich mal das das immer gleich bleibt. Schritt 3: udev Regel erstellen : -dazu muss auf dem Host unter /etc/udev/rules.d/ die Regeldatei angelegt werden. z.b. so: nano /etc/udev/rules.d/99-usb-serial.rules jetzt müssen in der Datei die Regeln eingetragen werden: #USB1 SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{devpath}=="1", ATTRS{serial}=="0001", SYMLINK+="print-usb1" #USB2 SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{devpath}=="2", ATTRS{serial}=="5282b3e8f3b6e7119058b350d4b43ea0", SYMLINK+="print-usb2" #USB3 SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{devpath}=="3", ATTRS{serial}=="0001", SYMLINK+="print-usb3" Schritt 4: Regeln Aktivieren: mit diesem Befehl werden die neuen Regeln angewendet. udevadm trigger jetzt sollten die neuen USB Geräte auftauchen. Das Anpassen der Rechte ist nicht erforderlich Schritt 5: ID herausfinden: hier muss die gleiche ID herausgefunden werden wie bei Variante 1 z.b. für ttyUSB1: ls -l /dev/ttyUSB1 Schritt 6: Config vom LXC Container anpassen: #USB configuration lxc.cgroup2.devices.allow = c 188:* rwm lxc.mount.entry = /dev/print-usb1 dev/ttyUSB1 none bind,optional,create=file Variante 2 hat mir geholfen die 3 Drucker immer gleich zu zuordnen auch wenn sie in unterschiedlicher Reihenfolge per USBIP eingebunden werden. Was ich noch nicht genau weis ob die Regel Datei vorhanden bleibt wenn der Unraid Server neu gestartet wurde. Kleiner Hinweis: Änderungen in der config werden nur wirksam wenn der Container gestoppt wird und dann wieder gestartet. Ein reiner neustart reicht nicht aus. Quote Link to comment
ich777 Posted December 18, 2023 Share Posted December 18, 2023 5 hours ago, FlorianHE said: Variante 2 hat mir geholfen die 3 Drucker immer gleich zu zuordnen auch wenn sie in unterschiedlicher Reihenfolge per USBIP eingebunden werden. Was ich noch nicht genau weis ob die Regel Datei vorhanden bleibt wenn der Unraid Server neu gestartet wurde. Sorry aber ist das nicht over engineered? Warum installierst du dir nicht im LXC einfach USBIP und bindest dann dort die Geräte ein, das wäre doch viel, viel, viel einfacher... 5 hours ago, FlorianHE said: Kleiner Hinweis: Änderungen in der config werden nur wirksam wenn der Container gestoppt wird und dann wieder gestartet. Ein reiner neustart reicht nicht aus. Du meinst über die WebGUI? Eigentlich sollte das keinen Unterschied machen weil die WebGUI macht einfach ein lxc-stop und dann ein lxc-start, hab ich aber ehrlich gesagt noch nie probiert. Quote Link to comment
FlorianHE Posted December 18, 2023 Author Share Posted December 18, 2023 1 hour ago, ich777 said: Warum installierst du dir nicht im LXC einfach USBIP und bindest dann dort die Geräte ein, das wäre doch viel, viel, viel einfacher... Das hatte ich auch versucht bevor ich diesen request gestartet habe. Leider hat das nicht funktioniert. Wenn man das Kernel Modul laden möchte mit modprobe vhci-hcd modprobe vhci-hcd kommt der Fehler das modprobe nicht gefunden wird. Das abfragen hat zwar funktioiert: usbip list -r mein-rechner aber wenn ich dann mit: usbip attach -r mein-rechner -b 1-1 ein USB Gerät einbinden möchte kommt ein Fehler. Ich vermute mal weil das Kernel Modul nicht geladen ist. Ich erkläre mir das so das ja der LXC Container direkt auf den Kernel vom Unraid zugreift und deswegen ja kein Kernel modul im LXC Container geladen werden kann. Quote Link to comment
ich777 Posted December 18, 2023 Share Posted December 18, 2023 1 minute ago, FlorianHE said: modprobe vhci-hcd Weil es am Host geladen werden muss und geladen sein muss. 1 minute ago, FlorianHE said: ein USB Gerät einbinden möchte kommt ein Fehler. Welcher? Ich habe mich mit USBIP in LXC noch nicht beschäftigt und mir fehlt momentan auch die Zeit dazu muss ich zugeben. Quote Link to comment
FlorianHE Posted December 18, 2023 Author Share Posted December 18, 2023 Da ich meine Drucker und das Raspberry gerade aus geschaltet habe musste ich improvisieren und hab von meinem 2. unriad server mal das Bluetooth interface geteilt. Unter Unraid konnte ich das gerät einbinden. aber im LXC Container nicht. Wie auf dem Bild zu erkennen ist habe ich das vhci-hcd modul im Host aktiviert. Quote Link to comment
FlorianHE Posted December 18, 2023 Author Share Posted December 18, 2023 Ich habe mal noch eine andere Frage. Kann man eigentlich irgendwie auch die Icons der Container ändern. Oder gibt es irgend eine hilfreiche seite wo man lesen kann was man mit der config alles so anstellen kann ? Quote Link to comment
hawihoney Posted December 18, 2023 Share Posted December 18, 2023 42 minutes ago, FlorianHE said: Kann man eigentlich irgendwie auch die Icons der Container ändern. Du meinst dieses Icon URL Feld sichbar im Advanced View: Quote Link to comment
FlorianHE Posted December 19, 2023 Author Share Posted December 19, 2023 (edited) 17 hours ago, hawihoney said: Du meinst dieses Icon URL Feld sichbar im Advanced View: Das geht ja bei Docker so . In diesem Post hab ich die Lösung gefunden. Edited December 19, 2023 by FlorianHE 1 Quote Link to comment
ich777 Posted December 19, 2023 Share Posted December 19, 2023 18 hours ago, FlorianHE said: Ich habe mal noch eine andere Frage. Du müsstest mich bitte immer quoten, ich sehe nicht immer überall rein und folge allen Threads sonst würde ich kein Leben mehr haben. Bin aber froh das du es gefunden hast... Quote Link to comment
hawihoney Posted December 19, 2023 Share Posted December 19, 2023 (edited) 2 hours ago, FlorianHE said: Das geht ja bei Docker so . In diesem Post hab ich die Lösung gefunden. Es ging doch um Docker Container, oder? Edited December 19, 2023 by hawihoney Quote Link to comment
ich777 Posted December 20, 2023 Share Posted December 20, 2023 18 hours ago, hawihoney said: Es ging doch um Docker Container, oder? Nein ich glaube um LXC und dort ist es auch möglich. Quote Link to comment
FlorianHE Posted December 26, 2023 Author Share Posted December 26, 2023 Ja es ging um Lxc Quote Link to comment
FlorianHE Posted December 28, 2023 Author Share Posted December 28, 2023 (edited) On 12/19/2023 at 10:01 AM, ich777 said: Du müsstest mich bitte immer quoten, ich sehe nicht immer überall rein und folge allen Threads sonst würde ich kein Leben mehr haben. Bin aber froh das du es gefunden hast... Ich habe mal noch eine Frage. Ich hatte eigentlich vor den Backup Ordner der LXC Container mit Syncthing zwischen 2 Unraid Servern Snchron zu halten. So dass meine Hausautomations Backups zur not automatisch gleich auf dem 2. Server verfügbar sind, Jetzt ist mir aber aufgefallen das die backups auf dem 2. Server zwar angelegt werden aber in der UI im backup reiter nicht auftauchen. Das gleiche auch umgekehrt. Das gleiche passiert auch wenn ich den einen angelgten Container lösche und die liste leer ist. Dann verschwindet der Backup tab. Ein Restore ist dann nicht möglich. Wie bekomme ich den restore jetzt wieder hin? Edited December 28, 2023 by FlorianHE Quote Link to comment
ich777 Posted December 29, 2023 Share Posted December 29, 2023 6 hours ago, FlorianHE said: Jetzt ist mir aber aufgefallen das die backups auf dem 2. Server zwar angelegt werden aber in der UI im backup reiter nicht auftauchen. Hast du denn einen gleichnamigen Container auf dem Backup system? Wenn ja, sind die Pfade auch richtig zu den Backups angegeben wo du hinsynchronisierst? 6 hours ago, FlorianHE said: Das gleiche passiert auch wenn ich den einen angelgten Container lösche und die liste leer ist. Dann verschwindet der Backup tab. Das ist auch so gewollt, ein Backup ist ein Backup vom Container und kein Snapshot. 6 hours ago, FlorianHE said: Ein Restore ist dann nicht möglich. Das stimmt so nicht, mach ein Unraid Terminal auf und dann gib mal: lxc-autobackup ein, das ist eine Funktion die ich geschrieben habe und nur auf Unraid verfügbar ist. Diese Funktion ermöglicht es dir automatisch Backups zu erstellen und auch wiederherzustellen. Die Anzeige in der GUI ist nur bereits für bestehende Container gedacht von denen du Backups erstellst, selbst wenn du einen Container löschen solltest, das Backup bleibt bestehen und wird nicht gelöscht (weil es eben ein Backup ist) das du dann vom Terminal wiederherstellen kannst. Wenn du die Anzeige im GUI willst legst dir einfach einen leeren, gleichnamigen Container auf dem Backup system an und syncst dann dort in das Verzeichnis das du dort angegeben hast. (bitte beachte hier die Usage und ob du die global config verwendest oder nicht) Quote Link to comment
FlorianHE Posted December 29, 2023 Author Share Posted December 29, 2023 3 hours ago, ich777 said: lxc-autobackup Okay. Das hat Funktioniert. Konnte meine gesyncten Backups auf dem Zweitsystem wiederherstellen. Ich hab mir schon fast gedacht das man irgendwie über die Konsole den Restore starten kann. Man muss halt nur wissen was man eingeben muss Ich hatte auch von dem autobackup script im Forum gelesen. Bin aber davon ausgegangen das das veraltet ist bzw durch die Backup Funktion der GUI abgelöst wurde. Vielen Dank. Quote Link to comment
ich777 Posted December 29, 2023 Share Posted December 29, 2023 1 hour ago, FlorianHE said: Bin aber davon ausgegangen das das veraltet ist bzw durch die Backup Funktion der GUI abgelöst wurde. Nein, die GUI nutzt sogar diese Funktion im Hintergrund. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.