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.
Antworten:
Der Kernel erwartet zwei Dinge: ein Root-Dateisystem und einen
init
Daemon, 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 ), sindsystemd
undupstart
-, aber Sie benötigen ein Init-System.Sie können auch
init
ein 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.init
ist 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.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
Sie müssen den pi-spezifischen Bootloader verwenden, der sich in der
/boot
Partition 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.
quelle
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 .
quelle
Ich hatte das gleiche Problem. Genau zu diesem Zweck habe ich eine Sammlung von Shell-Skripten erstellt.
http://www.dettus.net/detLFS
quelle