Subject: installing with sysinst on small (4MB, i386) systems....
To: NetBSD/i386 Discussion List <port-i386@NetBSD.ORG>
From: Greg A. Woods <woods@weird.com>
List: tech-install
Date: 04/16/2001 17:33:55
[[ note I've cross-posted this on port-i386 and tech-install, though it
probably only needs to be on one or the other -- anyone following up
should feel free to re-direct to which ever list they feel is most
appropriate (I think I'm now subscribed to tech-install...) ]]

I've got this little 486 machine (an old Commodore laptop) that I've
been playing with.  I finally generated an INSTALL-TINY floppy that
boots OK (though with only 2KB to spare on the diskette!) and there's
enough RAM left to run 'ls', 'ifconfig', and such, but not 'sysinst'.
Sysinst gets started and will go so far as to discover what device to
install on and then is killed for exhausting all of the non-existant
swap space (i.e. for exhausting all remaining real memory).

I think this shows the folley of trying to use a ramdisk filesystem in
this scenario.  Even though the text pages of the ramdiskbin program are
paged directly from the RAM-resident filesystem (and thus are very
effectively "shared") the rest of the filesystem chews up extremely
valuable RAM and makes it unavailable to any user program such as
'sysinst'.  Without a swap device there's no virtual memory and you're
SOL if you try to run too large an application.

There are two obvious choices:

	1. go back to using a separate root filesystem on a second
           floppy for the *-tiny tools.

	2. swap to floppy (or if you're lucky some other device which
           won't be used during the install process)  I think even 1.2MB
           additional virtual memory would suffice....

I'm not sure which would be more "effective" in terms of performance,
but I suspect #2 would be.

Obvioulsy #2 is easier to implement too (and one can very easily hack it
together manually even, though having fdformat in ramdiskbin might make
it easier, and I suppose I could give up enough other tools to make it
fit, though I'd hate to do that).  As I say also gives the user the
option of using a faster and larger swap device if one is available.

Of course if you implement #1 again you could *also* do #2 and thus
provide for lots of headroom in sysinst!  :-)

(Meanwhile I'm going to try a completely manual install and see if
that'll still work or not -- I'm not sure 'pax -xz' will run, especially
with an NFS mount... gzip.cro needs over 350KB alone just to start, and
pax.cro another 128KB.  There's 1300KB free at boot time though.)

(I also thought of fixing sysinst so that it left the install disk's
partitions alone which would allow you to swap to the install disk, but
the control over disk partitioning during install is one of the primary
reasons to use sysinst in the first place.  Splitting sysinst into
several programs might allow each part to use less RAM at run-time
too -- remember the BASIC "CHAIN" statement?.  :-)

-- 
							Greg A. Woods

+1 416 218-0098      VE3TCP      <gwoods@acm.org>     <woods@robohack.ca>
Planix, Inc. <woods@planix.com>;   Secrets of the Weird <woods@weird.com>