If you just want a pretty complete ISO, check out this page.
A big thanx goes out to Steve Mickeler for basically handing this to me on a platter ... 
Introduction
It wasn't entirely clear from an 'apt-get source boot-floppies' how to make a custom CD image. I just wanted to make a netinst CD with a kernel that had some new driver that I needed so I could get Debian on the box.
I originally wanted to add support of the LSI Fusion MPT SCSI controllers so I had to rebuild the ISO accordingly so I could boot up with one of those controllers. While I was at it, I added the tigon3 driver, e1000, etc. These are all part of the stock kernel now so its just a matter of updating the kernel and plopping it on the CD.
The following lists out the complete steps but V.J. McIntyre
was kind enough to make a fantastic shell script
for automating these steps. Thanks V.J.!
Building the ISO
I used the following recipe to build the ISO:
I recommend using the kernel-package tool 'make-kpkg' to build a new kernel package. This gives you the added benefit of having a customized kernel for the boot CD but also a package that you can use elsewhere.
Customize your kernel with make menuconfig|xconfig|config and then run:
make-kpkg --append-to-version='-bf2.4' kernel_image
to build your kernel package.
Now grab that kernel package you built from above. Use 'kernel.sh' which is located in the boot-floppies root directory as such:
./kernel.sh . 2.4.25 bf2.4
where 2.4.25 is your kernel version. This will create several files for your consumption in the current directory: configbf2.4.gz, sys_mapbf2.4.gz, linuxbf2.4.bin, modcontbf2.4 and modulesbf2.4.tgz.
I've made some modifications to kernel.sh
so you might want to grab mine if you run into problems.
The ./kernel.sh command might bark about directory problems. Make sure you have your kernel package is located directly below the boot-floppies directory (..).
You can now take the files that have been created to build your own CD.
Grab the file mini-iso.sh
and put it in the root of boot-floppies source directory.
In your boot-floppies source directory run as follows:
./mini-iso.sh bf2.4 http:
This will download the bf2.4 boot / root / drivers / rescue files from http://debian.oregonstate.edu/debian
as well as the basedebs and build the file bootbf2.4.iso
You will see that it downloads resc2880bf2.4.bin which is the rescue disk image. Mount this locally using the loopback device:
mount -t auto -o loop resc2880bf2.4.bin /var/tmp/bf2.4
You need some special kernel options to mount that .bin file. Namely, CONFIG_BLK_DEV_LOOP, CONFIG_MSDOS_FS and CONFIG_FAT_FS. Use my kernel configuration
to get a head start. If you can't mount this then you are probably missing msdos file system support. If you are running the 2.6 kernel and you are trying to mount this .bin you will also need CONFIG_NLS_CODEPAGE_437=y in your kernel configuration.
Once mounted copy the file linuxbf2.4.bin created from the ./kernel.sh command to /var/tmp/bf2.4/linux.bin. You'll also want to copy the sys_mapbf2.4.gz and configbf2.4.gz in as well replacing sys_map.gz and config.gz in /var/tmp/bf2.4. Depending on your kernel version you may want to edit /var/tmp/bf2.4/install.sh.
Also, don't forget to edit the version of the kernel you are installing on the ISO in /var/tmp/bf2.4/debian.txt.
You can now umount /var/tmp/bf2.4 and copy resc2880bf2.4.bin back into your boot-floppies source directory (if you moved it from there when you mounted it).
There was a another file that was downloaded when you ran mini-iso.sh called driversbf2.4.tgz. Grab this file and put it in a temp directory and tar zxf it. In this directory you will copy modcontbf2.4 and modulesbf2.4.tgz over modcont and modules.tgz. Rebuild the driversbf2.4.tgz with 'tar zcf driversbf2.4.tgz *' in the temp directory (of course you would have deleted the original driversbf2.4.tgz. so its not included in your new archive.
Now copy the driversbf2.4.tgz back to the boot-floppies source directory and run the mini-iso.sh command from above. You'll have yourself one customized Debian boot ISO.
For specific info on what you absolutely require for the boot kernel, check out:
http://www.debian.org/releases/stable/i386/ch-boot-floppy-techinfo.en.html#s-rescue-replace-kernel
– A paste from the above debian.org link:
If you find it necessary to replace the kernel on the rescue floppy, you must configure your new kernel with these features linked in, not in loadable modules:
- RAM disk support (CONFIG_BLK_DEV_RAM)
- Initial RAM disk (initrd) support (CONFIG_BLK_DEV_INITRD)
- Kernel support for ELF binaries (CONFIG_BINFMT_ELF)
- Loop device support (CONFIG_BLK_DEV_LOOP)
- FAT, Minix, and Ext2 file systems (some architectures don't need FAT and/or Minix file systems ? see the source) For Intel x86, Minix file support is not required, but MSDOS and ext2 are.
- Socket filtering for DHCP (CONFIG_FILTER)
- Packet socket, also for DHCP (CONFIG_PACKET)
- Unix domain sockets for system logging ? is provided as a module in the vanilla flavor (CONFIG_UNIX)
Be sure that the kernel you plan to use does NOT have CONFIG_DEVFS set. CONFIG_DEVFS is not compatible with the installer.
You may want to build your own custom kernel now.