Using make-kpkg to build a custom Linux kernel for your VAIO
Debian provides a powerful utility called make-kpkg for compiling your own custom kernels. It integrates tightly with
dpkg by making .deb files and you can even use this to prepare your kernel image on a faster system. Later on it will
make complex operations, such as compiling in patches and modules, a snap.
To get it:
# apt-get install kernel-package libncurses-dev
libncurses-dev is not strictly necessary, but provides the libraries we will use later for configuring the kernel in
the easy to use curses interface (make menuconfig).
You will also need a copy of the kernel source. You can download it directly from
ftp._xx_.kernel.org/pub/linux/kernel/v2.4 (substitute your two-letter country code for xx) or you can install a
debianised version from your local repositary. The Debian package (kernel-source-2.4.20 - or latest since) contains a
few extra patches useful for a debian system.
The debian package will install the latest version of the source to the /usr/src directory. You will need to place it
there yourself, if you download it directly off a kernel mirror.
Change to the /usr/src directory and check the source is there before un-tarring it with:
$ tar -zxf kernel-source.2.4.20.tar.gz .
It is also good form to create a soft link to the default source working directory:
$ ln -s kernel-source.2.4.20 linux
We shall assume you created the link for the rest of the instructions. Now change to the /usr/src/linux directory and
being configuring your kernel:
$ make menuconfig
Prepare your kernel for later chapters by installing the ACPI patches, and by setting the following sets of kernel options now:
CONFIG_SCSI=m (SCSI Support ---> SCSI Support)
CONFIG_BLK_DEV_SR=m (SCSI Support ---> SCSI CD-ROM support)
CONFIG_IEEE1394=m (IEEE 1394 ---> IEEE 1394)
CONFIG_IEEE1394_OHCI1394=m (IEEE 1394 ---> OHCI-1394)
CONFIG_IEEE1394_SBP2=m (IEEE 1394 ---> SBP-2)
CONFIG_ISO9660_FS=m (File systems ---> ISO 9660)
CONFIG_JOLIET=y (File systems ---> Microsoft Joliet)
CONFIG_ZISOFS=y (File systems ---> Transparent Decompression extension)
CONFIG_ZISOFS_FS=m (automatic)
CONFIG_ZLIB_INFLATE=m (automatic)
CONFIG_PCMCIA=m
CONFIG_NET_RADIO=y
CONFIG_HERMES=m
CONFIG_PCMCIA_HERMES=m
CONFIG_NET_WIRELESS=y
External Firewire hard disks:
CONFIG_BLK_DEV_SD=m (SCSI Support ---> SCSI disk support)
CONFIG_SD_EXTRA_DEVS=40 (automatic)
CONFIG_CHR_DEV_SG=m (SCSI Support ---> SCSI generic support)
Apple iPod (experimental support):
This is optional. If you don’t have an Apple iPod, then you needn’t set these options.
CONFIG_IEEE1394_RAWIO=m (IEEE 1394 ---> Raw IEEE1394 I/O support)
CONFIG_PARTITION_ADVANCED=y (File systems ---> Partition Types ---> Advanced partition selection)
CONFIG_MAC_PARTITION=y (File systems ---> Partition Types ---> Macintosh partition map support)
CONFIG_SOUND=m (Sound ---> Sound card support)
CONFIG_SOUND_OSS=m (Sound ---> OSS sound modules)
Then, compile the .deb:
$ make-kpkg clean
$ fakeroot make-kpkg --revision=whatever kernel_image
It is essential to run the first command to synchronize the make-kpkg scripts. A sensible revision naming scheme would
be to replace whatever with a description of the destination machine and an internal version number eg, srx87.1.0.
Once the kernel has finished compiling it should leave (in the parent directory), a file called
kernel-image-2.4.20_whatever_i386.deb. As root run:
# dpkg -i kernel-image-2.4.20_whatever_i386.deb
Note: This doesn’t build you an initial ramdisk, so your hard disk driver (IDE) and initial filesystem (ext3) will need to be compiled into the core kernel binary. I (Roger) wasted an entire Sunday rebuilding my Vaio when I forgot this.
Credits: Caoilte O’Connor wrote this page of the instructions. Thanks for that, Caoilte.