Wie erstelle ich ein benutzerdefiniertes Betriebssystem für Raspberry Pi von Grund auf neu?

10

Ich bin neu im Kernel und Embedded Linux. Ich habe kürzlich einen Raspberry Pi gekauft und ihn mit dem Raspbian gebootet. Der Pi hat mich fasziniert. Um mehr über Embedded zu erfahren, habe ich mich für ein Hausautomationssystem entschieden. Ich wollte meinen eigenen Kernel verwenden und stapeln. dh ich möchte kein Betriebssystem verwenden.

Dafür habe ich Kernel, target_fs, Firmware und Tool-Chain vom offiziellen Github heruntergeladen. Ich habe den Kernel mit der Toolkette kompiliert.

Jetzt weiß ich nicht, wie ich das auf eine neue SD-Karte setzen soll (formatiert für einen Neuanfang). Was muss ich alles beachten, bevor ich meinen Stack boote? Wie kann ich wissen, dass der Start erfolgreich war, da ich keinen SSH- oder Telnet-Server / Client eingerichtet habe? Wo kann ich einen ssh / telnet-Daemon für den pi bekommen? Mein Ziel ist es, nur den Kernel (oder das absolute Minimum) im Raspberry Pi zu booten.

Zentaur
quelle
2
Dies ist eine Herkulesaufgabe, und ich glaube, Sie haben noch nicht genug Erfahrung. Sie möchten nur eine vorhandene Distribution anpassen und 99% der Zeit sparen?
Thorbjørn Ravn Andersen
Mir ist klar, dass dies ein bisschen alt ist, aber ich habe kürzlich etwas über MLL gelernt, eine andere Möglichkeit, ein minimales Linux-Betriebssystem zu erstellen. Als Linux-Neuling fand ich MLL maßgeblich am Erlernen des Prozesses. Ich erforsche derzeit den Prozess, mit dem die Raspberry Pi-Treiber in den Build aufgenommen werden sollen. MLL minimal.linux-bg.org/#home Viel Glück!
Rob

Antworten:

9

Der Kernel erwartet zwei Dinge: ein Root-Dateisystem und einen initDaemon, der sich darauf befindet. Das in raspbian enthaltene init ist ein System im sysV-Stil . Sie sind nicht daran gebunden - andere Init-Systeme, die üblicherweise unter Linux verwendet werden (denken Sie daran: Der Kernel ist Linux ), sind systemdund upstart-, aber Sie benötigen ein Init-System.

Sie können auch initein initramfs einfügen und es in den Kernel einbauen lassen. In diesem Fall könnten Sie ohne ein Root-Dateisystem davonkommen, aber das scheint in diesem Fall sinnlos.

initist die einzige Userland-Anwendung, die vom Kernel gestartet wird. Normalerweise werden dann Prozesse gestartet, die ttys mit einem Login öffnen, und dann andere Dienste, die möglicherweise einen Display Manager, sshd usw. starten. Möglicherweise benötigen Sie den Login nicht, möchten aber wahrscheinlich den tty; Sie können stattdessen auch einfach sshd direkt starten.

Wo kann ich einen SSH / Telnet-Daemon für den Pi bekommen?

Holen Sie es sich von dem Ort, an dem Raspbian es getan hat, der Upstream-Quelle. Keines dieser Sachen wurde speziell für den Pi geschrieben. Oder zumindest sehr, sehr wenig davon. Es wurde auf einer Vielzahl verschiedener Systeme verwendet.

Wenn Sie eine für das Pi vorkompilierte möchten ... nun, das ist Raspbian usw. 1

Ich weiß nicht, wie ich das auf eine neue SD-Karte setzen soll

Sie müssen den pi-spezifischen Bootloader verwenden, der sich in der /bootPartition des Raspbian-Images befindet.


1. Um ehrlich zu sein, ich denke, Sie befinden sich auf einer massiv quixotischen Suche, die Sie aufgrund des Wissens, das Ihre Frage impliziert, praktisch nicht hoffen können, dieses Jahr zu erreichen, es sei denn, Sie kündigen Ihren Job und widmen sich dem Vollzeitlernen Selbst dann ist Ihre Ausfallwahrscheinlichkeit sehr hoch und es wird Monate dauern, bis Sie einen Punkt erreichen, an dem Sie Erfolgschancen haben. Es ist nicht einfach. Es ist nicht einfach. Das heißt, selbst wenn Sie versagen, werden Sie wahrscheinlich einige nützliche Dinge auf dem Weg lernen. Möglicherweise sollten Sie jedoch besser lernen, eine vorhandene Distribution (z. B. Raspbian) zu verstehen und sie zum Erstellen Ihres Hausautomationssystems zu verwenden.

Goldlöckchen
quelle
1
quixotic ? Du bist einer der wenigen Menschen, die ich kenne und die meinen Wortschatz routinemäßig herausfordern. +1 allein dafür.
Jacobm001
7

Ich denke, Sie haben das falsche Konzept, eingebettete Computer zu verwenden (insbesondere auf Raspberry Pi-Ebene). Wenn Sie wirklich ein benutzerdefiniertes Betriebssystem erstellen möchten, empfehlen wir Ihnen, unter Linux von Scratch, LFS, http://www.linuxfromscratch.org/ aus zu starten. Wenn Sie jedoch Embedded Computing verstehen möchten, beginnen Sie mit dem Googeln von "Embedded Systems", Wikipedia oder Embedded Linux Wiki http://elinux.org/Main_Page .

Joe Zilch
quelle
1
+1 für LFS. Ich würde das allerdings in einer Cross-Compile-Umgebung tun wollen!
Goldlöckchen
-1

Ich hatte das gleiche Problem. Genau zu diesem Zweck habe ich eine Sammlung von Shell-Skripten erstellt.

http://www.dettus.net/detLFS

Thomas Dettbarn
quelle
Willkommen bei Raspberry Pi! Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Steve Robillard