Ich erstelle eine einbettbare Remote-Anwendung, die nicht dauerhaft eingeschaltet ist. Ich habe mit verschiedenen Betriebssystem-Distributionen herumgespielt und kann die Zeit zum Booten erheblich verkürzen, indem ich bessere SD-Karten mit höheren Lesegeschwindigkeiten verwende. Ich bin nicht auf eine bestimmte Distribution festgelegt, daher kann ich so viel wie nötig reduzieren, um eine minimale Linux-Distribution zu verwenden.
(Ich habe versucht, nach Benchmarks zu suchen, die die Leute verwendet haben, um die Startzeit zu verbessern, aber ich habe mit harten Zahlen nichts gefunden.)
Ich könnte auch build root verwenden (siehe auch YouTube-Video Raspberry Pi - Superschnelle Startzeit - Marshmallow Entertainment System ) ...
Antworten:
Wenn Sie Arch Linux mit den von Fred vorgeschlagenen Funktionen kombinieren, sollten Sie ein im Allgemeinen schnelles Boot-Betriebssystem erhalten.
Was die Startzeiten des Betriebssystems verlangsamt, ist
Langsame Lese- / Schreibgeschwindigkeiten (E / A).
So haben Sie eine schnellere SD - Karte wird helfen,
eine Class 10 - Karte wird wesentlich schneller als eine Klasse 4 Karte. Ich habe falsch verstanden, wie SD-Karten-Klassen funktionierten, und das wurde in den Kommentaren ziemlich deutlich herausgestellt, meine schlechte. Tatsächlich ist eine Class 10-Karte für große Dateiübertragungen wie HD-Video und so weiter schneller als eine Class 4-Karte . Anscheinend funktioniert Klasse 4 auch mit kleineren Dateien. Wieder, meine schlechte, aber hey, wir alle lernen ab und zu.Eine verklemmte Init-Sequenz.
Wenn Sie viele Softwareprogramme haben, die während der Startphase gestartet werden, wird die Startzeit langsamer. Mehr Software ab == Längere Startzeit.
Wenn Sie also einen schnellen Start benötigen, schneiden Sie so viel Software wie möglich von der Initialisierungssequenz ab. Sie können ein einfaches Skript erstellen (oder ich bin mir sicher, dass es eines gibt), das die Software startet, nachdem die Hauptstartsequenz abgeschlossen ist, wodurch die Last ein bisschen mehr verteilt wird.
Das war's im Grunde. Arch Linux ist wahrscheinlich der richtige Weg, kombiniert mit den Funktionen, die Fred erwähnt hat, wie ich bereits sagte. Arch ist ein sehr minimales Betriebssystem und möglicherweise nicht das Beste für Anfänger. Wenn Sie jedoch Erfahrung mit Linux haben, sollten Sie es ausprobieren. Es ist nur ein bisschen Einrichten erforderlich, da die Installation auf ein Minimum beschränkt ist und das war's .
Hoffe, Ihr Projekt geht gut!
quelle
Ich schlage vor, Arch Linux zu verwenden.
Ich erhalte eine normale Boot-Zeit von 5s (Kernel) + 5s (zu Userspace) und es erfordert nicht viel Aufwand, da es
systemd
für init verwendet wird.quelle
systemd
macht viel Unterschied im Vergleich zusysvinit
. Siehe meine Antwort .Ich habe hier einen Artikel darüber geschrieben.
Kurzum: verwenden
systemd
.Sie können Ihre RaspberryPi-App problemlos in weniger als 8 Sekunden nach dem Einstecken des Netzkabels oder in weniger als 3 Sekunden nach dem Start des Linux-Starts zum Laufen bringen .
Ein Beispiel hier, mein Dienst heißt
samplerbox.service
:Hinweis: Ich habe nicht versucht, die Benutzerbereichszeit zu optimieren, da ich sie nicht benötige: Meine App startet sowieso früh. Es macht mir also nichts aus, wenn die Netzwerk-DHCP / IP-Zuweisung 8 Sekunden nach dem Start meiner App dauert.
quelle
Die optimale Lösung besteht wahrscheinlich darin, eine Distribution zu erstellen, die nur genau das tut, was Sie möchten. Auf diese Weise werden minimale Zeiten garantiert (unter Verwendung eines minimalistischen Init-Systems wie sinit ). Alternativ können Sie die Suspend-to-Disk-Funktion ( Ruhezustand ) des Linux-Kernels verwenden. Nach dem Booten sind die Vorgänge zum Anhalten und Fortsetzen später ziemlich schnell und das System ist in der Zwischenzeit vollständig ausgeschaltet.
quelle
Die Verwendung eines statisch verknüpften Kernels anstelle von Modprobing-Treibern kann die Leistung ebenfalls erheblich steigern. Es müssen noch weitere Optimierungen vorgenommen werden, indem ein Kernel sorgfältig konfiguriert und neu kompiliert wird.
quelle
1) Do this in command line, 2) Do this and this 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds! 5) Here is the result of my benchmarks: ...
)Verwenden Sie TinyCoreLinux . Es wurde für schnelles Laden und zum Überstehen von Stromausfällen entwickelt.
quelle
1) Download an image here: +link 2) Flash it on your microSD 3) Modify this and this in config.txt 4) Boot, it will take 3.2 seconds!
)Sie können versuchen, den Startvorgang mit eINIT zu beschleunigen: http://sourceforge.net/projects/einit/
Zur Zeit (Okt. 2016) stellt die eINIT-Homepage leider fest:
quelle
Entfernen Sie alle Kernelmodule, die Sie nicht verwenden.
quelle