The All In One Boot Floppy

“The Only Boot Floppy You Ever Need”
This is about version 0.9. Jump to the latest version.

Why yet another boot floppy?

There are several reasons why I created this floppy:

What will never be on this floppy

There will never be a "linux live system" like tomsrtbt on it. Those floppies all have a fundamental flaw: there is too much software needed to fit on a single floppy. Either there is no command completion, or no NTFS/SMB/ReiserFS/putyourfavouritefilesystemhere support, or there is no network driver for the PC you have to save your data from, ad infinitum. When you need a linux live system, use a CDROM based one like Knoppix or grml, and use this floppy to boot from your CDROM if your BIOS does not support it.

There will be no commercial software on this floppy (like MSCDEX.EXE from Microsoft) since putting it on would make distribution of the disk much harder, if not impossible. If you need those, customize the disk yourself (it uses a FAT12 filesystem that can be read by virtually every operating system). Proprietary freeware tools are no problem though.

Where can I download this floppy

Download the floppy image (1440 KB).

Download grub patch (1 KB) and all config files (11 KB, kind of source code).

On Windows, use RawWriteWin to write it to a floppy. Linux users will know themselves how to use dd :-)

There is also a lite version (720 KB) available which can be used by memdisk from a CDROM. (Memdisk is supported by ISOLINUX and by CDShell). If you prefer to use GRUB as your CD boot loader (which is cool), you can use memdisk to load the freedos-only version (720 KB) and put all the other stuff outside the image. Note that it is not possible to load memtest86 or an etherboot image from inside memdisk, so these have been removed. For building this floppy, another patch (on top of the patch mentioned above) is required since the grub+memdisk combination does not like 720K floppies. This patch is not minimal, but it works. (If you want to check which changes are really required in stage1, please tell me if you found it out.)

What does the floppy currently contain?

The current version (Version 0.9) contains the following:

How was this floppy created?

For creating floppies like this, it is very useful to have an I386 emulator like QEMU handy. This allows you to build floppy images on hard disk and test them without having to write them to slow floppies (and without having to reboot a lot).

If you don't have a physical floppy drive and are on a Windows system, having VFD is very useful since it allows you to create a virtual floppy drive that stores its data either in an image file.

For patching GRUB you will need a GNU/Linux or similar system, however if you don't need the eye candy on the splash screen, it should work with an unpatched GRUB as well.

Let's start with Smart Boot Manager. Download the installer suitable for your system and use it to install SBM onto a floppy (image) that does not contain any important data. Boot it once, configure it and let it save its settings. Then grab the first 45 sectors (22.5KB) from the floppy and store it into a file somewhere (you will need this later). Download SYSLINUX and store its MEMDISK binary somewhere as well. (The memdisk version on the floppy is quite old, you can use a more recent one if you prefer)

Next start with a FreeDOS boot floppy. Remove as much stuff as possible and put those tools onto it you want to have on the final floppy. (For M$ addicts: this works as well with a MS-DOS floppy or Windows rescue disk, but will need more space than the FreeDOS version). You can find download links for those tools on the original floppy in the list above. Now grab the first sector (the boot sector) from this floppy and save it into a file as well.

Next download the GRUB 0.9x source code (GRUB 1.9x is still alpha). Patch it with this patch and apply it if you want to use a nice splash screen. You can as well use a vanilla GRUB (or even a precompiled one), just don't forget to remove all the "catf" commands from the config files if you use those. The only files from GRUB you need are stage1 and stage2

Now take your FreeDOS floppy, and make a new directory boot/grub on it. Put stage1 and stage2 in (and if you have any menu.lst, put it in as well). Put your SBM image, your MEMDISK binary and your FreeDOS boot sector to /boot. (If you want to use the original config files, name them sbootmgr.dsk, memdisk.bin and bootsect.or). Mounting the floppy as msdos instead of vfat can safe disk space since vfat will have to store filenames twice (short and long). So I always use short filenames in my examples. Add other stuff (memtest86 binaries, etherboot images, what you like), there is no real problem in adding them since GRUB can boot them directly.

What is still left is "installing" GRUB on the floppy. For that you need a running GRUB. Take a second floppy and rawrite stage1 and stage2 (concatenated) onto it. This floppy will boot into console GRUB mode. Boot from this floppy, then swap floppies (in QEMU press Ctrl+Alt+2 and enter "change fda /new/filename" without quotes), and enter "root (fd0)" and "setup (fd0)" on the grub console. Voila -- reboot and your floppy should be working

For the lite version, you have to patch your GRUB a second time, but copy the stage1 before. Copy patched stage1 and stage2 onto the floppy and concat original stage1 and patched stage2 for the second floppy.

What is the format for the splash screen?

Basically, it is a "text file" that uses the BIOS charset. Use your favourite DOS editor to create it first (remember, you can use Alt+Numpad for creating nice graphics tiles). Do not use TAB characters (and do not use NULs. BEL will be interpreted as a beep, so avoid it as well.

Then use a hex editor to add control codes to it. All control codes are two characters long and start with a TAB character (0x09). The following codes can be used:

0x09 0xXY (X!=Y)   Set color spec. X is background color, Y is foreground color. 
                   Using background color 8-F creates blinking text instead.
0x09 0x00          Reserved (contains NUL)
0x09 0x11          Clear screen
0x09 0x22          Wait for a key press (without a prompt since a 
                   prompt would mangle the screen)
0x09 0x33-0xFF     Reserved for future use
Note that due to GRUB limitations, lines can only be 79 chars long, not 80. Yes, this format is crude, but it was simple to implement and it worked for the splash screen (after uncountable tests it looked OK, yay!) and the GPL viewer.

Contact me

Send Feedback to schierlm@gmx.de.
Michael Schierl, Ignaz-Baldauf-Str. 5, D-86551 Aichach, Germany