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