====== Linux kernel ====== ===== Compiling the debian way ===== **see:** [[http://kernel-handbook.alioth.debian.org/|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= 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] [[−ac] [..]] or more advance :) for a in router1 router2 router3 ...; do kernellab "$a"; done ===== IO scheduler ===== * Completely Fair Queuing—elevator=cfq * Deadline—elevator=deadline * NOOP—elevator=noop * Anticipatory—elevator=as 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