Bootflop HOWTO, a stroll down memory lane

a stroll down memory lane.

I especially love the email address I had. ron@draconia.hacktic.nl. We had to use UUCP to retrieve mail

	 The Making of a bootable floppy

			   February 1, 1994

			      Ron Smits

(ron@draconia.hacktic.nl)

 Every now and then  the question arises on  the net on  how to make a bootable disk There are several reasons for people to make a bootable disk. They want to have an emergency disk, they  want to roll their on distribution set or they just want to know how it is done.
 This document will be an attempt to describe  all the necessary steps that will lead to  a bootable floppy.  At the  end of the document you will  know how to  make bootable floppy that  will  load itself into a ramdisk and how to  make one that's  just bootable. It's basically the same.

 Any comments on how to improve this document, please let me know on the above mail address. All comments and suggestions are welcome.


----------------------------------------------------------------------
Right let's get on with  it. I will describe the  way I usually follow when making a bootable disk. (I do this so every  now and then to keep kernels uptotdate and  to pass among  my friends and collegues  to let them experience the 'Linux' feel).

1. The kernel
 Create a kernel with root device  set to /dev/fd0. You can accomplish this in two ways:
 1. Edit Makefile in /usr/src/linux and set the variable `ROOT_DEV' to
    /dev/fd0 or keep it empty. If you keep it empty, the default of
    FLOPPY will be used by build. Personnaly I like to fill it in,
    keeps you from guessing and remembering what the default was.
 2. take an exsisting kernel and patch it with `rdev' like this
      # rdev -r zImage /dev/fd0
    this will patch the kernel named zImage to use the floppy as
    rootdevice.
----

2. the files
 Create a subdirectory  somewhere on your  system as root. Call it for example /tmp/bootflop. In  this  directory  create  the   following directories:
 bin
 etc
 etc/lilo
 lib
 dev

You must populate these directories with some  esential files in order to have a working system:

bin:
	cp, df, fsck, fsck.ext2, fsck.minix, ls, rm, sh, vi, mount

 All these commands, except vi, can --normally--  be found in /bin. vi is usually in /usr/bin.

etc:
 zImage, fstab

Fstab is needed  for df to work properly,  plus you can populate it to have your harddisks mounted on several mnt  mountpoints. zImage is the kernel you made in step 1.

etc/lilo:
 	any_d.b, boot.b, chain.b, floppy, disktab, lilo, map, mkck, 
        os2_d.b.

These files are needed to make the floppy bootable.(We'll come back to one of them later). The file floppy is the lilo configuration file see point 3.

lib:
	libc.so.4

This is the shared library. The other commands  need it! Forget it and be amazed when you start from the disk (come on try it :-))

----

3. Lilo configuration
 I always use  Lilo to make floppies (and  my harddisk) bootable. Here is a copy of the config file I use for floppies, it's named floppy:

	#
	# lilo configuration for floppy boot
	install = /mnt/etc/lilo/boot.b
	map = /mnt/etc/lilo/map
	backup = /mnt/etc/lilo/junk
	compact
	vga = normal
	root = /dev/fd0
	boot = /dev/fd0
	image = /mnt/etc/zImage
	  label = zLinux

As you can see, I presume that the  floppy is mounted  as /mnt when we are making it. it is   _*VERY*_ important that the keywords  `install' and `map' point   to files  on the  floppy,  so in  the  /mnt/etc/lilo directory. Otherwise  the machine will  not boot. The backup may point to something else.

----
4. The floppy
 Be smart, use a new one! 
format it:
	# fdformat /dev/fd0H1440
Make a filesystem on it:
	# mkfs -t minix /dev/fd0 1440
mount it:
	# mount -t minix /dev/fd0 /mnt

The  reason I use a minix   filesystem is twofold,   first of all, the minix filesystem has less overhead than  the more advanced filesystems like   extfs and ext2fs.   And secondly,  the  kernel  demands a minix filesystem, if you want to copy it to a ramdisk

Now copy the tree structure that we made to it:
	# cd /tmp/bootflop
	# find . -print | cpio -pvdum /mnt

After having populated these directories,  go to /mnt/dev and make the device nodes:
	# cd /mnt/dev
	# /dev/MAKEDEV generic

(Note: I know  MAKEDEV is somewhere in a   package, but I haven't  the faintest idea where. If you need it and can't find it, drop me a line, I'll mail it to you)

----
5. Making it bootable (finally)
 We now have a filesytem with the bare minimum on it to make it run as a standalone system. with the tools we placed on it, we can even do some repairing, so the last thing to do is to make it bootable. If you made a lilo configuration file as described in point 3, you can do thefollowing:

	# cd /mnt/etc/lilo
	# ./lilo -v -C config
You should expect the following as output from lilo:
	LILO version 0.10
	Written 1992,1993 by Werner Almesberger

	Reading boot sector from /dev/fd0
	Merging with /etc/lilo/boot.b
	Boot image: /mnt/etc/zImage
	Added zLinux
	/etc/lilo/junk exists - no backup copy made.
	Writing boot sector.

That's it! you've made a bootable floppy, unmount it and try it out!

----
6. bootable floppy with a ramdisk.
 The last  thing I want  to  explain is how to   create a ramdisk. The purpose of having a  ramdisk is to  have your floppy  drive free to be able to mount another floppy with even  more tools and rescue material on it. (I personally never do it, but have a bootflop with ramdisk any because it's faster then the floppydrive).
 Actually   it's extremely easy  and  can  be  done  with  a  one line modification.  The  kernel  provides  all the   hooks  needed. Add the following line to /mnt/etc/lilo/floppy
	ramdisk = 1440
perform the actions in point 5 again and presto, You have a bootable floppy that copies itself into a ramdisk, leaving your floppydrive free for other more important stuff.

----
7. the End?
 The steps described above have been extensively tested by over a longer periode of time. It has proven it's worth! And it made me paranoide, I always make sure that I have at least 2 of them. Murphy lurks in the corner!.

 This HOWTO is far from perfect, so all remarks and suggestions are welcome. If the interest is ther. I will keep maintaining it.

	february 4, 1994
	Ron Smits