GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kleinste eingebettete Linux-Distribution?

Ich würde sagen, du träumst. Das Hauptproblem wird der begrenzte Arbeitsspeicher sein.

Im Jahr 2004 gelang es Eric Beiderman, einen Kernel mit 2,5 MB RAM zum Booten zu bringen, mit viel der Funktionalität entfernt.

Das war jedoch auf x86, und Sie sprechen von ARM. Also habe ich versucht, den kleinstmöglichen ARM-Kernel für die „vielseitige“ Plattform (eine der einfachsten) zu bauen. Ich habe alle deaktiviert konfigurierbare Optionen, einschließlich derjenigen, nach denen Sie suchen (USB, WiFi, SPI, I2C), um zu sehen, wie klein es werden würde. Nun, ich beziehe mich hier nur auf den Kernel, und dieser enthält irgendwelche nicht Userspace-Komponenten.

Die gute Nachricht:Es passt in Ihren Blitz. Das resultierende zImage ist 383204 Byte groß.

Die schlechte Nachricht:Mit 256 KB RAM kann es nicht booten:

$ size obj/vmlinux
  text     data     bss     dec     hex filename
734580    51360   14944  800884   c3874 obj/vmlinux

Das .text-Segment ist größer als Ihr verfügbarer RAM, daher kann der Kernel nicht dekomprimieren, geschweige denn Speicher zum Booten zuweisen, geschweige denn irgendetwas Nützliches ausführen.

Eine Problemumgehung wäre die Verwendung der Execute-in-Place-Unterstützung (CONFIG_XIP), wenn Ihr System dies unterstützt (dh es kann Anweisungen direkt aus Flash abrufen). Das bedeutet jedoch, dass Ihr Kernel unkomprimiert in Flash passen muss und 734kB> 700kB. Außerdem sind die .data- und .bss-Abschnitte insgesamt 66 kB groß, sodass etwa 190 kB für alles andere übrig bleiben (dh alle dynamisch zugewiesenen Datenstrukturen im Kernel).

Das ist nur der Kern. Ohne die benötigten Treiber oder Userspace.

Also, ja, Sie werden etwas mehr RAM brauchen.


IMO, du träumst. Besonders bei USB, Netzwerk und 802.11/WLAN. Ich glaube einfach nicht, dass Sie das tun können, und M3 ist wirklich eine Strecke.

OpenWRT ist eine der kleinsten und am besten integrierbaren Linux-Distributionen, die ich für Netzwerke kenne, und es ist schwierig, diese unter 2 MB zu bekommen, besonders mit Wifi.

Versuchen Sie, sich nach höherwertigen ARM-Chips umzusehen, wenn Sie das wirklich wollen, oder entscheiden Sie sich für die Broadcom- oder Atheros-SoCs, die derzeit in Routern üblich sind.


Hast du MMU auf dem Prozessor? Wenn Sie dies nicht tun, sollten Sie sich Folgendes ansehen:http://www.uclinux.org/, das Ihnen eine viel kleinere Kernelgröße als erwähnt geben sollte. Es funktioniert für einige CortexM3-Atmel-Chips, also könnte es für Ihre funktionieren. Ich habe es nicht verwendet, also ist dies nur spekulativ. Doh, ich habe gerade gesehen, dass diese Frage aktualisiert wurde - nun, wenn Sie kein MMU haben (was Sie wahrscheinlich nicht haben), können Sie keinen "normalen" Kernel und Sie verwenden müsste ucLinux verwenden.


Linux
  1. Der Lebenszyklus des Linux-Kernel-Testens

  2. So aktualisieren Sie den Kernel auf dem Linux-Desktop

  3. Linux – Kernel:Namespaces-Unterstützung?

  4. Erstellen einer Wiederherstellungspartition in Embedded Linux?

  5. Erhöhen Sie die Scrollback-Puffergröße des Linux-Terminals

Linux-Kernel vs. Mac-Kernel

Linux-Kernel und seine Funktionen

Was tun bei einer Linux-Kernel-Panik?

Microsofts Linux-Distribution:CBL-Mariner

Vollständiges Handbuch zur Linux-Protokollierung

Linux – Diagramm des Linux-Kernels vs. Performance-Tools?