Table of Contents

Linux kernel

Compiling the debian way

see: Debian Linux Kernel Handbook

 bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
 make-kpkg clean
 fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

After –append-to-version= you can write any string that helps you identify the kernel, but it must begin with a minus (-) and must not contain whitespace.

SMP/DualCore compiling tip

 # CONCURRENCY_LEVEL=4 make-kpkg --initrd --rootcmd=fakeroot --append-to-version=<version> kernel_image

Cross-compiling

see: http://michael-prokop.at/blog/2007/01/21/cross-compile-the-linux-kernel-on-debian/

Adjust $KERNELSOURCE/Makefile to:

 ARCH            = powerpc
 CROSS_COMPILE   = powerpc-linux-gnu-
 export ARCH=powerpc
 make-kpkg --arch powerpc ...

kernel lab

kernellab − manage kernel configs for many machines easily

apt-get install kernellab

usage:

 kernellab [options] <host> [<version>[−ac<patchlevel>] [<module>..]]

or more advance :)

 for a in router1 router2 router3 ...; do kernellab "$a"; done

IO scheduler

 image = /boot/vmlinuz26113
 initrd = /boot/initrd.gz
 append = "elevator=deadline"
 root = /dev/hda1
 label = kernel_2.6.11.3
 read-only
 # cat /sys/block/hda/queue/scheduler
 noop [anticipatory] deadline cfq

how come deadline is not being chosen??

This works.

 # echo deadline > /sys/block/hda/queue/scheduler
 # cat /sys/block/hda/queue/scheduler
 noop anticipatory [deadline] cfq