Warning: this is a htmlized version!
The original is across this link.
#######
#
# E-scripts on building the kernel and some related things.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/a/e/kernel.e>
#           or at <http://angg.twu.net/e/kernel.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/a/.emacs[.html]>,
#                 <http://angg.twu.net/a/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######




##########
#
# kernel 2.0.37
#
##########

# status: ok 99jun16
#  «compile20»

k=angg
# k=lea
kconf=~/k20xxconf-$k
kconfsnd=~/k20xxconf-$k.snd

rm -Rv /usr/src/linux-2.0/
rm /usr/src/linux
cd /usr/src/
# tar -xvzf $S/http/www.kernel.org/pub/linux/kernel/v2.0/linux-2.0.35.tar.gz
tar -xvzf /big/slinks1/dists/slink/main/source/devel/kernel-source-2.0.35_2.0.35.orig.tar.gz
for i in v2.0/patch-2.0.36.gz \
	 v2.0/patch-2.0.37.gz \
	 v2.0/patch-2.0.38.gz; do
  echo "\n $i:"
  gzip -cd $S/http/www.kernel.org/pub/linux/kernel/$i | patch -p0
done |& tee linux/op
mv linux linux-2.0
ln -s linux-2.0 linux

# (find-fline "~/k20xxconf-angg")
# (find-fline "~/k20xxconf-angg.snd")
cd /usr/src/linux-2.0/
  sleep 2
  echo -n > .config-start
  sleep 2
# cp -iv ~/.config20xx .config
cp -v $kconf .config
cp -v $kconfsnd /etc/soundconf
  # rm -fv /etc/soundconf
  # (find-fline "/etc/soundconf")
  # cp -iv /etc/soundconf $kconfsnd

cd /usr/src/linux-2.0/
make symlinks
( # The script may ask this:
  # "Old configuration exists in `/etc/soundconf'. Use it [Y/n/?]"
  MAKE=make \
    bash scripts/Configure -d arch/i386/config.in	|& tee omc
)
  find .* * -anewer .config-start > .files.config
  # agrep '\-C' $(cat .files.config)
#cp -v .config $kconf
#cp -iv /etc/soundconf $kconfsnd

make depend						|& tee omd

sleep 2
echo -n > .mkzImage-start
sleep 2

# Use the version with -g if you want debug symbols.
# (find-k2file "Makefile" 90)
#
#make CFLAGS='-g -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strength-reduce' zImage |& tee omz
make zImage	|& tee omz

sleep 2
echo -n > .mkmodules-start
sleep 2
#
make modules	|& tee omm

# Now we use the timestamps to
# index only the interesting files.
#
find * -name '*.[chS]' -and      -anewer .mkzImage-start > .files.chS.used
find * -name '*.[chS]' -and -not -anewer .mkzImage-start > .files.chS.unused
etags `cat .files.chS.used`
glimpseindex -H . -F < .files.chS.used

ln -sf /usr/src/linux-2.0/System.map /boot/System.map-2.0.38

# (find-k2file "drivers/sound/configure.c" ".soundconf")
# (find-k2file "drivers/sound/configure.c" "oldconf")
# (find-k2file "drivers/sound/Makefile" "oldconfig")

k=angg
rm -Rv /boot/$k
mkdir /boot/$k
cd /usr/src/linux-2.0/
cp -iv .config /boot/$k/k20conf
cp -iv modules/* /boot/$k
cp -iv arch/i386/boot/zImage /boot/$k/k2038

gzip -cd /usr/lib/loadlin/loadlin.exe.gz > /boot/$k/loadlin.exe
cd /boot/$k
zip -9 /root/k$k.zip *


#  «gdb20»
#
# (gdb "gdb /usr/src/linux-2.0/vmlinux /proc/kcore")

# (find-fline "~/latte/.gdbinit")
# (gdb "gdb -cd=/home/root/latte -d /usr/src/latte-1.1/ -x /home/root/latte/.gdbinit")



# Obsolete notes:

# **
# This a hack to TRY to get around a strange bug...
# (find-k2file "drivers/net/Makefile" "autoconf.h")
# (find-k2file "omz" "autoconf.h")
# (find-k2file "scripts/Configure" "autoconf.h")
mv .tmpconfig .config
mv .tmpconfig.h include/linux/autoconf.h
# **





################
#
# Kernel 2.2.10
# 99may15
#
################

#  «compile22»

k=angg22
# k=lea

# (find-fline "$S/http/www.br.kernel.org/pub/linux/kernel/v2.2/")

rm -Rv /usr/src/linux-2.2/
rm /usr/src/linux
cd /usr/src/
# tar -xvzf /big/slinks2/kernel2.2/linux-2.2.3.tar.gz
tar -xvzf /big/slinks1/dists/slink/main/source/devel/kernel-source-2.2.1_2.2.1.orig.tar.gz
for i in v2.2/patch-2.2.2.gz		\
	v2.2/patch-2.2.3.gz		\
	v2.2/patch-2.2.4.gz		\
	v2.2/patch-2.2.5.gz		\
	v2.2/patch-2.2.6.gz		\
	v2.2/patch-2.2.7.gz		\
	v2.2/patch-2.2.8.gz		\
	v2.2/patch-2.2.9.gz		\
	v2.2/patch-2.2.10.gz		\
	v2.2/patch-2.2.11.gz		\
	v2.2/patch-2.2.12.gz; do
  echo " $i:"
  gzip -cd /snarf/http/www.kernel.org/pub/linux/kernel/$i | patch -p0
done |& tee linux/op

mv linux linux-2.2
ln -s linux-2.2 linux
cd /usr/src/linux-2.2/

cp ~/k22conf .config
make oldconfig	|& tee omo
# (find-k22file "~/k22conf")
# (find-k22file "omo")

# make config
# make menuconfig
# (find-k22file "scripts/kconfig.tk")
# (find-k22file "Documentation/Configure.help")
make xconfig	|& tee omx
# tkdiff .config ~/k22conf
# cp .config ~/k22conf

make depend	|& tee omd

sleep 2
echo -n > .mkzImage-start
sleep 2

# Use the line with -g if you want debug symbols.
# (find-k2file "Makefile" 90)
#
# make CFLAGS='-g -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strength-reduce' bzImage |& tee omz
nice \
  make bzImage	|& tee omz

sleep 2
echo -n > .mkmodules-start
sleep 2
#
make modules	|& tee omm

# Now we use the timestamps to
# index only the interesting files.
#
find * -name '*.[chS]' -and      -anewer .mkzImage-start > .files.chS.used
find * -name '*.[chS]' -and -not -anewer .mkzImage-start > .files.chS.unused
etags `cat .files.chS.used`
glimpseindex -H . -F < .files.chS.used

find * -type f > .files
grep -i make < .files > .files.m

# This gives a good speedup if using -g.
#echo 'quit' | gdb -m vmlinux /proc/kcore
# Oops - seems to be broken on slink's gdb.
# (gdb "gdb /usr/src/linux-2.0/vmlinux /proc/kcore")
# (find-node "(gdb)File Options" "`-m'")


k=angg22
rm -Rv /boot/$k
mkdir /boot/$k
cd /usr/src/linux-2.2/
cp -iv .config /boot/$k/kconfig
cp -iv modules/* /boot/$k
cp -iv arch/i386/boot/bzImage /boot/$k/k22xx

laf /boot/$k

# (find-es "floppy" "syslinux")





#######
#
# www.br.kernel.com
#
#######

lynx /snarf/http/www.kernel.org/mirrors/

# http://www.br.kernel.org/pub/linux/
# ftp://ftp.br.kernel.org/pub/linux/




#######
#
# downloading new kernel versions
#
#######

psne http://www.kernel.org/mirrors/
lynx /snarf/http/www.kernel.org/mirrors/

cd $S/http/www.br.kernel.org/pub/linux/kernel/
find v2.0 v2.2

psne http://www.br.kernel.org/pub/linux/kernel/v2.0/
psne http://www.ca.kernel.org/pub/linux/kernel/v2.1/
psne http://www.br.kernel.org/pub/linux/kernel/v2.2/

psne http://www.br.kernel.org/pub/linux/kernel/v2.0/patch-2.0.36.gz
psne http://www.br.kernel.org/pub/linux/kernel/v2.0/patch-2.0.37.gz
psne http://www.br.kernel.org/pub/linux/kernel/v2.0/patch-2.0.38.gz

psne http://www.br.kernel.org/pub/linux/kernel/v2.2/patch-2.2.10.gz
psne http://www.br.kernel.org/pub/linux/kernel/v2.2/patch-2.2.11.gz
psne http://www.br.kernel.org/pub/linux/kernel/v2.2/patch-2.2.12.gz
psne http://www.br.kernel.org/pub/linux/kernel/v2.2/patch-2.2.13.gz

mkdir -p /snarf/http/www.br.kernel.org/pub/linux/kernel/v2.1/
cd	/snarf/http/www.br.kernel.org/pub/linux/kernel/v2.1/
for i in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20; do
  psne $FBOTO_H/linux-2.2.0-pre8.tar.bz2$i.gz
done




#
# Armada keyboard patch:
# (I'm not using it anymore)
cd /usr/src/linux/drivers/char/
patch keyboard.c \
  /snarf/http/www.kabel.de/~hmueller/armada11xx/armada11xx_apm.patch





#########
#
# pcsndrv 1.2
#
#########

# (find-k2file "drivers/pcsnd/README")
# (find-k2file "drivers/pcsnd/pcspinstall")
# (find-fline "/dev/MAKEDEV" "audio)")

insmod /usr/src/linux/modules/pcsnd.o

cd /dev/
mknod -m 666 pcmixer c 13 0
mknod -m 666 pcsp    c 13 3
mknod -m 666 pcaudio c 13 4
mknod -m 666 pcsp16  c 13 5
rm -v mixer dsp audio dsp16
ln -s pcmixer mixer
ln -s pcsp    dsp
ln -s pcaudio audio
ln -s pcsp16  dsp16


rm -Rv /usr/src/pcsnd-kit/
cd /usr/src/
tar -xvzf /snarf/ftp/ftp.informatik.hu-berlin.de/pub/os/linux/hu-sound/pcsndrv-1.2.tgz pcsnd-kit/'*'

cd /usr/src/pcsnd-kit/
make |& tee om

# (find-fline "/usr/src/pcsnd-kit/Readme")
# (find-fline "/usr/src/pcsnd-kit/")





######
#
# kernel-package
# 99nov14
#
######

apti kernel-package

# (find-vldifile "kernel-package.list")
# (find-fline "/usr/doc/kernel-package/")
# (find-fline "/usr/lib/kernel-package/README" "impatient:")

# (find-fline "/etc/kernel-pkg.conf")
# (find-fline "/usr/sbin/kernel-packageconfig")
# (find-fline "/usr/sbin/make-kpkg")
# (find-fline "/usr/lib/kernel-package/")

# (find-fline "/usr/doc/libc-kheaders/debian.README.gz")

man kernel-pkg.conf
man make-kpkg
man kernel-packageconfig

# I'm just starting to ressurect this chunk, there's nothing really
# working here...


lynx $S/http/www.geocities.com/ResearchTriangle/3328/paper/Debian-is-Da-BOMB-53.html

cd /usr/local/src/kernels/2.2.6
pgp linux-2.2.6.tar.bz2.sign (to check the pgp signature)
tar xIvf linux-2.2.6.tar.bz2
(apply alan cox patches if appropriate:
mv linux linux.ac
bzip2 -cd patch-2.2.6-ac2.bz2 | patch -p0 :)
cd linux (or linux.ac)
make menuconfig (and season to taste, and then save the recipe to
.config)
Then the magic begins:
make-kpkg clean && make-kpkg --revision=42:custom.1.0 kernel_image &&
make-kpkg --revision=42:custom.1.0 kernel_headers
Then if all goes well, you will have two new *.deb package in the ../
directory... now install them:
cd ..
dpkg --install kernel-image-2.2.6-ac2-i686.deb
dpkg --install kernel-headers-2.2.6-ac2-i686.deb

# On modules and sound:
lynx $S/http/www.debian.org/Lists-Archives/debian-user-9905/msg00138.html

# (find-vldifile "kernel-package.list")
# (find-fline "/usr/doc/kernel-package/")
# (find-fline "/usr/doc/kernel-package/README.gz")




######
#
# gdb'ing the kernel
#
######

# (gdb "gdb /usr/src/linux-2.0/vmlinux /proc/kcore")
# (find-k2file ".files.chS.used")
# (find-k2file "kernel/module.c")
# (find-k2file "kernel/info.c")

# (eeman "2 intro")
# (eeman "2 syscalls")
# (find-k2tag "__NR__newselect")
# (find-k2tag "sys_open")
# (eeman "5 proc")

# (find-k2file "fs/proc/")
# (find-k2file "fs/proc/root.c" "\"modules\"")
# (find-k2file "fs/proc/array.c" "PROC_MODULES:")
# (find-k2tag "get_module_list")

# (find-k2tag "printk")
# (find-k2file "kernel/printk.c" "int printk")

ptype kernel_module

set var $x=kernel_module
define xn
  set var $x=$x->next
  p *$x
end





#####
#
# /proc/xxx/statm
# 99nov??
#
#####

# (eeman "5 proc" "maps *A file containing")
# (find-k22file "")
# (find-k22file ".files.chS.used")

# Prepare the ".strings" file
# This is *SLOW*, as getstrings is a perl script
#  «.strings»
#
cd /usr/src/linux-2.2/
for i in $(<.files.chS.used); do
  echo "\nħħħħ$i:"; getstrings < $i
done | tee .strings

# (find-k22file ".strings" "statm")
# (find-k22file "fs/proc/base.c" "statm")
# (find-k22tag "proc_dir_entry")
# (find-k22tag "proc_pid_fill_inode")
# (find-k22file "fs/proc/array.c" "proc_array_inode_operations")
# (find-k22file "fs/proc/array.c" "proc_array_operations")
# (find-k22file "fs/proc/array.c" "array_read")
# (find-k22file "fs/proc/array.c" "case PROC_PID_STAT")
# (find-k22file "fs/proc/array.c" "get_process_array")
# (find-k22file "fs/proc/array.c" "get_stat(")
# (find-k22file "fs/proc/array.c" "get_statm(")

P=$(cd /proc; print -l [0-9]* | sort -n) \
expect -c '
  foreach pid $env(P) {
    catch {
      foreach {size res sha txt lib sta drt} [exec cat /proc/$pid/statm] {}
      puts [format "%s::  size: %s  resident: %s  share: %s
        text: %s  library: %s  stack: %s  dirty: %s" \
        $pid $size $res $sha $txt $lib $sta $drt]
    }
  }
'

# Much better:

P=$(cd /proc; print -l [0-9]* | sort -n) \
expect -c '
  foreach pid $env(P) {
    catch {
      foreach v {siz res sha txt lib sta drt} \
	  n "[exec cat /proc/$pid/statm]" {
	set $v [format "%3s" $n]
      }
      set pid [format "%4s" $pid]
      puts "pid:$pid siz:$siz res:$res sha:$sha txt:$txt lib:$lib sta:$sta drt:$drt"
    }
  }
'