From owner-freebsd-qa@FreeBSD.ORG Thu Jan 22 08:42:05 2004 Return-Path: Delivered-To: freebsd-qa@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D09AE16A4CE for ; Thu, 22 Jan 2004 08:42:05 -0800 (PST) Received: from mail2.speakeasy.net (mail2.speakeasy.net [216.254.0.202]) by mx1.FreeBSD.org (Postfix) with ESMTP id 63CCE43D55 for ; Thu, 22 Jan 2004 08:41:39 -0800 (PST) (envelope-from jhb@FreeBSD.org) Received: (qmail 29391 invoked from network); 22 Jan 2004 16:41:38 -0000 Received: from dsl027-160-063.atl1.dsl.speakeasy.net (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) encrypted SMTP for ; 22 Jan 2004 16:41:38 -0000 Received: from 10.50.40.205 (gw1.twc.weather.com [216.133.140.1]) by server.baldwin.cx (8.12.10/8.12.10) with ESMTP id i0MGfYM0024808; Thu, 22 Jan 2004 11:41:34 -0500 (EST) (envelope-from jhb@FreeBSD.org) From: John Baldwin To: qa@FreeBSD.org Date: Thu, 22 Jan 2004 11:42:27 -0500 User-Agent: KMail/1.5.4 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200401221142.27173.jhb@FreeBSD.org> X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) cc: re@freebsd.org cc: re-builders@freebsd.org Subject: splitfs patch for floppies up for review X-BeenThere: freebsd-qa@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: FreeBSD Quality Assurance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jan 2004 16:42:06 -0000 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 <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org