Autor Thema: SkyTv Ultimate Dual + LXC unpriviliged  (Gelesen 3262 mal)

Simon78

  • Newbie
  • *
  • Beiträge: 34
    • Profil anzeigen
Re: SkyTv Ultimate Dual + LXC unpriviliged
« Antwort #30 am: März 24, 2023, 02:31:38 Nachmittag »
Also hier mein Setup was funktioniert (und deutlich anders ist als die Anleitung).

1. unpriviligierten LXC container mit debian bullseye anlegen
2. Auf dem Host die /dev/dvb /dev/sundtek einträge anlegen mit folgendem Skript, bei jedem boot vorgang:

#!/bin/bash

mkdir -p /dev/dvb/adapter0
mknod /dev/dvb/adapter0/frontend0 c 212 1
mknod /dev/dvb/adapter0/dvr0 c 212 5
mknod /dev/dvb/adapter0/demux0 c 212 3
mkdir -p /dev/dvb/adapter1
mknod /dev/dvb/adapter1/frontend0 c 212 7
mknod /dev/dvb/adapter1/dvr0 c 212 11
mknod /dev/dvb/adapter1/demux0 c 212 9
mkdir -p /dev/dvb/adapter2
mknod /dev/dvb/adapter2/frontend0 c 212 13
mknod /dev/dvb/adapter2/dvr0 c 212 17
mknod /dev/dvb/adapter2/demux0 c 212 15

mkdir -p /dev/sundtek
chmod 777 /dev/sundtek
chmod 777 /dev/bus/usb/001/004

3. auf dem LXC container die sundtek_netinst.sh ausführen
4. das automatische ausführen von dem sundtek service per systemd deaktivieren ! ( wir brauchen andere parameter und starten mediasrv manuell )
systemctl disable sundtek   ( ist in /lib/systemd/system/sundtek.service
5. wie auch immer (systemd oder cron) mediasrv mit folgenden parameters beim booten ausführen:
/opt/bin/mediasrv --wait-for-devices --no-nodes
-> no nodes verhindert das mediasrv versucht die dev nodes auf dem host selbst anzulegen
6. auf keinen fall tvheadend direkt starten , ich warte 60s bevor tvheadend gestartet wird sonst gibts ärger mit der DVB device erkennung. ich nutze auch ein selbst kompiliertes , nicht per make install installiertes  ( also wurde vom installer auch nicht das tvheadend.bin frisiert )

#!/bin/bash

/bin/sleep 60
export LD_PRELOAD=/opt/lib/libmediaclient.so
/home/tvh/tvheadend/build.linux/tvheadend -S -C -p /run/tvheadend.pid -u tvh -g video

kann auch wieder per cronjob beim boot gemacht werden


--> ich bin mit dem setup so nicht zufrieden weil zB das Zusammenspiel (oder das Problem) von mediasrv und tvheadend nicht geklärt ist. auch ist nicht geklärt warum das anlegen der devicenodes ärger macht, selbst wenn chown / chmod alles aufmacht.


hier für die vollständigkeit noch meine container config:

# Template used to create this container: /usr/share/lxc/templates/lxc-download
# Parameters passed to the template: --keyserver hkp://keyserver.ubuntu.com:80
# For additional config options, please look at lxc.container.conf(5)

# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)


# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.include = /usr/share/lxc/config/userns.conf
lxc.arch = linux64

# Container specific configuration
lxc.apparmor.profile = unconfined
lxc.apparmor.allow_nesting = 1
lxc.idmap = u 0 100000 65536
lxc.idmap = g 0 100000 65536
lxc.rootfs.path = dir:/home/simon/.local/share/lxc/tvh/rootfs
lxc.uts.name = tvh

# automatically start containers on boot
lxc.start.auto = 1
#lxc.start.delay = 5
#lxc.start.order = 1

# Network configuration
#lxc.net.0.type = empty
# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = br-iot
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:18:3e:12:34:56

#sundtek DVB
lxc.cgroup2.devices.allow = c 212:* rwm
lxc.cgroup2.devices.allow = c 189:* rwm
#lxc.cgroup2.devices.allow = c 189:3 rwm
#lxc.cgroup2.devices.allow = c 250:* rwm

lxc.mount.entry = /dev/sundtek dev/sundtek none bind,optional,create=dir
lxc.mount.entry = /dev/dvb dev/dvb none bind,optional,create=dir
lxc.mount.entry = /dev/bus/usb dev/bus/usb none bind,optional,create=dir
#lxc.mount.entry = /dev/bus/usb/001/004 dev/bus/usb/001/004 none bind,optional,create=file

lxc.mount.entry = /mnt/tosh3gb-a/tvh_record home/tvh/records none bind 0 0

erweiterte Hinweise:
- ich nutze einen selbstkompilierten tvheadend , der NICHT per make install installiert wurde sondern im verzeichnis bleibt wo er kompiliert wurde. Das der mediaclient mit eingebunden wird muss über den LIB preload geregelt werden. Es gibt bei der vorgehensweise KEINE einzuhaltende Reihenfolge bei der Installation zwischen tvheadend und sundtek:

hier mein skript, die 60s wartezeit sind dafür da den mediaclient beim boot vorsprung zu lassen damit er zuerst rennt:

#!/bin/bash

/bin/sleep 60
export LD_PRELOAD=/opt/lib/libmediaclient.so
/home/tvh/tvheadend/build.linux/tvheadend -S -C -p /run/tvheadend.pid -u tvh -g video





ich würde dsa gerne mit dem Sundtek support weiter bearbeiten und die offenen Punkte abgrasen, s.o.


***********************
ich habe den originalen Beitrag um Details zum tvheadend bearbeitet, s.o
- tvheadend ist selbstkompiliert , nicht installiert
- das PRELOAD der LIB regel ich selbst das habe ich nicht dem sundtek installer überlassen, der ist mir zu heftig unterwegs mit modifikationen im system

chili

  • Newbie
  • *
  • Beiträge: 19
    • Profil anzeigen
Re: SkyTv Ultimate Dual + LXC unpriviliged
« Antwort #31 am: April 08, 2023, 09:14:23 Vormittag »
Ich hab ein Fehler gefunden.
In der LXC conf muß statt "=" ein ":" eingegeben werden.
Also:
#sundtek DVB
lxc.cgroup2.devices.allow: c 212:* rwm
lxc.cgroup2.devices.allow: c 189:* rwm
#lxc.cgroup2.devices.allow: c 189:3 rwm
#lxc.cgroup2.devices.allow: c 250:* rwm

lxc.mount.entry: /dev/sundtek dev/sundtek none bind,optional,create=dir
lxc.mount.entry: /dev/dvb dev/dvb none bind,optional,create=dir
lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,optional,create=dir
#lxc.mount.entry: /dev/bus/usb/001/004 dev/bus/usb/001/004 none bind,optional,create=file

lxc.mount.entry: /mnt/tosh3gb-a/tvh_record home/tvh/records none bind 0 0

Damit läuft es aktuell bei mir

Simon78

  • Newbie
  • *
  • Beiträge: 34
    • Profil anzeigen
Re: SkyTv Ultimate Dual + LXC unpriviliged
« Antwort #32 am: April 23, 2023, 04:49:48 Nachmittag »
Hi,

naja, vielleicht nutzt du eine ältere lxc config, der syntax hat sich mal geändert , siehe:
https://manpages.ubuntu.com/manpages/impish/en/man5/lxc.container.conf.5.html

Gruß,
Simon