Compile a uBoot Kernel

From NAS-Central Buffalo - The Linkstation Wiki
Revision as of 03:52, 10 April 2009 by Davygravy (Talk | contribs)

Jump to: navigation, search

This is a tutorial of how to compile a 2.6.21+ uBoot kernel from vanilla gentoo-sources, or from kernel.org sources. While this article was originally written for Gentoo users, it is basically the same for Debian or others distros. Note that this article is valid for the KuroBox, LS1, LS-HG, KuroHG and the LS-HS.

Contents

Prepare the build environment and tools

Gentoo

Emerge __what tools from portage?__

Debian

apt-get install build-essential uboot-mkimage

Get the sources

Gentoo

Right now (24 Nov 2008) the latest stable version is gentoo-sources-2.6.26-r2.

If you want a newer kernel, add this line to /etc/portage/package.keywords:

sys-kernel/gentoo-sources ~ppc

then download the kernel sources

# emerge -ua gentoo-sources

make a link to the kernel sources

# cd /usr/src
# ln -sfn linux-2.6.26-gentoo-r2 linux

Debian and other

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.1.tar.bz2
tar xjvf linux-2.6.29.1.tar.bz2
ln -sfn linux-2.6.29.1 linux


Edit your kernel config

Clean up before you begin:

# cd /usr/src/linux
# make mrproper

Use the default KuroBox config:

# cp arch/powerpc/configs/linkstation_defconfig .config

Make sure the config is sane:

# make ARCH=powerpc menuconfig

The default config is minimal. You'll have to enable support for any non-standard things you may be using. I use reiserfs and netatalk, so I enabled support for that filesystem and also for appletalk. Also, with recent filesystem developments, you may wish to consider ext4 or others.

For troubleshooting ease, it is a good idea to enable Netconsole kernel access. Enable Device drivers -> Networking device support -> Network console logging support (EXPERIMENTAL)

Compile your kernel

# make uImage && make modules && make modules_install

Sit back and listen to music. Go to the store. Wash the dog.

Backup your old kernel and dtb file

# cp /boot/uImage /boot/uImage.bak
# cp /boot/kuroboxHG.dtb /boot/kuroboxHG.dtb.bak

If you have a LS1/HD, then change your .dtb filename as necessary.

Compile the dtb file

# cd /usr/src/linux/arch/powerpc/boot/dts
# ../dtc -I dts -O dtb -V 16 -o /tmp/kuroboxHG.dtb kuroboxHG.dts
# cp /tmp/kuroboxHG.dtb /boot/kuroboxHG.dtb

Install the kernel & enable modules

# cp /usr/src/linux/arch/powerpc/boot/uImage /boot/uImage
# cd /lib/modules/2.6.2x.x/
# depmod

Reboot

# reboot

With any luck, you'll be booting your new kernel.

Watch your netconsole window for information that may prove helpful in case of a problem.

Troubleshooting

If something goes wrong, simply boot in EM mode and copy your old kernel back.

# cp /boot/uImage.bak /boot/uImage
# cp /boot/kuroboxHG.dtb.bak /boot/kuroboxHG.dtb
# echo -n "OKOK" > /dev/fl3