Läuft auf schreibgeschützter SD-Karte

20

Ich habe den Raspberry Pi so eingerichtet, dass er XBMC ausführt, und ich möchte, dass er hochfährt, um immer eine Wiedergabeliste und Dateien auf der SD-Karte abzuspielen. Ich habe das automatische Update von Raspbmc deaktiviert. Es läuft immer noch in Ordnung, wenn ich die SD-Karte in die "Lock" -Position schalte. Jetzt sind meine Fragen:

  1. Funktioniert das schreibgeschützte SD-Kartensystem in meiner Anwendung die ganze Zeit?

  2. Da sich die SD-Karte immer im schreibgeschützten Modus befindet, kann das System beschädigt werden, wenn ich den Befehl zum Herunterfahren nicht verwende und nur den Netzschalter ausschalte.

  3. Auch wenn dies zuverlässig funktioniert, wird immer die Meldung "Raaspbmc wurde nicht ordnungsgemäß heruntergefahren" angezeigt. Gibt es eine Möglichkeit, diese Meldung beim Einschalten des Pi zu deaktivieren?

hyiu00
quelle
1
Wenn dies zuverlässig funktionieren soll, müssen Sie sicherstellen, dass die entsprechenden Dateisysteme auch als schreibgeschützt bereitgestellt sind.
Jivings

Antworten:

14

Ich hatte eine ähnliche Verwendung. Ich verwende den Pi, um Webseiten in einem Gebäudeeingang einzugrenzen. Stromversorgung des Pi über den USB-Anschluss des Fernsehgeräts.

Mount / schreibgeschützt.

Um es stromausfallsicher zu machen, habe ich es durch Ändern einer Zeile eingehängt / schreibgeschützt /etc/fstab

/dev/mmcblk0p2  /               ext4    defaults,noatime,ro  0       1

Ziemlich einfach. Einige Prozesse auf einer funktionierenden Maschine müssen jedoch schreiben.

Mount / tmp im Speicher.

Viele Dinge schreiben, /tmpalso habe ich das im Speicher gemountet, indem ich eine Zeile hinzugefügt habe/etc/fstab

tmpfs           /tmp            tmpfs   defaults,size=30M    0       0

Ich hatte einen 512MB Pi zur Verfügung, also habe ich / tmp 30M groß gemacht.

Deaktivieren Sie Dienste, die ich nicht schreiben muss.

Ich habe es deaktiviert rsyslog, um die Protokollierung zu stoppen, und dphys-swapfileda es keinen richtigen Platz zum Schreiben gibt. Das Laufen ohne Tausch bereitet Probleme, wenn Sie ein schweres, speicherintensives Heben ausführen. In meinem Fall läuft ein einzelner Midori-Prozess für einen Tag, nicht wahr? cat /etc/rc2.d/READMEauf Ihrem Pi, wie das geht. (raspbian startet standardmäßig in runlevel 2, raspbmc kann abweichen)

Lassen Sie Dienste , die ich tun faux-Schreib müssen.

Sie können einen Schreibzugriff auf ein Dateisystem im Speicher bereitstellen, wie dies bei einer Live-CD der Fall ist. mit einem Union Mount . Aber die Aussicht, meinen eigenen Kernel für unionfs oder das spätere aufs zu übersetzen, gefiel mir nicht . Zum Glück unionfs-fuseist vorgefertigt vorhanden. Es kann nicht gewerkschaftlich montiert werden /, aber brauche ich das wirklich?

Mit midori brauche ich X, um zu arbeiten. X möchte schreiben, /home/piwährend ich mich als pi /varanmelde, und an einigen Stellen in habe ich beschlossen, diese mit unionfs an Stellen anzubringen.

# move original /var and /home aside
mkdir /ro
mv /var /ro
mv /home /ro
# create mount points
mkdir /var /home

und fügte 2 Zeilen an /etc/fstab

unionfs-fuse#/tmp=rw:/ro/var=ro  /var  fuse   cow,allow_other,nonempty
unionfs-fuse#/tmp=rw:/ro/home=ro  /home  fuse   cow,allow_other

Dies ist ziemlich böse, da alle Schreibvorgänge in / var, / home und / tmp in / tmp enden. Aber ich brauche nur meine Maschine für 8 bis 10 Stunden zu laufen, und dann wird der Strom abgeschaltet. Das wird also reichen.

Lese- / Schreibzugriff beim Ändern von Inhalten wird erneut aktiviert

Als ich das Netzwerk wechselte /etc/resolv.conf, funktionierte der Dhclient nicht mehr.

$ sudo mount / -o remount,rw
$ ifdown eth0; ifup eth0
$ sudo reboot

Vergessen Sie nicht, das System sauber herunterzufahren oder ro nach dem erneuten Einhängen von rw erneut einzusteigen.

PS

Wenn Sie Deutsch lesen können, gibt es einen saubereren Weg (von archive.org). Deutsche Gründlichkeit ...

Chris Wesseling
quelle
4

Der Stift für die Position der SD-Kartensperre ist auf der Platine überhaupt nicht angeschlossen, sodass Ihre Sperrung virtuell ist, es sei denn, die Karte verfügt über einen internen Sperrmechanismus. Versuchen Sie, etwas auf die SD-Karte zu schreiben, während sie gesperrt ist, und überprüfen Sie es selbst.

avra
quelle
4

Der Nur-Lese-Schalter von SD ist bestenfalls eine Softwareoption. Fast jedes Gerät, das ich habe, wird es ignorieren, und wenn der Kommentar von avra richtig ist, kann der Raspberry Pi möglicherweise nicht erkennen, ob er ein- oder ausgeschaltet ist. Also zu deinen Fragen:

  1. Ja, es wird funktionieren, da es nicht schreibgeschützt ist.
  2. Ja, es wird Ihr System beschädigen. Sie müssen sich mit dem schreibgeschützten Mounten von root befassen und ein kleines RAM / Tempfs-Dateisystem für die Dinge haben, die Linux im Auge behalten muss.
  3. Nein, da die Wahrscheinlichkeit groß ist, dass Sie das Dateisystem beschädigt haben.
scruss
quelle
Die Antwort von @avra ist insofern richtig, als der physische Schalter, der die Position des Schreibschutzschiebers auf den in früheren RPis verwendeten SD-Karten in Standardgröße erkannt hat (ich bin mir nicht sicher, welche Karten in Mikrogröße ich anscheinend nicht habe) habe so etwas) ist mit nichts verkabelt (das sind die kontakte an der seite des kartenhalters) der andere schalter (an der unterseite des kartenhalters) ist der "card-insert" schalter und der wird vom überwacht RPi.
SlySven
2
  1. Ich habe XBMC nicht verwendet, aber dies ist keine gute Idee, WRT für ein normales Betriebssystem zu verwenden, es sei denn, Sie müssen einige Schritte unternehmen, um es für diesen Zweck einzurichten. Wenn XBMC nicht explizit so eingerichtet ist, ist dies implizit auch keine gute Idee.

  2. Wenn die Karte wirklich schreibgeschützt ist , wird sie Ihr System NICHT beschädigen. Wenn sie jedoch wirklich schreibgeschützt ist, ist es unwahrscheinlich, dass Sie an den Punkt gelangen, an dem Sie das Herunterfahren ausführen könnten. Wenn Sie dies getan haben (was wiederum bedeutet, dass Sie sicher sind , dass die gesamte Karte wirklich schreibgeschützt ist!), Müssen Sie das Herunterfahren nicht ausführen. Einfach den Stecker ziehen. Da sich nichts auf der Karte ändern kann, spielt es keine Rolle, was Sie tun.

  3. Sicher, Sie könnten die verantwortlichen init-Dateien finden und bearbeiten (natürlich muss das Dateisystem dafür beschreibbar sein).

Wenn Sie das Root-Dateisystem schreibgeschützt bereitstellen (was möglicherweise schwieriger ist als die Verwendung des Sperrschalters), wird der Start wahrscheinlich nicht erfolgreich sein, da das Betriebssystem auf die Festplatte schreiben muss. Wenn Sie dies jedoch tun, können Sie tun, was Sie wollen (und können damit davonkommen). Wenn die Karte schreibgeschützt ist, kann sie nicht geändert werden, sodass Sie keinen Schaden anrichten können.

Goldlöckchen
quelle
2

Wenn du es einfach tust

1.

/ dev / mmcblk0p2 / ext4 Standard, noatime, ro 0 1
/ dev / mmcblk0p1 / vfat Standard, noatime, ro 0 1
Sie haben ein volles Nur-Lese-System.

2.

Sie können Xorg mit folgendem Befehl starten: -logfile /tmp/Xorg.log. Suchen Sie nach anderen Diensten, die Schreibzugriff benötigen, und leiten Sie sie nach / tmp um

3.

Deaktivieren Sie, wie bereits erwähnt, den Dienst, den Sie nicht benötigen

insserv -r dphys-
swapdatei insserv -r rsyslog
insserv -r samba (falls installiert) etc

dann sollte es überhaupt kein problem geben. Die gute Frage ist, ob die SD-Karte wirklich überhaupt nicht beschädigt wird, wenn nur RO und die ganze Zeit Steckdose vorhanden sind ...

Endlich ein wunderschöner Startbildschirm und los geht's, Sie haben ein maßgeschneidertes, billiges Standalone-Gerät. :) Und ich liebe die Idee, den PI über den USB-Anschluss vom Fernseher mit Strom zu versorgen. Aber ist das nicht auf 500mA begrenzt? Nicht sicher, aber PI braucht ca. 1A oder nicht?

Okt.
quelle
dhcpclient muss die Datei /etc/resolv.conf und wahrscheinlich andere Speicherorte in / var schreiben. Schön, dass Sie die insserv-Befehle erwähnt haben, ich brauchte diese; Ich baue unsere Geräte um, um neue Zertifikate zu erhalten.
Chris Wesseling
1

Ein kurzer Blick in dieses Online-Dokument legt nahe, dass niemand eine Lösung für die neueste Version von XBMC veröffentlicht hat.

Wie Goldilocks betonte, ist das Hauptproblem, dass XBMC nicht mit der Absicht entwickelt wurde, es nur lesbar zu machen. Dieser Punkt wird weiter ausgeführt, wenn Sie sich diesen Thread im OpenELEC Media Center-Forum ansehen . Es besteht kein allgemeiner Konsens darüber, Kodi schreibgeschützt zu machen.

Der Grund laut User klojum war:

Es wird nicht passieren, dass OpenELEC auf einem schreibgeschützten Gerät ausgeführt wird. Kodi muss seine Datenbanken mit Videoinformationen speichern / aktualisieren. Die Systempartition wurde aus einem bestimmten Grund als schreibgeschützt eingerichtet. Alle Einstellungen gehen über die 2. / Speicherpartition. Daher ist es keine Option, dies über die Befehlszeile oder auf andere Weise zu entfernen. Die Wiederherstellung des Systems nach jedem Neustart ist verrückt. Installieren Sie OE, lassen Sie es nach Ihren Wünschen laufen und erstellen Sie ein vollständiges Backup / Image. Stellen Sie das bei Problemen wieder her

Es könnte einen Ausweg geben, da die Leute Workarounds für ältere Versionen gefunden haben, aber im Allgemeinen glaube ich nicht, dass dies notwendig ist.

Ich kann als jemand verstehen, der Kodi seit ein paar Jahren benutzt, dass eine SD-Karte beschädigt wird. Es gibt jedoch auch andere einfachere Möglichkeiten, um das Problem zu mindern, die kein Code-Basteln auf niedriger Ebene beinhalten.

Der Hauptgrund für die Beschädigung einer SD-Karte ist ein plötzlicher Stromausfall. Es gibt einige Gründe, warum dies passieren kann. Entweder unterbricht jemand die Stromversorgung des Pi während eines Schreibvorgangs auf die SD-Karte. Oder das System friert ein und Sie müssen die Stromversorgung trennen. Obwohl ich denke, der zweite Grund ist weniger wahrscheinlich, Korruption zu verursachen. Oder es deutet darauf hin, dass ein weiterer Fehler vorliegt.

In den Anfängen des Pi ließ der Stromversorgungskreis auf der Platine sicherlich zu wünschen übrig. Ich kann mich an die Tage erinnern, als ein Systemabsturz verursacht wurde, indem einfach ein USB-Dongle an den Pi angeschlossen wurde, während dieser eingeschaltet war. Wenn Sie mir nicht glauben, sehen Sie Probleme beim Ausführen von XBMC auf 2011 Raspberry Pi . Das andere Problem ist, dass die Software in den Anfängen noch nicht ausgereift war. Der Pi war eine andere Sicht auf das, was ein Desktop-Computer sein könnte, und das Herausbügeln von Softwareproblemen kostet Zeit. Viele neuere Versionen von Kodi sind daher weniger anfällig für zufällige Systemeinfrierungen.

Um das Problem des plötzlichen Stromausfalls zu lösen, schalten Sie Ihren Pi über eine unterbrechungsfreie Stromversorgung (USV) ein. Eine normale USV würde funktionieren, aber es gibt tatsächlich speziell von Pi entwickelte USVs. Wie diese unterbrechungsfreie Stromversorgung für Raspberry Pi . Wenn ein System einfriert, sollten Sie darauf vorbereitet sein. Dies bedeutet, dass Sie das Betriebssystem mit allen Einstellungen und Apps und Einstellungen nach Ihrem Geschmack einrichten und dann ein Image der SD-Karte erstellen. Wenn also etwas schief geht, können Sie die SD-Karte einfach neu belichten.

Der andere Grund, warum eine SD-Karte ausfällt, ist der Verschleiß. Dies ist jedoch kein Problem, das ich selbst erlebt habe. Wenn Sie eine hochwertige SD-Karte von einer renommierten Marke verwenden, sind Sie wahrscheinlich auf halbem Weg, um dieses Problem zu lösen. Um den Verschleiß der SD-Karte zu minimieren, müssen Sie sicherstellen, dass die SD-Karte das absolute Minimum leistet. Es sollte nicht als Speicherplatz für Ihre umfangreiche Sammlung von Filmen usw. verwendet werden.

Eine Option, die mit OpenELEC funktioniert, ist das Ausführen von einem USB-Laufwerk. Natürlich müssen alle Boot-Dateien auf der SD-Karte bleiben. Es gibt eine Reihe von Tutorials dazu. Es gibt eine, die hier recht einfach zu verfolgen ist , aber der Vollständigkeit halber gebe ich Ihnen einen Überblick:

Der erste Schritt ist das Einrichten der SD-Karte und des USB-Laufwerks. Wenn Sie ein Programm wie den MiniTool Partition Wizard verwenden, formatieren Sie die SD-Karte als FAT32 mit einer primären aktiven Partition von 150 MB oder mehr. Tatsächlich könnte die gesamte SD-Karte als FAT32 formatiert werden. Stellen Sie einfach sicher, dass die Partition auf primär aktiv gesetzt ist. Es kann auch nützlich sein, die SD-Karte als SYSTEM zu kennzeichnen, damit Sie sich daran erinnern, wofür sie in Zukunft gedacht ist. Formatieren Sie dann das gesamte USB-Laufwerk als eine primäre aktive Partition mit dem Dateisystemtyp EXT4, und bezeichnen Sie es erneut als STORAGE.

Nachdem Sie OpenELEC heruntergeladen und extrahiert haben, wechseln Sie in den Stammordner. Und wählen Sie diese Dateien aus:

openelec.ico
README.md

Kopieren Sie sie in das Stammverzeichnis der SD-Karte.

Als nächstes aus dem targetOrdner kopieren Sie die Dateien:

KERNEL
SYSTEM

Fügen Sie sie erneut in das Stammverzeichnis der SD-Karte ein.

Dann 3rdparty/bootloaderkopieren Sie aus dem Ordner die Dateien:

bootcode.bin
config.txt
fixup.dat
LICENCE.broadcom
start.elf

Fügen Sie sie in das Stammverzeichnis der SD-Karte ein.

Der letzte Schritt besteht darin, den Dateinamen der Datei KERNELauf der SD-Karte in zu ändern kernel.img.

Um die Startdateien zu erstellen, erstellen Sie im Stammverzeichnis der SD-Karte eine Datei mit dem Namen cmdline.txtund fügen Sie die folgende Zeile hinzu:

boot=/dev/mmcblk0p1 disk=/dev/sda1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 ssh

Achten Sie darauf, die Datei beim Speichern zu schließen. Und von dort aus können Sie loslegen. Die Informationsquelle schlug vor, XBMC von einem USB-Laufwerk auszuführen, was die Reaktionsfähigkeit erhöhte. Ich bin mir dieser Behauptung nicht so sicher, aber Sie werden keine Leistungseinbußen feststellen, wenn Sie diese Methode verwenden.

In Bezug auf Ihre Mediensammlung empfehle ich, diese auf einem zweiten Laufwerk zu speichern, unabhängig davon, ob es sich um einen USB- oder einen Netzwerkspeicherort handelt.

Darth Vader
quelle