Betriebssystem im Arbeitsspeicher ausführen

  • Hallo an alle,
    Ich möchte eine MicroSD für meinen Raspberry pi (Modell 2B) so "präparieren", dass sie beim Einlegen in den Pi (als Bootmedium natürlich, wie üblich...) das Betriebssystem (bevorzugt Raspbian) direkt AUF DEN ARBEITSSPEICHER kopiert und dann dort laufen lässt. Dies sollte auch funktionieren, wenn die MicroSD anschließend schreibgeschützt wird, was insgesamt dazu dienen soll, dass nach Auswurf dieser sämtliche vorgenommene Änderungen (die für meine Verwendungszwecke unerwünscht sind) verloren sind. Hat jemand Ideen, wie man das bewerkstelligen könnte, oder weiß jemand, wie man MicroSDs schreibschützt (schließlich fehlt ihnen dieser Hebel; soll aber angeblich trotzdem irgendwie gehen...), beziehungsweise den Arbeitsspeicher eines Raspberry pi Modell 2B erweitert? Beim Modell 3 soll das ja recht einfach sein, aber gibt es für den 2B irgendwelche USB-artigen Arbeitsspeichererweiterungen? Oder sonstige Möglichkeiten?
    :s
    Danke schon mal an alle, die mir evtl. antworten werden.. :danke_ATDE:

  • Zuerstmal: so, wie du dir das wuenschst, geht das nicht. Der Speicher ist schon so nicht reichlich bemessen, wenn du den dann noch mit einer RAM-Disk zumuellst, die nicht nur neu geschriebene, sondern alle zum laufen des Systems notwendige Dateien enthaelt - dann laeuft nichts mehr.

    Was du tun kannst ist gleich nach dem Booten alle veraenderlichen Daten in eine RAM-Disk laufen zu lassen, so dass deine SD-Karte nicht mehr beschrieben wird. Das sollte eigentlich fuer die meisten Dinge reichen. Ob es noch weiter gehen kann - gar nicht mehr beschreibbar sein, und sogar als RO gemountet... puh. Das weiss ich nicht.

  • Danke für die Antwort.
    Automatisch zusammengefügt:
    Ich will die SD natürlich nicht nach dem Einlegen in den pi, sondern VORHER schreibschützen (nur falls es so geklungen haben sollte, als hätte ich vor, sie jedes mal nach dem Einlegen schreibzuschützen, und nachher wieder zu "entschützen"). Meine Überlegung war, dass eine schreibgeschützte SD keine Änderungen annimmt (was an sich ja selbsterklärend ist...); da sie so allerdings auch nicht für einfache Vorgänge wie z.B. Internetzugriffe zu verwenden ist, wollte ich das Betriebssystem einfach für jede Benutzung erneut auf den pi kopieren lassen, da es dort ja nach jedem Abschaltvorgang vollständig gelöscht wird und so ebenfalls keine bleibenden Änderungen vorgenommen werden können. Ginge meine Idee, wenn der Arbeitsspeicher größer (=groß genug) wäre? Ich habe nämlich von jemandem gehört, bei Computern mit größerem Arbeitsspeicher sei dies möglich, bzw. er habe es bei diesen genau so gemacht, wie es mir für den Raspberry Pi vorgestellt habe.

    Einmal editiert, zuletzt von RaspberryBaum (3. Juni 2016 um 16:29)

  • Ginge da nicht auch so eine Art "Rahmen", den man für die Überkopier-angelegenheit usw. um ein bereits existentes Betriebssystem "drumherumlegt"? Der dann dafür sorgt, dass dieses im Arbeitsspeicher läuft und dorthin gebooted wird?


  • Ich möchte eine MicroSD für meinen Raspberry pi (Modell 2B) so "präparieren", dass sie beim Einlegen in den Pi (als Bootmedium natürlich, wie üblich...) das Betriebssystem (bevorzugt Raspbian) direkt AUF DEN ARBEITSSPEICHER kopiert und dann dort laufen lässt.

    Natürlich ist das möglich!

    Es gibt selbstverständlich gewisse Betriebssysteme die das bereits von alleine machen. Nennt sich zB. "Boot to RAM".
    Speziell für den Pi gäbe es da zB piCore (siehe dazu => FAQ => Welche Betriebssysteme gibt es?). Das basiert auf TinyCore und wird seinem Namen gerecht: Tiny. Ist also sehr abgespeckt.
    Google Suche nach: raspberry boot to ram

    Problematisch wird es allerdings mit dem Umfang des Betriebssystems. Die meisten wollen eine super schicke Desktop Umgebung verwenden, die ist aber relativ dick und beinhaltet viele weitere Programme - das passt nicht alles in den Begrenzten Arbeitsspeichers des Pi's, 1GB sind nicht wirklich sehr viel..

    Eine Speichererweiterung ist ebenfalls nicht möglich - auf jeden Fall macht es, so wie Du dir das denkst, überhaupt gar keinen Sinn USB 2.0 dafür zu verwenden, der Bus ist nämlich weitaus(!) langsamer als der RAM. Problematisch wird dann aber auch die Softwareumsetzung: Wie soll man der Software beibringen das da noch anderer Arbeitsspeicher über irgendeinen anderen Bus zur Verfügung steht?

    Das nächste Problem besteht darin, dass auch mal Dateien gespeichert werden müssen, zum Beispiel mit Einstellungen usw. Zu unterscheiden ob die Datei nun in den RAM oder auf einen Datenträger gespeichert werden soll, ist etwas umständlicher. Dieses Problem betrifft übrigens auch ein Read-Only System, denn da kann natürlich auch nichts mehr auf dem Systemlaufwerk gespeichert werden es sei denn man remount'ed den Datenträger....
    Sowas wie Logfiles wollen bei einem Read-Only System auch weiterhin geschrieben werden, sonst verweigern einige Dienste sogar ihren Dienst. Dh. man muss dafür eine Alternative schaffen und die nennt sich üblicherweise "tmpfs", also die Verzeichnisse in eine Art RAMDisk zu verlegen - wie eine Art, weil wenn der RAM voll ist wird auf den SWAP ausgewichen; eine richtige RAMDisk wäre "ramfs". Problem dabei ist wiederum dass das natürlich RAM verbraucht, wovon der Pi aber nicht allzuviel hat.... Also muss man das auch in einer gewissen Weise kontrollieren und begrenzen. Aber auch das ist möglich - nur mit einem gewissen Mehraufwand verbunden. Siehe dazu FAQ => Nützliche Links / Linksammlung => /var/log/ in eine Art RAMdisk auslagern & weitere Optimierungen bezgl. Logs


    Frage:

    Was genau hast du vor? Also was soll das Ergebnis sein?

  • Zu read-only-systemen: Ich habe eine einfache Anleitung (-> https://www.joachim-wilke.de/blog/2015/04/14/archlinuxarm-ro/ <- ; Strategie 2) gefunden, um jene Verzeichnisse des verwendeten Betriebssystems (im Beispiel ArchLinux), auf die auf jeden Fall Schreibzugriff benötigt wird, auf einen USB-Stick zu verschieben, indem ein Symlink auf den USB gesetzt wird. Wenn man sie damit auf den Arbeitsspeicher anstelle des USB-Sticks verweisen würde und es so einrichten würde, dass sie bei jedem Bootvorgang erneut dorthin verschoben werden, und wenn man den Arbeitsspeicher durch Anschließen irgendeines Moduls dafür entsprechend erweitern würde, könnte man die verwendete SD doch eigentlich schreibschützen (vorausgesetzt, man nutzt ein älteres Modell des Raspberry Pi, das mit SDs statt MicroSDs arbeitet) und so den gewünschten Effekt dessen, dass man nach jedem Ab- und Wiedereinschalten wieder dasselbe vor sich hat, erzielen. Nur - funktioniert das so, wie ich mir das grad vorstelle, und wenn ja, wie verschiebt man das Zeug auf den Arbeitsspeicher anstelle des USBs? Beim USB geht das mit "/mnt/usbstick/src", wobei "usbstick" der Name vom USB ist und src (sofern ich alles richtig verstanden habe) der Name des zu verschiebenden Verzeichnisses ist. Was "sagt" man, wenn man Arbeitsspeicher statt USB-stick meint? Hat der auch einen bestimmten "Namen"?

    Danke an alle, die evtl antworten werden.
    Automatisch zusammengefügt:
    Das Ergebnis soll sein, den RPi so zu verwenden, dass keiner (also nicht mal solche, die ihn benutzen, also in ihm drin sind, wie z.B. ich oder etwaige Hacker, falls welche reinkommen sollten), in der Lage ist, Änderungen vorzunehmen, die beim nächsten Abschalten- und Wiederhochfahren noch da sind. Sozusagen sollen unerwünschte Veränderungen jedes Mal, wenn ich abschalte, wieder "rausgekickt" werden, weil sie schließlich alle auf dem Arbeitsspeicher gespeichert werden müssen, der ja bekanntlich flüchtig ist.
    Automatisch zusammengefügt:
    Und ich habe also garnicht vor, bleibende Dateien auf dem Pi zu verwalten (im Sinne von Schreiben, speichern usw.), insofern spielt die Tatsache, dass dies damit unmöglich gemacht wird, keine Rolle. Es würde mir also reichen, damit ins Internet zu kommen und evtl. auch Dateien auf dem üblichen Weg von einem USB in dieses zu verschieben (auf gmx und so).
    Automatisch zusammengefügt:
    Dateien, die ich vom RPi ins Internet verschieben muss, würde ich dann einfach von einem anderen Computer auf eine zweite SD ziehen, diese dann schreibschützen und sie von der dann auf den RPi ziehen. Anschließend würde ich sie natürlich wieder "entschützen"

    Einmal editiert, zuletzt von RaspberryBaum (4. Juni 2016 um 13:32)

  • Ich denke das einfachste wäre, wenn du ein Raspbian (oder was auch immer) Image nimmst, es so konfigurierst wie Du es benötigst inkl. dem oben verlinkten varlog Script - und anschließend fügst du folgende Zeilen in /etc/rc.local ein:

    Code
    mount -o remount,ro /
    mount -o remount,ro /boot

    Hab ich zwar nicht getestet aber sollte funktionieren :fies:

    Problem ist allerdings (aber auch mit allen anderen Vorgehensweisen) das du das uneingeschränkte verwenden von sudo für den Benutzer pi abschalten solltest. Setz also ein gutes Password für root und editiere mithilfe des Befehls visudo den Eintrag für "pi" bzw lösch die Zeile. Denn sonst kann einfach jemand als "pi" daher gehen und "sudo mount -o remount,rw /" ausführen und dauerhafte Änderungen vornehmen

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!