apt-get install bin86 binutils gcc libc6-dev ncurses3.4-dev
apt-get install make patch kernel-package
As part of the kernel-package configuration you'll be asked for your full name and email address. I suggest you fill them in.
apt-get install kernel-source-2.0.34
Compile Your First Custom Kernel
At this point it's time to build our first custom kernel. Why build a custom kernel? Well, it's tailored for your hardware. The stock debian kernel supports lots of drivers you don't need and is therefor quite a bit larger than you need it to be. It also may not support some features you'd like to have (sound and APM come immediately to mind) so you'll have to build a kernel to get those features.
And it's good for you. It's the unix way of doing things, compiling from source. It won't hurt at all, especially with the thoughtful kernel-package provided by debian.
The first step in kernel building is configuration. I suggest you use the nice curses-based, dialog box configuration tool menuconfig:
You'll see that the first time you make menuconfig that make will actually build the executable.
I will walk through the process I use to build the kernel for my desktop machine, to give you an idea of what's in store for you. You should, of course, configure for YOUR hardware and software needs, not mine.
When the Main Menu comes up, spend some time reading the instructions at the top. Important to understand is the fact the you can build a feature into your kernel (Y), exclude a feature from your kernel (N), or create a module that can be installed and removed from the kernel (M).
Note that some features are
Y/N only ([ ]),
and others are
Y/M/N (< >).
Decisions about how much of your kernel to modularize can become religious, so I'll just say that in my case, I've chosen to leave as modules those items that came as modules with the installation kernel.
The first selection is Code maturity level options, and I choose
[*] Prompt for development and/or incomplete code/drivers
Next is Loadable module support, and my choices are
[*] Enable loadable module support
[ ] Set version information on all symbols for modules
[*] Kernel daemon support (e.g. autoload of modules)
For General setup I select
(only selected items are shown from this point onward)
[*] Networking support
[*] PCI bios support
[*] System V IPC
<M> Kernel support for a.out binaries
<*> Kernel support for ELF binaries
<M> Kernel support for JAVA binaries
[*] Compile kernel as ELF - if your GCC is ELF-GCC
(Pentium) Processor type
For Floppy, IDE, and other block devices I select
<*> Normal floppy disk support
[*] Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
[*] Include IDE/ATAPI CDROM support
[*] Intel 82371 PIIX (Triton I/II) DMA support
<*> Loopback device support
<*> RAM disk support
[*] Initial RAM disk (initrd) support
My Networking options are
[*] TCP/IP networking
[*] IP: Drop source routed frames
[*] IP: Allow large windows (not recommended if <16Mb of memory)
I need SCSI support, so
<*> SCSI support
<*> SCSI disk support
<M> SCSI tape support
<M> SCSI CD-ROM support
[*] Verbose SCSI error reporting (kernel size +=12K)
And for SCSI low-level drivers I need
<*> BusLogic SCSI support
For Network device support I need quite a few things:
[*] Network device support
<M> Dummy net driver support
<M> PPP (point-to-point) support
<M> SLIP (serial line) support
[*] CSLIP compressed headers
[*] Keepalive and linefill
[*] Ethernet (10 or 100Mbit)
[*] Other ISA cards
<M> NE2000/NE1000 ISA support
I can skip both of the following:
CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
However, Filesystems will get lots of choices:
<*> Minix fs support
<*> Second extended fs support
<M> Native language support (Unicode, codepages)
<M> ISO9660 cdrom filesystem support
<M> DOS FAT fs support
<M> MSDOS fs support
<M> VFAT (Windows-95) fs support
<M> Codepage 437
<M> NLS ISO 8859-1
[*] /proc filesystem support
It's worth noting here that you must select Native Language Support to even see the ISO9660 and VFAT choices. I've selected Codepage 437 and NLS ISO 8859-1 because the vfat module seems to look for them when a vfat partition is mounted.
Next we select some Character devices.
<M> Standard/generic serial support
<M> Parallel printer support
[*] Mouse Support (not serial mice)
<M> PS/2 mouse (aka "auxiliary device") support
I make no selections in either Sound or Kernel hacking.
I return to the Main Menu and select Exit, and when I am asked
Do you wish to save your new kernel configuration?
I say Yes.
Now that configuration is complete, you need just two commands to build the new kernel:
make-kpkg --rev Testbox.1.0 kernel_image
Depending on your hardware, building the kernel can take anywhere from several minutes (my current K6-200 with 32MB of RAM) to several hours (my first linux box, a 386SX-16 with 4MB), so go for a coffee or a day hike, as appropriate.
Install the Newly Compiled Kernel
Now that the compile is complete, kernel-package has thoughtfully packaged up the new kernel so you can install it with dpkg, and everything will go in exactly the right place.
dpkg -i /usr/src/kernel-image-2.0.34_Testbox.1.0_i386.deb
Once the new kernel is installed, you'll need to reboot to load it. After you reboot, you'll want to fix up your Custom Boot Floppy with the new kernel (just like we did before).
Return to Our Man Pann's Linux Page.
Pacifier Online is my Internet Service Provider.
Hurricane Electric provides me with Web/Domain Hosting Services.
Last modified: 29-Apr-99 by Pann McCuaig.
Copyright 1999 by Pann McCuaig. All rights reserved.