Subject: newfs_msdos
To: None <tech-userlevel@netbsd.org>
From: Brook Milligan <brook@biology.nmsu.edu>
List: tech-userlevel
Date: 12/09/1999 08:22:19
I am revamping newfs_msdos (and creating a new dumpfs_msdos) to be a
more general tool for creating FAT filesystems on hard disks as well
as floppies.  I have need of this for making shared disks (I don't
trust MS tools to create disks in a way that won't stomp on the
existing bootblocks) and for creating files containing disk images for
use with, for example, doscmd.  It seems that there would be broader
interest in this and I am proposing to replace the current version of
newfs_msdos with my enhanced tool if there is interest.  Is there?

In any case, I have two design ideas and would appreciate feedback on
them

Writing bootsectors for FAT filesystems requires knowledge of a bunch
of geometry and other parameters describing the disk (or partition).
I can take these from the command line or from compiled in tables.
However, a more general approach is to take it from a configuration
file.  My first proposal is to extend the fields supported by
/etc/floppytab to include the extra information needed.  Is this a
reasonable approach?  Are there objections?  Better suggestions?

The bootsectors also, of course, include bootcode in addition to the
geometry information.  The specific bootcode that is appropriate
depends on the OS to be booted from the filesystem.  This information
can also be taken from various sources: compiled in tables or an
external file containing a bootblock.  However, it might make sense to
create a new file (e.g., /etc/boottab?) containing a set of available
bootcode; this file could be scanned to pick out the correct one if
that was included.  Additionally, new bootcode could be added without
recompiling newfs_msdos.

What is the best solution here?  Should newfs_msdos just include
within the binary a table of different bootcodes?  Should there be a
separate table (where? name?) to which new ones could be added?  Is
there a problem with distributing a set of binary bootblocks for a
variety of systems?  (I think not since the same bootblocks are
written to all formatted disks, which of course must be freely
distributed.)  What suggestions can you offer here?

Thanks for your help.

Cheers,
Brook