Forum: Mikrocontroller und Digitale Elektronik Embedded Linux - Arm distribution mit kernel vereinen?


von Holger K. (holgerkraehe)


Lesenswert?

Hallo zusammen

Ich habe hier ein Allwinner A10 board mit welchem ich aktuell etwas 
experimentiere.

Ich habe mir für dieses Board ein u-boot erzeugt und auch einen kernel 
kompiliert. Ebenso einen Device-Tree für u-boot und kernel erstellt.

Nun fehlte mir ein RootFS. Ich habe aus früheren Versuchen noch ein 
minimales debian RootFS gehabt (~60MByte) alles auf eine SD-Karte 
gepackt, gebootet, läuft!

Nun wollte ich mehr. Also hab ich mir ein armbian gezogen (~450MB). Das 
rootfs aus dem Image kopiert, auf die SD -> booten. Läuft auch!

Nun ein Ubuntu Mate (https://ubuntu-mate.org/download/) ~2.5GB. Wieder 
das rootfs extrahiert, auf die bestehende SD mit meinem eigenen Kernel 
und eigenem U-Boot. Booten und? Läuft auch! Auch über HDMI.

Nun habe ich jedoch noch einige ungeklärte Fragen:

- zu jedem Kernel gehören ja die kernel spezifischen module. Diese 
liegen ja üblicherweise unter /lib/modules. In meinen Beispielen habe 
ich diese nicht kopiert. Sondern starte den eigenen Kernel (zImage) 
mittels U-Boot. Die Dateien der Distribution bleiben unberührt. War es 
reiner Zufall, dass das System bisher immer gestartet hat?

- Birgt mein Vorgehen Risiken in Bezug auf die Systemstabilität? Oder 
ist das RootFS derart stark vom Kernel abstrahiert, dass ich ohne 
weiteres RootFS (welche natürlich für die entsprechende Plattform armv7 
armhf kompiliert wurden) mit meinem Kernel vereinen kann?

- Nebst den Modulen gibt es ja auch noch den /lib/firmware ordner. Diese 
Dateien habe ich auch nicht ersetzt. Jedoch mag ich mich erinnern, dass 
dort ebenfalls Kernel spezifische Dateien liegen? Müsste ich diese wie 
auch die /lib/modules austauschen?

Vielen Dank an all diejenigen, welche sich die Zeit nehmen und mir 
helfen, diese Unklarheiten zu beseitigen.

Grüsse
Holger

von M.M.M (Gast)


Lesenswert?

Holger K. schrieb:
> Nun habe ich jedoch noch einige ungeklärte Fragen:
>
> - zu jedem Kernel gehören ja die kernel spezifischen module. Diese
> liegen ja üblicherweise unter /lib/modules. In meinen Beispielen habe
> ich diese nicht kopiert. Sondern starte den eigenen Kernel (zImage)
> mittels U-Boot. Die Dateien der Distribution bleiben unberührt. War es
> reiner Zufall, dass das System bisher immer gestartet hat?

Da niemand hier weiß, welchen Kernel Du wie erzeugt hast, wird sich die 
Frage wohl kaum beantworten lassen.

MfG

von Timmo H. (masterfx)


Lesenswert?

Wenn du alle notwendigen Module als Build-In gebaut hast und nicht als 
Loadable Kernel Modules, kannst du auch auf /lib/modules verzichten.
Und auch wenn du in /lib/modules Module liegen hast hast, können sie 
auch nur geladen werden wenn sie dem gleichen Kernel zugrunde liegen, da 
sie in /lib/modules/$(uname -r) erwartet werden.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Die Module werden ja nur gebraucht, wenn der entsprechende Treiber nicht 
fest im Kernel drinnen ist. Fuer embedded-Zeugs braucht's eigentlich 
keine Module - das ist eher sowas fuer irgendwelche Distries die auf zig 
verschiedenen PCs mit zig verschiedener Peripherie laufen sollen.
Wenn der Kernel ja eh' nur auf einer einzigen, fest definierten HW 
laufen soll, kann auch alles fest reinkompiliert werden (es sei denn, 
die sourcen der Treiber sind irgendwo ausserhalb des 
Kernel-source-trees). Und der Lademechanismus fuer Module kann 
draussenbleiben. Spart Platz und verhindert (unbefugtes) nachladen von 
irgendwelchen Modulen.

Mit den Binaryblobs in /lib/firmware ist so: Was da drinnen sein 
sollte/muss, haengt ja nur von der verbauten Hardware ab - und nicht vom 
Kernel oder Architektur.

Gruss
WK

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.