Die Anleitung beschreibt wie man die Kernel Sourcen von Marvels git Repository (Orion) auf einem x86er System compiliert und auf die SheevaPlug flasht.
Auf der x86 Maschine die Umgebung zum Cross Compilieren einrichten wie im Dokument SheevaPlug Development Kit README-Revx.x.pdf beschrieben.
1. Gnu Compiler auf einem Debian Rechner einrichten (Rechner muss im Netz hängen, damit später auf die Plug kopiert werden kann)
2. mkimage nach /usr/bin kopieren und x-Bit setzen
Folgendes wird benötigt zum ziehen der Sources aus dem git Repository und um menuconfig ausführen zu können.
apt-get install git-core
apt-get install libncurses5-dev
Sourcen ziehen
Ich arbeite im Verzeichnis /home/kernels/orion_01052009/. Dort folgendes ausführen.
git clone git://git.marvell.com/orion.git
Kompilieren des Kernels
1. In /home/kernels/orion_01052009/lib/orion wechseln
make ARCH=arm kirkwood_defconfig
Wer Settings ändern will:
make ARCH=arm menuconfig
Kernel kompilieren
make -j4 ARCH=arm CROSS_COMPILE=/home/gcc/bin/arm-none-linux-gnueabi- uImage
Image Name: Linux-2.6.30-rc3-01517-g3ea6385
Created: Fri May 1 20:33:08 2009
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2115572 Bytes = 2065.99 kB = 2.02 MB
Load Address: 0x00008000
Entry Point: 0x00008000
Image arch/arm/boot/uImage is ready
Ergebnis (uImage) liegt in /home/kernels/orion_01052009/orion/arch/arm/boot
Dorthin wechseln und den MD5 Hash ermitteln und notieren.
md5sum uImage
Module kompilieren
(auch nötig wenn keine Module ausgewählt wurden)
make -j4 ARCH=arm CROSS_COMPILE=/home/gcc/bin/arm-none-linux-gnueabi- modules
Module in Ordner legen
make -j4 ARCH=arm CROSS_COMPILE=/home/gcc/bin/arm-none-linux-gnueabi- INSTALL_MOD_PATH=.. modules_install
Module liegen in /home/kernels/orion_01052009/lib/
Kopieren auf die SheevaPlug
Den Inhalt von /home/kernels/orion_01052009/lib/ in /lib der SheevaPlug kopieren (überschreiben falls schon vorhanden).
Die uImage aus /home/kernels/orion_01052009/orion/arch/arm/boot ebenfalls auf die SheevaPlug kopieren (Ort egal).
Flashen
In das Verzeichnis wechseln in das ihr uImage kopiert habt und MD5 Hash emitteln. Sollte der nicht mit dem vorhin ermittelten übereinstimmen --> NICHT FLASHEN.
md5sum uImage
Gucken wohin uImage geflasht werden muss (hier mtd0)
cat /proc/mtd
dev: size erasesize name
mtd0: 00400000 00020000 "uImage"
mtd1: 1fb00000 00020000 "rootfs"
Flash leeren
/home/Kernel/02052009# flash_eraseall -j /dev/mtd0
Erasing 128 Kibyte @ 3e0000 -- 96 % complete. Cleanmarker written at 3e0000.
uImage schreiben
nandwrite -pm /dev/mtd0 uImage
Reboot
uBoot anpassen
setenv mainlineLinux yes
setenv arcNumber 2097
saveenv
reset
Nun sollte mit dem neuen Kernel gebootet werden.
Links
http://plugcomputer.org/plugwiki/index.php/Compiling_Linux_Kernel_for_the_Plug_Computer#Booting_the_kernel
http://sheeva.with-linux.com/sheeva/index.php?dir=
http://www.thomashertweck.de/kernel26.html
http://www.computingplugs.com/index.php/Building_a_custom_kernel





