Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

gelöst HowTo: Raspberry mit Ubuntu im ReadOnly 24/7 Dauerbetrieb

TDCroPower

Board Guru
Registriert
13. Juli 2010
Beiträge
1.486
Reaktionspunkte
730
Punkte
283
Ort
127.0.0.1
Da mein alter Raspberry 2 so langsam seinen Geist im 24/7 OScam Betrieb aufgibt, habe ich mir einen aktuellen Raspberry 4 besorgt und auch gleich das aktuelle Ubuntu anstatt Raspbian installiert.

Nach einigen erfolgreichen Jahren mit dem Raspberry 2 mit SD Karte, blieb mir die Lebenszeit einer SD Karte immer im Hinterkopf keine Ruhe.
Mythos oder nicht... mir ist in der ganzen Zeit schon eine SD Karte gestorben, obwohl ich die OScam Logs immer unter tmp geschrieben habe und tmp2ram verwendet habe.
Dank Backup meiner Configs, konnte ich das System schnell wieder mit frischer SD Karte aufsetzen... zum Glück war es ein Werktag, wodurch ich schnell an eine neue SD dran kam.
Aktuell mit den kritischen microSD's in der 3er und 4er Serie will ich vorab um eine Lösung eines möglichen Problems Herr werden.

Und genau hier kommt das Thema ReadOnly Betrieb ins Spiel !

Wenn sich einige jetzt gerade fragen...
"Hey, im ReadOnly Betrieb kann ich doch nichts mehr installieren oder bearbeiten?"
--> Antwort: GENAU, aber dafür zeige ich euch hier in der Anleitung wie ihr mit den Kurz-Befehlen "rw" und "ro" zwischen ReadWrite (Lesen+Schreiben) und ReadOnly (Nur Lesen) schnell wechseln könnt!

1. Voraussetzung​

Für meine Schritte zur Umsetzung benötigt ihr zunächst eine fertige Installation von Ubuntu auf eurem Raspberry, eine schon vorhandene Anleitung findet ihr drüben von @Osprey ...

2. Auf gehts​

Habt ihr Ubuntu mit der Anleitung von @Osprey erfolgreich installiert können wir endlich starten.

HINWEIS: ich führe alle Befehle als root User aus, daher sind vor einigen Befehlen davor kein sudo !
Wenn ihr als nicht root User eingeloggt seid, müsst ihr natürlich noch sudo davor setzen!

2.1. zuerst entfernen wir unerwünschte Programme vom System...
Hinweis: hier könnten in Zukunft noch ein paar dazu kommen, aus den anderen Anleitung war lediglich logrotate installiert bei ubuntu.
Falls ich noch weitere finde die man nicht benötigt, füge ich sie hier hinzu!
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.2. nun tauschen wir das Log Managment gegen busybox aus...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.3. danach räumen wir unser System von liegen gebliebenen Resten auf...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.4. um swap und den filesystem check zu deaktivieren müssen wir die cmdline.txt editieren...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.5. fügt am Ende der ersten Zeile "fastboot noswap ro" hinzu...
vorher
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
nachher
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.6. zusätzlich dazu müssen wir noch random-seed in den schreibbaren Bereich verlagern...
Dazu zuerst das original File entfernen...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.7. um danach einen Symlink dafür zu erstellen...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.8. damit beim Neustart im tmp Bereich das File vor dem random-seed service selber zu erstellen müssen wir die service Datei hierzu erweitern...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.9. fügt im Bereich Service folgende Zeile dazwischen...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
sollte dann so aussehen...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.10. jetzt übergeben wir systemd unsere Änderungen...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.11. daraufhin stellen wir unsere Filesysteme auf ReadOnly Mode um und verlinken die tmp und System Logs in den tmpfs (Arbeitsspeicher) ...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.12. hierbei fügt man ro hinter defaults bei beiden ersten mounts hinzu und einige tmpfs mounts...
vorher
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
nachher
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.13. jetzt sollte euer System beim nächsten Neustart direkt in den ReadOnly Mode booten, das könnt ihr auch direkt testen mit...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.14. nach dem neustart könnt ihr mit folgendem Befehl prüfen, ob sie im ReadOnly Mode sind...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

2.15. hier solltet ihr, in Klammern, bei beiden mounts ein (ro,...) sehen, wenn es so ist... perfekt...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!


3. Wechseln zwischen ReadWrite <-> ReadOnly​

Wie am Anfang schon versprochen, wollen wir für zukünftige Installationen oder Änderungen von Dateien schnell in den Schreibmodus wechseln und am Ende sicher wieder zurück in den ReadOnly Mode!
Das funktioniert OnTheFly, also ohne am laufenden Betrieb des Servers irgendwas zu manipulieren bzw. OHNE Neustart !

Theoretisch reicht hier der Befehl für ReadWrite...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
und zurück zum ReadOnly...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
Da sich diese Befehle keiner merken will, können wir dies in Kurzbefehle packen und somit schnell hin und her wechseln!

3.1. da wir uns nach dem Neustart aktuell im ReadOnly Mode befinden, wechseln wir zunächst in den ReadWrite Mode zurück...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

3.2. öffnet nun eure User Bashrc Datei...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

3.3. fügt am Ende der Datei folgendes hinzu...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

3.4. als nächstes möchten wir sicher stellen, das wir beim Ausloggen nicht vergessen das System wieder in den ReadOnly Mode zu setzen...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

3.5. fügt folgendes am Ende hinzu...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

3.6. ihr müsst euch jetzt ausloggen und neu per ssh anmelden, im Prompt links solltet ihr jetzt sofort sehen in welchem Modus (ro) oder (rw) ihr seid und könnt mit dem Kurzbefehl ro bzw. rw leicht hin und her wechseln...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!


4. Schreibpartition erstellen für Oscam configs oder ähnlichem​


Da im ReadOnly Mode das Oscam WebInterface so natürlich nicht komfortabel funktionieren kann, brauche wir einen abgegrenzten Bereich indem unsere eigenen Programme doch ab und an im ReadWrite Modus schreiben können, unabhängig was auf dem System gerade los ist.

Leider kann man im laufenden Betrieb die große root Partition /dev/mmcblk0p2 nicht verkleinern um davon eine weitere Partition zu erstellen die wir hierfür benötigen.
Ladet euch dafür am einfachsten die
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
herunter und startet sie mit einem kostenlosen VM Tool wie
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
oder
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
.

4.1. habt ihr die GParted Live CD erfolgreich im VM Tool gestartet, wählt ihr im ersten Auswahl Fenster GParted Live (Default settings) aus...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.2. danach einfach Don't touch keymap...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.3. als Sprache in unserem Beispiel am besten 10 für Deutsch...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.4. als Mode könnt ihr einfach mit 0 den GParted automatically nutzen...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.5. wählt nun oben rechts eure microSD aus (die könnt ihr in diesem Schritt an euren PC anschließen)...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.6. mit rechtsklick auf die 2te Partition mit der höheren Größe und dann Größe ändern/verschieben...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.7. hier setzt ihr unter Neue Größe (MB) fest, wie groß die root Partition in Zukunft groß sein soll, in meinem Beispiel bei einer 32GB microSD wird 10GB an root gehen und 22GB an die neue Schreibpartition...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.8. wählt nun mit Rechtsklick auf die nicht zugeteilt "Partition" und dann Neu aus...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.9. hier müsst ihr lediglich eurer neuen Partition eine Bezeichnung geben, in meinem Beispiel Datenkrake...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.10. klickt nun auf den grünen Pfeil in der Menüleiste um alle offenen Operationen auszuführen...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.11. eure in den letzten Schritten definierten Operationen werden nach einander automatisch ausgeführt...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!
4.12. am Ende solltet ihr einen ähnlichen Details Bericht haben wie hier...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!

4.13. zurück am Raspberry führt folgenden Befehl aus um alle verfügbaren Partitionen zu sehen...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
wenn eure neue Partition hier aufgelistet wird, in meinem Beispiel die datenkrake, waren die oberen Schritte soweit korrekt...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.14. jetzt erstellt euch ein Verzeichnis in das diese Partition gemounted werden soll, in meinem Beispiel unter /mnt...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
kontrolle...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.15. nun öffnen wir wie in 2.16. die fstab um den Mount zu konfigurieren...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.16. fügt die Zeile 3 so ein wie es hier zu sehen ist, bei LABEL=BESCHREIBUNG muss eure gesetzte Beschreibung hinein bzw. die aus Schritt 4.13. ohne Hochkomma zu sehende und natürlich euren Pfad zum in Schritt 4.14. erstellten Verzeichnis...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.17. mit folgendem Befehl führen wir die fstab im laufenden Betrieb aus...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.18. eure Partition sollte nun gemounted sein und ihr könnt im ReadOnly Modus in diese hinein schreiben...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.18. erstellt nun ein Verzeichnis ipc in eurer Partition...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.19. verschiebt aus /var/etc alle Dateien nach /mnt/datenkrake/ipc und verlinkt es mit dem Verzeichnis /var/etc...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.20. sicherheitshalber stoppt vor dem nächsten Schritt OScam damit bei den nächsten Befehlen alles sauber durchlaufen kann...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

4.21. nun wollen wir noch die im laufenden Betrieb von Oscam erstellten Cache Logs (die man leider nicht per oscam.conf konfigurieren kann) nicht hier haben, sondern im /tmp Verzeichnis (Arbeitsspeicher)...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

Hinweis: die anderen Log Dateien habe ich in der oscam.conf unter Global >>> logfile, emmlogdir und lb_savepath schon auf /tmp verschoben, daher brauch ich dafür kein Symlink.
Das wars auch schon und Oscam sollte wieder sauber laufen.


Quelle:
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
 
Zuletzt bearbeitet:
Top - Info, werde ein paar Dinge raus übernhemen.

(Neben dem read-only hast Du ja auch die Lebensdauer der SD im Blick, beim 4'er kannst Du ja problemlos mit einer kleinen SSD oder einem USB Stick arbeiten. Ich habe immer einen USB clone im Schrank, nicht nur für den Notfall, auch wenn ich mal was verkonfiguriere)
 
Ok irgendwas stimmt jetzt mit dem System nicht, ich bekomm folgendes wenn ich versuche ntp zu installieren...

Du musst dich Anmelden oder Registrieren um diesen Inhalt sichtbar zu machen!

edit:
ok es liegt wohl an der /etc/resolv.conf die keine DNS Adresse mehr beinhaltet.
Nachdem ich mit...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
... einen DNS hinzugefügt habe konnte ich NTP installieren.
Mal sehen wie ich das DNS Thema dauerhaft korrigieren kann.
 
Zuletzt bearbeitet:
Das NTP Problem habe mit der dem fstab auf tmpfs behoben, damit startet NTP ordentlich beim booten und die Uhrzeit + Datum stimmen.

Das Problem 1 für die OScam Configs habe ich auch schon eine sehr gute Lösung erarbeitet, indem ich eine weitere Partition erstelle, diese unter /mnt/datenkrake mounte und schreibrechte gebe.
Damit es auch mit der IPC Installation weiterhin sauber funktioniert, habe ich /var/etc auf /mnt/datenkrake/ipc per symlink gesetzt.
Da die Configs nicht so häufig bearbeitet werden, verhält sich die Schreibrate hier auf ein maximales Minimum.

Anleitung Erweiterung dazu folgt noch, da die bestehende Partition nicht direkt am Raspberry angepasst werden kann und man alternativ zur gparted Live CD greifen kann.
 
Anleitung zu Partition erstellen und Oscam Dateien darin auslagern hinzugefügt.

Ich bin soweit zufrieden und der Raspberry2 wird heute Nacht meinen alten Raspberry 2 ersetzen... endlich!
 
Ok leider ist das /etc/resolv.conf Problem noch vorhanden, nach einem reboot wird die Datei unter /tmp nicht erstellt, wodurch kein DNS Server hinterlegt wird.
Bislang haben alle Tipps keinen Erfolg gebracht.

Jemand einen Ratschlag parat?
 
Hi,

schöne Anleitung.

Bei Linuxadmins "kräuseln" sich allerdings dabei die "Fußnägel nach hinten".

Speichermedien rauchen nun mal irgendwann ab, da ändert ein RO System nicht viel dran.

Immer schön Backups machen gelle.

My2Cents & Gruß

Gesendet von meinem POCOPHONE F1 mit Tapatalk
 
Danke für euer Feedback, ich konnte gestern Abend das Problem endlich lösen, dass per DHCP meine DNS Adresse nicht hinterlegt wurde.
Es ist so einfach das es schon irgendwie weh tut.

Im original Setup von ubuntu zeigt die /etc/resolv.conf auf /run/systemd/resolve/resolv.conf...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
und in dieser ist der korrekte DNS von systemd-resolved hinterlegt worden, dank /run wird es beim booten generiert und in den Arbeitsspeicher geschrieben...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

Durch die vielen Anleitungen die ich als Basis verwendet habe und dort wohl noch alte Setups liefen, war leider das löschen der originalen /etc/resolv.conf fatal, da dadurch der Link Eintrag verloren ging...
Code:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!

Ich habe die Anleitung dahingehen angepasst und auch einige andere Stellen korrigiert.
Wie zum Beispiel das austauschen von systemd-timesyncd.service gegen ntp, da es jetzt auch so funktioniert und das Datum korrekt ist nach einem reboot.

Ich bin jetzt endlich zufrieden mit dem Setup und kann beruhigt mit dem System live gehen.

@axel ja Backups werden von eigenen Skripten erstellt, aber ich habe gerne ein sehr lange laufendes System ohne ein Backup jemals anfassen zu müssen.
Mein Raspberry2 lief jetzt ca. 8 Jahre 24/7 durch und nur einmal musste ich mein Backup in die Hand nehmen, weil die SD Karte einen Knax bekommen hatte.

Mit Backups aktiv zu hantieren bei einem Ausfall ist halt auch Zeit aufwendig und unschöne Downtime.
Wenn ich mit diesem Hybrid ReadOnly System diese weiter minimiere... gerne.
Da darf sich der Linuxadmin gerne weiter daran stören.

Da ich hier ein Oscam only System laufen habe, benötige ich persönlich keine weiteren Systemtools die irgendwas irgendwo schreiben.

Wenn jemand noch im Setup von ubuntu etwas sieht was man deinstallieren kann, immer her damit!
 
Mein Raspi4 im ReadOnly Betrieb läuft seit letzter Nacht mit meinen Karten und ich muss allein aus der ECM Zeiten Sicht schon sagen das sich der Tausch mehr als gelohnt hat.
Meine V23 läuft jetzt auf unter 100 bei 3 Zugriffen und die UM02 bei ca. 300 bei 4 Zugriffen... ich kann nicht meckern, gefällt mir!

Ciao Ciao good old Raspberry 2, hello Raspberry 4 my friend !
 
Zuletzt bearbeitet:
Zurück
Oben