Difference between revisions of "Compile a uBoot Kernel"
(→Gentoo) |
(→Install the kernel & enable modules) |
||
Line 72: | Line 72: | ||
# cd /lib/modules/2.6.2x.x/ | # cd /lib/modules/2.6.2x.x/ | ||
# depmod | # depmod | ||
+ | |||
+ | Note: If your using the Gentoo 2007 Image, check that your Kernel Image name matches. | ||
+ | Your kernel image may be called '''vmlinux.UBoot''' instead of '''uImage''' | ||
===Reboot=== | ===Reboot=== |
Revision as of 22:23, 20 September 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. 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 -av dtc
Note: you may already have a version at /boot/dtc. However emerging explicitly puts dtc in the path and gives you the latest version.
Debian
apt-get install build-essential uboot-mkimage module-init-tools
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
# cp kuroboxHG.dtb /tmp/ # 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
Note: If your using the Gentoo 2007 Image, check that your Kernel Image name matches. Your kernel image may be called vmlinux.UBoot instead of uImage
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