Liebe Leserinnen, liebe Leser,

Raspberry Pi Model 1B

viele Leute haben über den Kreditkartengroßen Einplatinencomputer Raspberry Pi schon gehört, deswegen werde ich die Einführung auslassen. Trotzdessen werde ich einen meiner Gedanken und meine Erfahrungen teilen, die ich nach dem Erwerb erlebt habe. Ich habe einen alten Model B (dank meinem Bruder) bekommen, die zweimal so viel Arbeitsspeicher (512 MB) als Model A hat. Diese Tatsache ermöglicht die Ausführung eines volligen Gentoo-Systems, und das ist genau was ich getan habe. Lass uns das Rad der Zeit ein bisschen zuerst zurückdrehen.

Sofort nach dem Erwerb des RaspPis habe ich die allgemein bekannte Raspbian eingespielt, weil es eine gute Wahl ist, wenn man sich mit RaspPi erstmals bekannt machen will. Nach dem Anlauf des Systems war mein erster Eindruck, dass es aufgebläht ist. Verzeichung Leute, aber ich habe das gefühlt. Nachdem ich die Menüs völlig untersucht habe, wurde mein erster Eindruck bekräftigt. Dieses Betriebsystem enthält zahlreiche Pakete, die ganz unnötig auf einem Kleincomputer zu sein scheinen, wie z.B. LibreOffice, Timidity, Jack, usw. Anstatt eine Zensierung des Systems oder ein Top-Down-Ansatz zu folgen (um einen wissenschaftlichen Begriff zu verwenden), habe ich mich entschieden, das Bottom-up-Ansatz zu benutzen, um ein System zu bauen, das meine Voraussetzungen auf die beste Weise passen wird.

Um das zu schaffen, habe ich eine Distribution ausgewählt, die bei der Anpassung des Systems ausgezeichnet ist, namens Gentoo. Früher habe ich mich mit dieses System schon ausgekennt, weil ich es täglich auf meinem Laptop verwende, und somit war es ein Selbstgänger, ein Grundsystem auf RaspPi einzuspielen. Es war doch nicht ohne Schwierigkeiten. Gemäß manche Online-Voraschläge habe ich die Wurzelpartition der SD-Karte mit F2FS formatiert, weil es von Grund auf an für Flash-Speicher entworfen wurde. Als es sich herausstellte, war das ein Fehler, dieses Dateisystem zu benutzen. Kurzerhand wurde das Dateisystem ohne offensichtliche Gründe für Überprüfung beflaggt, und das System startete nicht mehr, bis das Problem bewältigt wurde. Obwohl ich das passende Fsck-Werkzeug ausgeführt habe, hat das nicht geholfen. Die SD-Karte musste erneut mit etwas Geprüftes und Ausprobiertes formatiert werden, deswegen habe ich ext4 gewählt.

Ext4 ist ein ausgezeichnetes Dateisystem, aber man soll das überlegen, ob es eine so gute Alternative für SD-Karten wie für andere Arten von Speicher (SSD) ist. Gentoo vertraut sich so stark auf der Leistung des Laufwerks zum Beispiel bei Systemaktualisierung, dass es unbedingt wichtig ist, das schnellste Laufwerk zu verwenden. Aus diesem Grund mounten Leute, die in ihrem Computer genug Arbeitsspeicher dafür haben, die /tmp Verzeichnis (in dem während der Aktualisierung die meiste Aktivitäten passieren) zu einem sogenannten Ramdisk (namens tmpfs), um die höhste Leistung zu erreichen. Weil der RaspPi nur eine beschränkte Menge von Arbeitsspeicher hat, ist die Nutzung von tmpfs für /tmp nicht vorzuschlagen. Stattdessen soll man sich ausschließlich auf die ganz langsame Datenübertragung der SD-Karte verlassen. Um das realtiv mühelos zu schaffen, sollte man das sicherstellen, dass es keine aus dem Dateisystem stammenende unnötige Beschränkungen gibt.

Um es herauszufinden, ob ext4 eine wesentliche Auswirkung an die IO-Leistung hat, habe ich einige Tests an fast gleiche ext4 Partitionen gemacht. Eine hat Journaling eingeschaltet und die andere ausgeschaltet. Ich habe dd und fio für die Tests verwendet. Das zweite ermöglicht eine sehr detaillierte Anpassung der Tests, wie z.B. die Größe der les/schreib Blocks, das Verhältnis von Lesen und Schreiben, die Menge der zu schreibenen Dateien, usw. Einfach gesagt ist das das Schweizer Messer der IO-Tests. Weil beide Werkzeuge zu ähnlichen Ergebnissen geführt haben, werde ich nur die fio-bezogenen Ergebnisse teilen. Ich habe das folgende Kommando für die Benchmarking der Partitionen verwendet (weitere Erklärungen sind in der dazugehörigen Anleitung zu finden):

shell

 fio --randrepeat=1 --ioengine=posixaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=8 --size=256M --readwrite=randrw –rwmixread=50

ext4 mit ausgeschalteter Journaling:

shell

 read : io=130768KB, bw=247263B/s, iops=60, runt=541553msec  
 write: io=131376KB, bw=248413B/s, iops=60, runt=541553msec

ext4 mit eingeschalteter Journaling:

shell

 read : io=130768KB, bw=246615B/s, iops=60, runt=542976msec  
 write: io=131376KB, bw=247762B/s, iops=60, runt=542976msec

Wie es offensichtlich ist, gibt es keinen Leistungsunterschied zwischen der zwei Dateisysteme, deshalb könnte man das unbesorgt vermuten, dass wegen der reduzierten Laufwerk-IO das Ausschalten der Journaling die Lebensdauer der SD-Karte erhöhen wird. Mit diesen Kenntnissen könnte man problemlos die /tmp Verzeichnis in dem ursprünglichen Platz lassen, aber es gibt eine Sache zu überlegen: viele SD-Karten haben Wear-Leveling, aber nicht alle. Wenn es unbekannt ist, ob eine Karte es hat oder nicht, wäre es eine gute Idee, die /tmp Verzeichnis zu einer gesonderten Partition zu mounten, sodass die meiste Schreiben außer der Systempartition geschehen.

Aufmerksame Leser hätten schon eine vernünftige Frage gestellt: Falls ich nach der Installtion des Systems das Dateisystem manipuliert habe, musste ich das ganze System mal wieder einspielen? Nein. Glücklicherweise ist das Linux Betriebsystem genung flexibel darauf nicht zu achten, auf welcher Partition es in der Wirklichkeit eingespielt ist. Das ermöglicht ein super einfaches Backup und Wiederherstellung des Systems, weil die einfachsten Werkzeuge wie tar dafür beutzt werden können. Ich habe für die Sicherung des ganzen Systems das folgende Kommando verwendet:

shell

 tar -cpjf /tmp/Rpi-img.tar.bz2 .

Achten Sie bitte darauf, dass dieses Kommando nur in der Wurzelverzeichnis der zu sicherenden Partition verwendet werden soll. Weiterhin sollte man sehr achtsam während der Wiederherstellung des Systems sein. Ich benutze das folgende Kommando:

shell

 tar -xpjf Rpi-img.tar.bz2 -C /run/media/username/sdcardrootpart –numeric-owner

Nach weiteren Einspielungen und Aktualisierungen sieht das Grundsystem so aus: Das System läuft mit 13 MiB verbrauchter (+33 MiB gecacht) Arbeitsspeichernutzung und 2,4 GiB Plattennutzung an, das, meiner Meinung nach, sehr nett ist. Man könnte behaupten, dass 2,4 GiB Plattennutzung ein bisschen zu viel für ein Grundsystem ist, aber wenn man bedenkt, dass Gentoo alle Quellarchive der eingespielten Pakete absichtlich speichert, ist das plötzlich nicht so viel. Wenn diese Quellarchive entfernt würden, könnte zirka 491 MiB Speicherplatz freigemacht werden, und das würde zu einer freundlicheren Systemgröße von 2,0 GiB führen. Nach der Komprimierung des Systems (Quellarchive einschließlich) zu einem bzip2-Archiv bekommt man ein Archiv von 865 MiB Größe. Nach der Entfernung der Quellarchive würde dieses Systemsarchiv eine Größe von weniger als die hälfte haben, die das Archiv sehr transportabel machen würde.

Memory usageArbeitsspeichernutzung und Plattennutzung eines neuinstallierten, minimalstischen Gentoo-Systems auf einem Raspberry Pi

Also, wie geht’s weiter? Z.B. ist es an der Zeit, ein paar Sachen einzuspielen und anzupassen, wie distcc, Hardware-basierter Zufallszahlengenerator, make.conf, Leistungtests, usw. Ich hoffe, dass dieser Beitrag Ihr gefällt, also besuchen Sie bitte halbregelmäßig diese Webseite für neue Beiträge.

Vielen Dank fürs Lesen.