
Ich verwende derzeit Angstrom Linux 2.6.32 auf BeagleBoard-xM (ARM-Architektur). Kann ich meinen Linux-Kernel von 2.6.32 auf 3.0.7 aktualisieren und wie hoch ist der Schwierigkeitsgrad, falls eine Aktualisierung möglich ist?
BEARBEITEN #1:
Das Image, auf dem BB-xM läuft, wurde erstellt ausNarzissemit Bootloaderdateien(x-load/u-boot/Skripte). Ich habe vor kurzem die Kernel-Quellen 2.6.32.61 von kernel.org heruntergeladen und auf BB-xM kopiert /usr/src
. Nachdem ich die Konfiguration vorgenommen hatte ( make menuconfig
), baute ( make
) ich den Kernel und installierte ( make install
) ihn direkt auf BB-xM(native Werkzeugkette).
BEARBEITEN#2:
Ich weiß, dass auch dem Bootloader Aufmerksamkeit geschenkt werden muss, falls dieser manuell konfiguriert werden muss, um den neuen Kernel zu booten. Im ursprünglichen Angstrom-Image boot
enthielt das Verzeichnis:
u-boot-scripts
MLO-beagleboard-1.5.0+r24+gitr04b1732220078d47c18a84cbafc52e45db71f13d-r24
u-boot-beagleboard-2011.02+r75+gitrc7977858dcf1f656cbe91ea0dc3cb9139c6a8cc8-r75
uImage-2.6.32
Nach der Konfiguration und Installation des Kernels 2.6.32.61 boot
enthält das Verzeichnis:
root@beagleboard:/boot# ls
MLO
MLO-beagleboard-1.5.0+r24+gitr04b1732220078d47c18a84cbafc52e45db71f13d-r24
Module.symvers-2.6.32
System.map-2.6.32
System.map-2.6.32.61
System.map-2.6.32.61.old
config-2.6.32
u-boot-beagleboard-2011.02+r75+gitrc7977858dcf1f656cbe91ea0dc3cb9139c6a8cc8-r75.bin
u-boot-scripts
u-boot.bin
uImage
uImage-2.6.32
vmlinux-2.6.32.61
vmlinux-2.6.32.61.old
Ich habe den Bootloader nicht konfiguriert und BB-xM bootet den neu konfigurierten Kernel.
Antwort1
Ich bin kein Beagle-Board-Benutzer, daher sollten Sie als Erstes sicherstellen, dass Sie über eine geeignete Kernelquelle verfügen. Die Standardquelle unterstützt verschiedene Cortex-A8-Chips (ARMv7), einschließlich „OMAP3 BeagleBoard“, aber ich kann nicht mit Sicherheit sagen, ob das ohne weitere Patches gut genug ist.
Der 3.x-Kernel sollte abwärtskompatibel mit einem 2.6-orientierten Userland sein, daher sollte es keine Probleme geben, es sei denn, Angstrom verlässt sich in erheblichem Maße auf Funktionen, die durch eigene Patches implementiert wurden (in diesem Fall müssten Sie diese anwenden). Bei Mainstream-Distributionen ist dies kein Problem – obwohl sie ihre Kernel benutzerdefiniert patchen und empfehlen, ihre gepatchten Quellen zu verwenden, hatte ich bei der Verwendung des Vanilla-Baums noch nie ein Problem – aber Angstrom ist meiner Meinung nach etwas spezialisiert. Wenn Angstrom bereits eine 3.0.7-Quelle hat, sind Sie startklar. Wenn nicht, kann es wahrscheinlich nicht schaden, es mit der Vanilla-Quelle kernel.org zu versuchen (wenn diese ordnungsgemäß bootet, wird es von dort aus wahrscheinlich kein Problem geben).
Ich gehe davon aus, dass Sie bereits über eine funktionierende Cross-Compiler-Toolchain verfügen, die für das BeagleBoard funktioniert. Wenn nicht, benötigen Sie eine (ich kann Ihnen auch dazu einige Tipps geben), da dies direkt auf dem BeagleBoard mehrere Stunden dauern wird (auf dem Raspberry Pi dauert es anscheinend mehr als 5 Stunden) und es wahrscheinlich einige Versuche und Irrtümer geben wird. Auf einer modernen Multi-Core-Multi-GHz-Maschine sollte es jedoch nicht viel länger als 10 Minuten dauern, sodass Sie sich nicht jedes Mal über die Konfiguration Gedanken machen müssen. Das Cross-Compilieren des Kernels ist relativ einfach, da es keine Build-Abhängigkeiten gibt, die nicht bereits Teil der Toolchain sind.
Weitere Einzelheiten zur Konfiguration und Kompilierung des Kernels finden Sie untersiehe hier. Folgen Sie dem Tipp make install
in Schritt 5, nicht zu verwenden (d. h. installieren Sie den Kernel selbst entsprechend auf dem BeagleBoard; ich weiß nicht, ob es einen normalen Bootloader verwendet usw.) und legen Sie INSTALL_MOD_PATH
das Sysroot Ihrer Cross-Toolchain fest, bevor Sie ausführen make modules_install
, z. B.
export INSTALL_MOD_PATH=/x-tool/sysroot
make modules_install
Dadurch bleibt ein entsprechendes Modulverzeichnis übrig, /x-tool/sysroot/lib/modules
das Sie direkt in das Verzeichnis des BeagleBoards kopieren können /lib/modules
.