Difference between revisions of "HowTo Build Your Own Custom Kernel"

From NAS-Central Buffalo - The Linkstation Wiki
Jump to: navigation, search
m (mention reference configs and modules)
(added to categories LSLive, LS-CL, Software)
Line 63: Line 63:

Revision as of 22:15, 13 August 2009


An i686 host running some flavor of Linux.

Download All the Required Tarballs

First, download the cross toolchain (arm-2005q3-2-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2), mkimage, and the source archive (linux-2.6.12_lsp.1.7.8.tgz):

$ cd /some_directory
$ wget -H -c http://downloads.nas-central.org/LSPro_ARM9/DevelopmentTools/CrossToolchains/CodeSourcery/arm-2005q3-2-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ wget -H -c http://downloads.nas-central.org/LSPro_ARM9/DevelopmentTools/CrossToolchains/mkimage
$ wget -H -c http://downloads.nas-central.org/LSPro_ARM9/GPL/gpl_ls-gl/linux-2.6.12_lsp.1.7.8.tgz

If the files were not at the locations indicated above, fear not! Just look in every directory on the server (like I did).

Prepare the Environment

Then, install (i.e., untar) the toolchain and mkimage:

$ cd /some_path
$ tar -xjf /some_directory/arm-2005q3-2-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ cd bin
$ export PATH=`pwd`:$PATH
$ cp -p /some_directory/mkimage .
$ chmod a+rx mkimage

Strictly speaking mkimage should not go into /some_path/bin. But, hey...

Now untar the source of the kernel in some directory:

$ cd /some_directory
$ tar -xzf linux-2.6.12_lsp.1.7.8.tgz
$ cd linux-2.6.12_lsp.1.7.8

Ready, Get Set, Build!

In some_directory you can find the configs Buffalo used to build the kernels shipped with their various firmwares:

$ ls buffalo/

and choose one to use as a template for yours.

$ cp buffalo/buffalo_lsgl_arm_110.config .config

Then you can modify the configuration as you want:

$ make menuconfig

and start up the build!

$ make uImage

If you selected some features to be built as modules, they need to be prepared too.

$ make modules

The kernel and modules will be ready at arch/arm/boot/uImage.