Hello, This file has been posted to this forum a few times before in earlier versions. I would very much appreciate feedback on it. If enough people think it's a good idea, I will attempt to contribute it to the LDP.
--BEGIN-- Kernel Compiling for Dummies By Branden Robinson ([EMAIL PROTECTED]) Version 1.3, Jun 16 1997, 5393 bytes For Debian users, the "kernel-package" package is supposed to do these things for you, but I have had rough going with it, especially in the modules department. The following steps have worked for me on multiple machines, with various kinds of hardware and booting methods (floppy, loadlin, lilo). It makes a number of assumptions (i386 architecture, use of loadable modules, installing a complete set of new kernel sources, and not a patch, etc.). If anything looks inappropriate for your setup, make backups and go with your instincts. Always, always, always make sure you keep a known good booting kernel around on floppy disk to save your bacon. It also makes sense to compile-in, rather than modularize, things that are crucial to your system's operation. This always includes the binary format you use, ELF or a.out, and I think (can someone clarify?) it also includes the filesystem type of the root disk, often ext2fs (a.k.a. e2fs); for your personal sanity compile in things you can't live without (like your network card and mouse, for example), until you're willing and ready to take the plunge with modularizing as much of the kernel as you can. Another tip: most people don't need to be told this, but it can save many headaches -- make use of the comment character (usually '#') in configuration files, like conf.modules or lilo.conf. If something doesn't work, comment it out and mention why. You'll thank yourself when you come back later to tweak things again. I would appreciate feedback on this document. I was thinking of adding a longer, more explanatory section after the quick recipe version, but some people seem to like this file short and sweet. What do you think? BEGIN *) if upgrading and if possible, preserve your old kernel sources (if your /usr/src/linux is a symlink to the old sources, remove the link *before* extracting the tar file to /usr/src, otherwise just rename /usr/src/linux) // if installing a Debian kernel-source package, do that (dpkg -i // kernel-source-x.y.zz_x.y.zz.deb) instead of the next five steps *) copy .tgz source file to /usr/src *) cd /usr/src *) tar xfz (or tar xfvz) source file (it sticks itself in /usr/src/linux) *) mv linux kernel-source-x.y.zz *) ln -s kernel-source-x.y.zz linux // if you want to preserve the asm, linux, and scsi libraries that shipped // with your libc, simply mv them before doing the symlink manipulations // below *) if necessary, cd /usr/include; ln -s asm-i386 asm *) if necessary, cd /usr/include; ln -s ../src/linux/include/asm-i386 asm-i386 *) if necessary, cd /usr/include; ln -s ../src/linux/include/linux linux *) if necessary, cd /usr/include; ln -s ../src/linux/include/scsi scsi *) if kernel version you're compiling is the same as current version, mv /lib/modules/x.y.zz /lib/modules/x.y.zz.old *) cd /usr/src/linux; make mrproper; make (config|menuconfig|xconfig); (optionally edit Makefile); make dep; make (zImage|zlilo); make modules; make modules_install *) depmod -a (depmod -a x.y.zz using new kernel version if applicable) // NOTE: if your version of ps scans the System.map file, the psdatabase // file may be considered redundant (see the WCHAN entry in your ps // manpage to determine this). *) backup your old system map, kernel image, and psdatabase: A) cd /boot B) cp System.map System.map.old C) cp vmlinuz vmlinuz.old D) cp psdatabase psdatabase.old *) create new /boot : A) cd /usr/src/linux; cp System.map /boot/System.map-x.y.zz B) cd /usr/src/linux; cp arch/i386/boot/zImage /boot/vmlinuz-x.y.zz C) cd /; if necessary, ln -s boot/System.map-x.y.zz System.map D) cd /; if necessary, ln -s boot/vmlinuz-x.y.zz vmlinuz *) cd /boot; psupdate (creates new /boot/psdatabase) *) mv /boot/psdatabase /boot/psdatabse-x.y.zz *) ln -s psdatabase-x.y.zz psdatabase *) make sure psdatabase symlink in /etc is not broken (if you didn't have one before, you don't need it; don't bother creating it) *) edit /etc/modules appropriately (if you're using kerneld and are lucky, "auto" may be all you need) *) edit /etc/conf.modules (/etc/modules.conf on some systems) appropriately (for instance, you may need lines like "alias eth0 de4x5" and "options de4x5 io=0x0d") *) if you use lilo, check /etc/lilo.conf for correct parameters (esp. things like "linear") *) backup your old kernel image(s) and then put the new ones wherever you need them, e.g.: cp /usr/src/linux/arch/i386/boot/zImage /dev/fd0 cp /usr/src/linux/arch/i386/boot/zImage /mnt/win95/Etc/Linux *) reboot *) if insmod complains about missing modules (but not "unresolved symbols"), try editing /etc/conf.modules and aliasing missing modules to off; e.g., "alias net-pf-4 off" or "alias char-major-10 off". These often correspond to devices/drivers your machine doesn't have or need. *) in my experience, "unresolved symbols" errors often mean you have modules sitting in /lib/modules/x.y.zz that the kernel doesn't expect; if you moved your old ones and did a "make modules" and "make modules_install" this shouldn't happen...hopefully *) reboot again and see if it worked END Disclaimer: Copyright (C) 1997 Branden Robinson. This file is freely redistributable by any means provided it remains complete and unchanged. --END-- -- G. Branden Robinson Purdue University [EMAIL PROTECTED] http://www.ecn.purdue.edu/~branden/ -- TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to [EMAIL PROTECTED] . Trouble? e-mail to [EMAIL PROTECTED] .