Deze sectie is geschreven door Al Dev (alavoor@yahoo.com)
De laatste versie van deze sectie is te vinden op http://www.aldev.8m.com en klik op "Quick Steps to recompile linux kernel". Mirror sites zijn te vinden op - http://aldev.webjump.com, angelfire, geocities, virtualave, 50megs, theglobe, NBCi, Terrashare, Fortunecity, Freewebsites, Tripod, Spree, Escalix, Httpcity, Freeservers.
Deze sites bieden heel veel linux fraais en tips.
Een kopie van de bovenstaande website is hier gereproduceerd -
Het opnieuw compileren van de kernel is nodig om de kernel zo klein mogelijk te maken, wat zal resulteren in een SNELLER besturingssysteem. Het moet ook gebeuren als je ondersteuning wilt voor enige nieuwe devices. Noot: Hieronder duidt 'bash#' op de bash-prompt, je typt de opdrachten die na de 'bash#' prompt staan. De hieronderstaande opdrachten zijn onder RedHat Linux getest, maar ze zouden tevens met minimale wijzigingen onder andere distributies moeten werken.
bash$ su - root bash# cd /mnt/cdrom/RedHat/RPMS bash# rpm -i kernel-headers*.rpm bash# rpm -i kernel-source*.rpm bash# rpm -i dev86*.rpm bash# rpm -i bin86*.rpm
bash# man startx bash# startx bash# cd /usr/src/linux bash# make xconfig
bash# man lsmod bash# man insmod bash# man rmmod bash# man depmod bash# man modprobe
bash# make dep bash# make clean
bash# gvim -R /usr/src/linux/arch/i386/config.in bash# man less bash# less /usr/src/linux/arch/i386/config.in Typ 'h' voor hulp en druk voor het navigeren op i, j, k, l, h of de pijltjestoets, page up/down toetsen.
bash# cd /usr/src/linux
bash# man nohup
bash# nohup make bzImage &
bash# tail -f nohup.out (.... to monitor the progress)
Hiermee zal de kernel worden neergezet in
/usr/src/linux/arch/i386/boot/bzImage
bash# man tail
bash# cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage.myker.26mar2001
bash# man lilo
bash# man lilo.conf
Wijzig het bestand /etc/lilo.conf en plaats daar de volgende regels in:
image=/boot/bzImage.myker.26mar2001
label=myker
root=/dev/hda1
read-only
Je kunt de devicenaam voro 'root=' controleren met de opdracht:
bash# df /
bash# lilo bash# lilo -q
bash# man insmod bash# insmod bash# rpm -i /mnt/cdrom/Redhat/RPMS/modutils*.rpm
Hiermee krijg je een reeds geïnstalleerd package te zien.
bash# rpm -qa | grep -i kernel
bash# rpm -U --force /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i686.rpm
(or)
bash# rpm -U --force /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i586.rpm
(or)
bash# rpm -U --force /mnt/cdrom/Redhat/RPMS/kernel-2.2.14-5.0.i386.rpm
bash# rpm -i /mnt/cdrom/contrib/kernel-modules*.rpm ....(Voor oude linux systemen waarop insmod niet is voorgeïnstalleerd)
bash# cd /usr/src/linux bash# make modules bash# make modules_install
bash# cd /usr/src/linux bash# make bzdisk Zie tevens mkbootdisk - bash# rpm -i mkbootdisk*.rpm bash# man mkbootdisk
De volgende fouten worden zeer frequent door nieuwe gebruikers gemaakt:
Als je nieuwe kernel niet boot en je krijgt:
Warning: unable to open an initial console Kernel panic: no init found. Try passing init= option to kernel
De kernel zoekt naar de init opdracht welke is te vinden in /sbin/init. En de directory /sbin komt voor op de rootpartitie. Zie voor details:
bash# man init
Hieronder wordt een voorbeeldbestand van /etc/lilo.conf gegeven. Volg de naamconventies zoals ker2217 (voor kernel 2.2.17), ker2214 (voor kernel 2.2.14). Er kunnen meerdere kernelimages op hetzelfde /boot systeem voorkomen. Op mijn machine heb ik iets als:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=firewall
image=/boot/vmlinuz-2.2.14-5.0
label=ker2214
read-only
root=/dev/hda9
image=/boot/vmlinuz-2.2.17-14
label=ker2217
read-only
root=/dev/hda9
#image=/usr/src/linux/arch/i386/boot/bzImage
# label=myker
# root=/dev/hda7
# read-only
image=/boot/bzImage.myker.11feb2001
label=myker11feb
root=/dev/hda9
read-only
image=/boot/bzImage.myker.01jan2001
label=myker01jan
root=/dev/hda9
read-only
image=/boot/bzImage.myker-firewall.16mar2001
label=firewall
root=/dev/hda9
read-only