Der Pi verwendet ein EXT4- oder EXT3- oder FAT-Dateisystem, das nicht für Low-Level-Flash-Geräte gedacht ist. Es funktioniert möglicherweise sehr gut auf Flash-Geräten, die interne (und versteckte) Verschleißausgleichstechniken verwenden (wie heutzutage SSD), aber nicht auf einfachen Flash-Geräten, in die keine fortgeschrittenen Verschleißausgleichstechniken eingebettet sind.
Bei einfachen Flash-Geräten sind Dateisysteme wie JFFS2 oder UBIFS so konzipiert, dass sie die Verschleißnivellierung auf Dateisystemebene durchführen und sicherstellen, dass die Verschleißnivellierung angewendet wird und etwas effektiv ist. Diese Dateisysteme werden üblicherweise auf eingebetteten Plattformen verwendet, bei denen das Flash-Laufwerk ein auf der Leiterplatte des Systems montierter Flash-Chip ist. Solche Flash-Chips haben nichts eingebettet: Die von Ihnen angegebene Adresse ist die Adresse der Zelle. Keine Magie! JFFS2 erledigt die Aufgabe, den Verschleiß auszugleichen und die Schreibvorgänge usw. zu verzögern. Aber mehr als das: Es lügt das System nicht an. Wenn JFFS2 sagt, dass die Daten auf das Medium geschrieben und gelöscht werden, ist dies der Fall!
Meine Frage ist: Ist es möglich, eine Root-Partition zu haben, die JFFS2 oder UBIFS anstelle von EXT4 verwendet, was hier nicht sehr gut funktioniert?
Ich weiß, dass die Boot-Partition in FAT sein muss, aber das ist kein Problem, da sie schreibgeschützt ist. Aber wo ist das Problem, die Root-Partition in JFFS2 oder UBIFS zu haben?
Es gibt viele Leute, die sich über die Beschädigung von Daten beschweren und dass das Tragen der SD-Karte nicht unter Kontrolle ist, aber ein Teil der Lösung besteht darin, das richtige Dateisystem für das richtige Medium auszuwählen.
Was ist das Problem damit? Ich habe keine Leute gesehen, die ein geeignetes Dateisystem verwendet haben. Gibt es irgendwo eine Einschränkung?
quelle
Antworten:
Es ist möglich. Und ich lasse meinen Pi damit laufen.
Zunächst jedoch ein großer fetter roter Hinweis: Bitte lesen Sie die JFFS2-FAQ sorgfältig durch . Lesen Sie weiter, nachdem Sie es gelesen und vollständig verstanden haben und immer noch der Meinung sind, dass es Ihren Anforderungen entspricht.
Sie müssen Ihren Kernel neu kompilieren. Die JFFS2-Unterstützung wird als Modul in Raspbian kompiliert . Wir brauchen es im Kernel kompiliert . Möglicherweise möchten Sie den Kernel von Raspbian neu kompilieren oder einen Upstream-Kernel verwenden. Informationen zum Upstream-Kernel finden Sie in diesem eLinux-Artikel . Als FYI habe ich den Upstream-Kernel verwendet.
Damit JFFS2 auf einer SD-Karte ausgeführt werden kann, müssen Sie einen Kernel-Trick mit dem Namen verwenden
block2mtd
.block2mtd
emuliert ein mtd-Gerät basierend auf einem Blockgerät (reguläre Blockgerätepartition).block2mtd
Ball wird im Kernel erst ab Version 4.0 auf Raspberry Pi während des Startvorgangs gut gespielt. Wenn Sie versuchen, einen Kernel zu kompilieren, der gleich oder kleiner als 4.0 ist, müssen Sie diesen Patch anwenden . Wenn Sie die wichtigsten Details erfahren möchten, lesen Sie die ausführliche Diskussion unter lkml .Nachdem Sie Ihren neuen Kernel erfolgreich erstellt und gestartet haben , müssen Sie Ihre JFFS2-Daten erstellen. Erstellen Sie Ihr Image und stellen Sie sicher, dass Sie das hinzufügen
EBS
(Blockzusammenfassung löschen; beschleunigt das Mounten). Verwenden Sie eine Blockgröße von 64 KB . So erstellen Sie das JFFS2- Image : Bitte lesen Sie dies . Ich empfehle dringend, diesen Schritt auf einem PC auszuführen.Um das Image zu schreiben, führen Sie einfach den
dd if=<jffs2 image> of=/dev/mmcblk0p<JFFS partition number>
Pro-Tipp aus : Behalten Sie Partition 1 zum Booten, 2 bisext4
(Fallback) und 3 bis JFFS2.Nachdem Ihre SD-Karte einsatzbereit ist, bearbeiten Sie Ihre
boot.scr
(vorausgesetzt, Sie verwenden einen Upstream-Kernel und damitu-boot
) und definieren Sie Ihre Boot-Cmdline wie folgt:Erstellen Sie Ihren neu
boot.scr
(überprüfen Sie den Abschnitt Erstellen Ihres Bootloaders ).Und schließlich starten Sie Ihren Pi neu.
Randnotizen:
F: Wie lange führen Sie ein solches Setup aus? A: 7 Monate; Arbeiten wie ein Zauber.
F: Was ist mit der Geschwindigkeit? A: Wenn Sie Geschwindigkeit benötigen, ist JFFS2 nicht Ihre Lösung. Schließen Sie eine Festplatte an, verwenden Sie die SD-Karte als Bootloader und booten Sie stattdessen von der Festplatte.
F: Die Montage meines Bildes dauert ewig! A: Haben Sie die
EBS
Option hinzugefügt ? Auch für einen Baseballstadion; Eine 2-GB-Partition benötigt ca. 110 Sekunden auf meinem Pi zu montieren.Viel Glück!
quelle
Aus Wikipedia:
Quelle: http://en.wikipedia.org/wiki/Flash_memory#Flash_file_systems
Quelle: http://en.wikipedia.org/wiki/Memory_technology_device
Nein, es gibt keinen Anwendungsfall für JFFS2 oder UBIFS auf der SD-Karte, die Sie in den Pi eingelegt haben.
Es gibt andere Lösungen, um den Verschleiß der SD-Karte zu verringern, z. B. die Montage mit Option
relatime
odernoatime
.quelle