splitfs patch for floppies up for review
John Baldwin
jhb at FreeBSD.org
Thu Jan 22 08:42:06 PST 2004
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 at .
- 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 at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-qa
mailing list