Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Jan 2004 11:42:27 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        qa@FreeBSD.org
Cc:        re-builders@freebsd.org
Subject:   splitfs patch for floppies up for review
Message-ID:  <200401221142.27173.jhb@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
The patch it as http://www.FreeBSD.org/~jhb/patches/splitfs.patch

This is the first cut, and I plan to possibly make some other changes 
afterwards.  Basically, the floppy installs are reworked as follows:
- Use a GENERIC kernel rather than stripped down BOOTMFS, this removes all the
  BOOTMFS cruft and driver floppies.
- Add support for creating a floppy set for a large file that is split across
  multiple floppies (number of floppies determined automatically).  For each
  splitfile, a foo.split and foo.boot (which must go on the boot floppy) are
  created.  The foo.boot contains the first 16k and exists as a workaround
  for the fact that gzipfs and bzipfs in libstand want to read in the header
  when the file is opened and that the module loader code opens a file 4 times
  before the final open that actually reads in the contents of the file.  The
  rest of the foo file is split into foo.aa, foo.ab, etc. files that are then
  stuck in foo1.flp, foo2.flp, etc. images.
- The GENERIC kernel is stored as a split file and currently takes up two
  floppies (kern1.flp, kern2.flp) with some room to spare on kern2.flp.
- The mfsroot may optionally be either split or placed on the boot.flp in its
  entirety.  If you want to use splitfs for the mfsroot, you define
  SPLIT_MFSROOT.  Currently for i386 (and pc98) the mfsroot fits onto the
  boot.flp with room to spare, so SPLIT_MFSROOT is not defined.   If the
  mfsroot ever grows such that it no longer fits, that variable just has to be
  added to the right section and no other work is necessary by re@.
- Thus, currently for i386, there are now 3 required floppies: boot.flp,
  kern1.flp, and kern2.flp.  Note that this was done with a stock HEAD GENERIC
  including DDB, INVARIANTS, WITNESS, etc.  A release GENERIC might take up
  even less space, but will probably still need 2 floppies of its own.

Things that are lost:
- There is no longer a 2.88 boot.flp image for use with emulated CD booting.
  The non-emulated CD booting works for almost everyone who boots from CD, and
  the complaints when floppy support was threatened were from people using
  actual floppies to install.  If cdboot doesn't work for someone, they can
  always use the boot floppies to boot and still install off of CD instead.
- All the BOOTMFS cruft that re@ and others used to have to maintain.
- The driver floppy.  It may at some point be useful to bring this back in
  some fashion to support drivers that aren't in GENERIC but have modules.
  Note that CD installs have this same problem, however, and the better
  solution might be to stick such modules in the mfsroot instead.

Things that are gained:
- No more dealing with trying to fit a kernel.gz into a single floppy.
  Floppies built during the release process will now just always work and
  never require re@ intervention because they kernel exploded in size.

Things I want to do after this checkpoint is committed.
- Re-enable boot floppies for Alpha.  Any other arch that wants to support
  boot floppies can also add support for them if so desired.
- Stick a gzipp'd acpi.ko on the boot floppy so that the boot kernel used on
  floppies will match exactly that used with CDs.
- Switch back to a stock loader on the boot floppies including forth.
- If possible, (the floppy switching makes it hard to do) enable the beastie
  menu on the boot floppies.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401221142.27173.jhb>