Difference between revisions of "Compile a uBoot Kernel"

From NAS-Central Buffalo - The Linkstation Wiki
Jump to: navigation, search
(Troubleshooting)
Line 1: Line 1:
This is a tutorial of how to compile a uBoot kernel from vanilla gentoo-sources.
+
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.
  
===Get the sources===
+
===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.
 
Right now (24 Nov 2008) the latest stable version is gentoo-sources-2.6.26-r2.
  
Line 14: Line 22:
 
  # cd /usr/src
 
  # cd /usr/src
 
  # ln -sfn linux-2.6.26-gentoo-r2 linux
 
  # 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===
 
===Edit your kernel config===
Line 25: Line 41:
  
 
Make sure the config is sane:
 
Make sure the config is sane:
  # make menuconfig
+
  # 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.
+
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===
 
===Compile your kernel===
  
Line 38: Line 56:
 
  # cp /boot/uImage /boot/uImage.bak
 
  # cp /boot/uImage /boot/uImage.bak
 
  # cp /boot/kuroboxHG.dtb /boot/kuroboxHG.dtb.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===
 
===Compile the dtb file===

Revision as of 01:22, 10 April 2009

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.

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

# cp /usr/src/linux/arch/powerpc/boot/uImage /boot/uImage

Reboot

# reboot

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

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