My kernel page

First, read the LART page on the linux port.
 

As they say, you need to get a good combination of kernel and patches, and these must match EXACTLY.



Get the files

For your information I am using (grabbed from the links on the above page);
linux-2.4.4.tar.bz2
patch-2.4.4-rmk3.gz
diff-2.4.4-rmk3-np1
and also a file from there named
em-patch-fix-fork



Unpack and patch

So get all these in a clean directory such as /usr/src/arm and unpack the kernel source code;
cd /usr/src/arm
tar jxf linux-2.4.4.tar.bz2
(note:  if you downloaded a .gz file instead of a .bz2 then do a tar zxf instead of jxf)

Now apply the patches (in this order);
cd linux
gzip -dc ../patch-2.4.4-rmk3.gz | patch -p1
cat ../diff-2.4.4-rmk3-np1 | patch -p1
cat ../em-patch-fix-fork | patch -p1
(note:  the second patch "diff" was not gzipped so I use cat.  If yours ends in .gz, then use gzip -dc instead of cat)

If there are any errors at all during the patching then you have got an incompatible set of sources (or some other mistake) and you MUST stop here because it WILL NOT WORK.



Configure the kernel

Still in the /usr/src/arm/linux directory, set up the kernel ready to compile for a LART with;
make lart_config

If you have a LART you can skip this box;

If your hardware is LART-like then it's good to start with the LART kernel configuration.  You can then tailor the kernel source to your liking.  Most of the files you will want to change are found in the directory;
/usr/src/arm/linux/arch/arm/mach-sa1100
And deal with hardware specific issues.  There is also some hardware specific code in the directory;
/usr/src/arm/linux/include/asm
but this is less likely to be changed- and it's not generally advised to change things in there these days.

Some LARTisms from the first directory include the definition of DRAM memory areas in lart.c and the LED configuration in leds-lart.c.  These might want to be changed by people who have a LART but have expanded it.

Next, simply type;
make oldconfig
and if there are any questions, accept the default answers.

Then type;
make  dep  clean  zImage
make modules
(there shouldn't be any)



Encode and upload kernel

Copy the zImage (gzipped kernel) from there to your working directory, uuencode it and upload it to blob.
cp /usr/src/arm/linux/arch/arm/boot/zImage  /data/LART
cd /data/LART
uuencode zImage zImage > zImage.uu
./uploadkernel zImage.uu
Assuming you are using my upload script based on the Aleph1 upload script.