Howto: Readonly Ubuntu als Sat-Server

  • Hi,


    da ich meine Schüssel - wie wahrscheinlich die meisten - und den Multiswitch auf dem Dachboden haben, den Server aber im Keller, experimentiere ich zur Zeit damit, eine Handvoll USB-DVB-S2 Stick von Sundtek im Netzwerkmodus zu betreiben.


    Dieser Netzwermodus erlaubt es, das der Server im Keller via LAN auf die Tuner zugreifen kann, so als ob diese eingebaut wären. Benötigt wird also ein PC mit USB-Schnittstelle der die Sundtek-Sticks aufnehmen kann und ein USB-Stick für ubuntu. Weitere Hinweise gibt es bspw. hier.


    Das ganze funktioniert ähnlich wie ein Netceiver, jedoch wird zum Betrieb dessen zwingend ein VDR-Plugin benötigt, die Lösung von sundtek ist unabhängig sodass man bspw. tvheadend, kaffeeine oder sonstwas nutzen könnte. Außerdem benötigt weder der VDR noch irgendwelche Plugins eine Sonderbehandlung in Form von patches.


    Ich wollte eine Readonly Lösung, da ich auf dem Dachboden keine USV aufstellen wollte, bei einem Stromausfall könnte Datenverlust entstehen, im schlimmsten fall könnte nach einem kurzem Stromausfall, keine Sendung mehr geschaut oder aufgenommen werden, oder noch schlimmer, man müsste diesen Dachbodenserver neu aufsetzen.


    Ich habe mich entschieden, das letzte Ubuntu Release zu nutzen, also 12.04 Server LTS, da dieser gerade frisch ist und LongTermSupport hat.


    Fangt also an und ladet euch Ubuntu 12.04 Server runter, achtet dabei auf eure Architektur, ich nutze AMD64, ist für dieses Howto aber uninteressant.


    Ich empfehle eine Installation auf einem USB-Stick, dieser sollte min. 2 besser 4 GB groß sein.


    Startet die Installation und wählt dabei folgendes im Laufe der Installation an:
    - eine Partition, kein Swap, kein LVM, ext2 als Dateisystem,
    - keine automatische Aktualisierung,
    - nur openssh server installieren,
    - nach neustart anmelden, [Bemerkung: alle Befehle müssen als root eingeben werden, ich lasse also nachfolgend das sudo weg, holt euch am besten nach einem Neustart mit sudo bash eine root-shell] dann "sudo bash" eingeben und anschließend ein
    -

    Code
    apt-get update && apt-get dist-upgrade

    ausführen,
    - dann installieren wir die sundtek Treiber wie auf der Supportseite beschrieben

    Code
    cd /tmp
    wget http://www.sundtek.de/media/sundtek_netinst.sh
    chmod 777 sundtek_netinst.sh
    ./sundtek_netinst.sh


    - unter /etc legen wir eine Datei namens "sundtek.conf" an

    Code
    vi /etc/sundtek.conf


    und fügenfolgende Zeile hinzu.

    Code
    enablenetwork=on


    - wenn ihr irgendwelche Pakete benötigt, installiert diese wie gehabt.


    Nun fangen wir an, Ubuntu readonly beizubringen.
    - wir verwenden overlayfs und machen dafür die Änderungen laut UbuntuWiki


    - Zuerstmal geben wir der Initramfs das Modul mit

    Code
    echo overlayfs >>/etc/initramfs-tools/modules


    - nun fügen wir das root-ro script hinzu und machen es ausführbar

    Code
    vi /etc/initramfs-tools/scripts/init-bottom/root-ro



    Code
    chmod +x /etc/initramfs-tools/scripts/init-bottom/root-ro


    - und generieren einen neuen initramfs

    Code
    update-initramfs -u


    Wir müssen nun eine Kleinigkeit ändern, nachdem Ubuntu gestartet wurde, teilt das System Grub mit, das alles in Ordnung ist, dies passiert, indem es das init.d-Script grub-common das ausführt:

    Code
    grub-editenv /boot/grub/grubenv unset recordfail


    Nun ist unser root-system aber readonly, das würde heißen, es würde zwar das script ausführen, aber es könnte die Änderung nur temporär speichern. Beim nächsten boot, würdet ihr das Grub-menü sehen und ihr müsstet manuell mit enter den Kernel starten. Macht für ein embedded System keinen sinn ;), es gibt eine Reihe von Möglichkeiten dies zu umgehen, ich habe mich entschieden, folgende Variante zu nutzen.


    editiert die Datei /etc/grub.d/00_header, irgendwo ab zeile 232 seht ihr folgenden Schnipsel

    Code
    make_timeout ()
    {
        cat << EOF
    if [ "\${recordfail}" = 1 ]; then
      set timeout=-1
    else
      set timeout=${2}
    fi
    EOF
    }


    ändert die Zeile mit

    Code
    set timeout=-1


    in bspw

    Code
    set timeout=2


    um, speichern und einmal

    Code
    update-grub

    ausführen. Man könnte auch das script ind /etc/init.d/grub-common anpassen, dazu müsstet Ihr erst /mnt/root-ro schreibbar mounten, die unset recordfail Zeile barbeiten und ausführen lassen und das ganze wieder readonly mounten lassen, aber wenn genau in dem Moment ein stromausfall kommt haben wir nix gewonnen...


    Im Prinzip sind wir fertig. Startet Ubuntu neu, meldet euch an und gebt folgendes ein


    Code
    mount


    die Anzeige sollte in etwa wie folgt aussehen

    Code
    overlayfs-root on / type overlayfs (rw)
    /dev/sdXY on /mnt/root-ro type ext2 (ro,relatime,errors=continue)


    Wichtig ist die erste Zeile, Ihr könnte nun wie ihr wolltet auf auf der platte "schreiben" es wäre nur virtuell (daher overlay).



    Um nachträglich Änderungen vorzunehmen gibt es zwei mögliche Varianten.


    Variante 1
    ihr wollt nur mal eben schnell eine Datei editieren, oder ein paar daten kopieren.

    Code
    mount -o remount,rw /mnt/root-ro


    Nun könnt Ihr Dateien editieren, kopieren etc....
    Seid ihr fertig müsste Ihr das ganze wieder readonly mounten

    Code
    mount -o remount,ro /mnt/root-ro


    Variante 2


    Da wir nun ein neues Ubuntu mit LTS unser eigene nennen könnte es ja sein, das wir auch mal updates oder gleich ganze Pakete einspielen wollen. Es empfiehlt sich daher folgende Vorgehensweise.


    Code
    mount -o remount,rw /mnt/root-ro 
    touch /mnt/root-ro/disable-root-ro
    mount -o remount,ro /mnt/root-ro


    Wir haben also das Dateisystem schreibend gemountet und eine leere Datei namens disabled-root-ro im Wurzelverzeichnis erstellt. Nach einem Neustart, wird Ubuntu ganz normal gestartet, wir können Pakete (de)installieren, wie sonst auch.


    Seit Ihr fertig mit den Änderungen, löscht einfach die Datei disable-root-ro

    Code
    rm /disable-root-ro


    und startet neu. Nun haben wir wieder eine geschützte ReadOnly Umgebung, ein Stromausfall oder ein hartes ausschalten kann dem System nichts mehr anhaben.


    Das ganze belegt ca 1.1GB, was zwar happig ist, aber bei den heutigen Preisen für ein USB-Stick zu vernachlässigen.


    Mfg
    KRis


    Update 21.5.12 - 12:35
    anstelle eines scripts wird die Confikdatei sundtek.conf benutzt um das Netzwerksharing einzuschalten.

    Intel DN2800MT 4GB RAM; 32GB mSata, Ubuntu 15.04, TVHeadend 4.1, Digibit R1 SatIP

    2 Mal editiert, zuletzt von kris ()

  • Moin,


    cooles Ding.


    Damit kann ich ja auch eine virtuelle Maschine unter ESXI aufsetzen. Das Board kann leider kein VT-d sodass ich eh auf USB Tuner Hardware ausweichen muss.


    Kann ich dann am Server aufnehmen + Tuner im Netz bereitstellen ? Wie verhält sich das mit der Tunerzuordnung ? Oder habe ich da was falsch verstanden...


    Würde alternativ auch ein yavdr headless (virtuell) nehmen und erstmal mit einem Sundtek Stick anfangen zu testen :]


    Munter bleiben, Rossi

    Einmal editiert, zuletzt von vdr_rossi ()


  • Kann ich dann am Server aufnehmen + Tuner im Netz bereitstellen ?


    also auf dem Server direkt nehme ich nichts auf. Aber wenn ich testweise auf mehreren Clients denselben Stick mounte und auf diesselbe Frequenz tune dann koennen diese Clients alle parallel arbeiten. Was fuer den Client der vielleicht direkt auf dem Server laeuft auch gelten sollte.


    So wie ich es verstanden habe soll die Restriktion "gleiche Frequenz" in Zukunft aber aufgehoben werden. Die Clients koennen dann auch auf ganz verschiedenen Frequenzen (von einem einzigen Stick) unterwegs sein. Sie muessen sich nur innerhalb desselben Bouquets befinden.


    - sparkie

  • Moin!


    Nur als Hinweis: im yaVDR-main-PPA liegt ein Paket mit dem Sundtek-Treiber.
    Ist doch schöner, wenn alles, was möglich ist, als Paket installiert ist.


    Lars.

  • mini73
    Danke für den Hinweis.


    Es geht mir erstmal nur darum, was (in der Theorie) möglich wäre...
    Besonders die Netzwerktunergeschichte interessieren mich :)


    Wenn die Theorie klar ist werde ich mir einen Sundtek Stick bestellen und mit dem vdr2 den Netzwerktuner testen.
    Vom Startkonzept her möchte ich auf dem (virtuellen) Server aufnehmen und den vdr2 mit Tuner übers Netzwerk versorgen.
    Im Endausbau dann 2-3 Sundtek Sticks für den virtuellen Aufnahmeserver und dann auch den vdr1 abrüsten (tunermäßig).


    SAT -> LAN mit den Sundtek Sticks ist das Stichwort.


    Muss mich da jetzt noch etwas einlesen. *edit: Lektüre Sundtek Wiki


    Das einzige was dagegen spricht ist das gute Wetter :D sowas ist imho eher was für dunkle Wintermonate...


    Munter bleiben, Rossi

    Einmal editiert, zuletzt von vdr_rossi ()

  • Hi,


    vdr_rossi
    wie die tuner angesprochen werden können weiß ich nicht, ich selber habe nur den Server, die Clients greifen dann via xvdr auf den server zu.


    mini73
    die Installation wie ich sie hier verwende ist nur als Beispiel zu verstehen, ich habe mich bewusst dagegen entschieden euer Repo zu nutzen, da diese Anleitung auch im support-Forum von sundtek steht.


    mfg
    kris

    Intel DN2800MT 4GB RAM; 32GB mSata, Ubuntu 15.04, TVHeadend 4.1, Digibit R1 SatIP

  • Moin!


    die Installation wie ich sie hier verwende ist nur als Beispiel zu verstehen, ich habe mich bewusst dagegen entschieden euer Repo zu nutzen, da diese Anleitung auch im support-Forum von sundtek steht.


    Das ist auch kein Problem, ich wollte es nur erwähnen. Manche installieren lieber ein Paket unter Debian/Ubuntu.
    Mir ist es letztendlich egal. :)


    Die Netzwerk-Features der Sundtek-Sticks sind schon echt klasse. Bei mir hängt ein DVB-C-Stick an einer GoFlex Net, mal benutze ich ihn mit meinem echten Test-VDR, mal mit einer VM usw.
    Wenn du die Anleitung irgendwann als "fertig" ansiehst, würde ich es toll finden, wenn sie ihren Weg ins Wiki findet (am besten mit Link zum Thread).


    Lars.

  • wie sind denn so die Umschaltzeiten mit den sundteks über's Netz - im Vergleich zu direkt im vdr eingesteckt?


    welches wäre das minimale Setup (Basis mit geringem Stromverbrauch bei guter Funktionalität) für den Dachboden, um zwei oder 3 Sticks so zu betreiben?
    Ziel: der Dachbodenserver sollte idealerweise nicht wesentlich mehr als die addierte Leistungsaufnahme der 3 Sticks verbrauchen...


    Hintergrund der Frage: meine Dual-DVB-T Karte scheint letzte Woche abgeraucht zu sein - grml!

    vdr3: yavdr-ansible | MSI B150M Mortar| Celeron 3930 | GT 630 passiv | DD Cine C/T/T2 (V7) | Noctua NH-L12 | Seasonic SS-300TGW (semi-passiv) | targavfd | Atric v5 | im Revox B-226 Gehäuse

  • wie sind denn so die Umschaltzeiten mit den sundteks über's Netz - im Vergleich zu direkt im vdr eingesteckt?


    Ich habe es lokal noch nicht probiert immer nur remote, aber selbst wenn der Stick in der Dockstar steckt und der Client nur ein Atom ist, dann ist es mit Softhddevice rattenscharf schnell.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • HI,


    auf meinem Testsystem (Dockstar und ein DVB-S2 Stick) über x-vdr dauert das Umschalten innerhalb eines Transponders keine gefühlte sek. Transponderwechsel dauern 2-3 sek (wie gesagt, ein Stick)


    Rattenschnell wie ich finde :)


    Der User sparkie hat folgende Erfahrung, meine Dockstar ist mit einem Stick bei 20% Last (HD)


    mfg
    kris

    Intel DN2800MT 4GB RAM; 32GB mSata, Ubuntu 15.04, TVHeadend 4.1, Digibit R1 SatIP

  • Hi,


    so, die ganze Konstellation hier läuft seit einiger Zeit Einwandfrei, ich würde jedoch zu einem größeren Stick raten. Mein 2GB Stick ist mittlerweile mit 1,6GB recht "voll", wenn ich mal eine msata-Platine finde, die auch auf dem Intelboard läuft, wird der Stick ersetzt.


    Wenn geklärt ist, wie DVB-Stick mit Avahi-announcement funktionieren, würde ich das alles auch ins wiki stellen.


    Ich werde zudem bei Gelegenheit wohl doch auf eurer Repo zugreifen, so ist der Server tatsächlich "Wartbarer" und die Aktualisierung ist dann ein klacks...


    mfg
    kris

    Intel DN2800MT 4GB RAM; 32GB mSata, Ubuntu 15.04, TVHeadend 4.1, Digibit R1 SatIP

  • Hi,


    die weiter oben angekündigte virtuelle Maschine läuft seit ein paar Monaten problemlos bei mir.
    Tunermäßig habe ich mit einem angefangen und vor ein paar Tagen zwei weitere USB DVB-S2 Sundtek Sticks nachgesteckt.
    Dann fingen die Probleme an -> siehe diesen Beitrag.


    Tippe jetzt auf Stromzufuhr. Habe die drei Sticks ohne Netzteil betrieben...


    Wie hast Du das gelöst ? Wollte mir jetzt mehrere Niedervolstrecker (abgewinkelt) an Molex adaptieren und die Stromversorgung vom PC Netzteil nutzen.


    Munter bleiben, Rossi

  • Hi,


    was hat das Problem mit dem Thread zu tun? Hier geht es um ein Readonly Ubuntu als Satserver...


    Ich habe vier sticks jeweils ohne sep. Stromzufuhr am laufen. Keine Probleme.


    MfG
    Kris

    Intel DN2800MT 4GB RAM; 32GB mSata, Ubuntu 15.04, TVHeadend 4.1, Digibit R1 SatIP


  • was hat das Problem mit dem Thread zu tun?


    Naja jede Softwarelösung läuft auf einer Hardware. Finde die Frage durchaus legitim in dem Thread.
    Sundtek schreibt in "meinem" Beitrag das 3 Sticks hart an der Stromzufuhr Grenze vom USB Controller sind.


    Freut mich das bei Dir 4 Sticks ohne Stromzufuhr laufen.


    Munter bleiben, Rossi

  • Wo ist das Problem, ggf. ein passendes Netzteil extern zu verwenden?


    Nirgendwo, man muss es nur wissen :D


    Munter bleiben, Rossi

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!