BSDInstall: I want the bikeshed painted plaid

Nathan Whitehorn nwhitehorn at freebsd.org
Sun Jan 2 19:22:14 UTC 2011


As those of you who obsessively follow the SVN commit mails may have 
noticed, I recently began work on a new installer, which I have 
tentatively named 'bsdinstall'. You can find the code itself at 
svn://svn.freebsd.org/base/user/nwhitehorn/bsdinstall and a wiki page 
describing it at http://wiki.freebsd.org/BSDInstall.

Why Plaid?
----------
This project started because we have never, in three major releases, 
shipped an installer on PowerPC capable of installing a booting system 
without absurd amounts of handholding and use of external tools. This is 
especially galling when we have tools in the base (gpart, newfs, and 
tar) fully capable of doing this. As it turns out, by the time you've 
written a shell script to combine these things, you're well on your way 
to deciding to write a new installer.

The goal of this project then, was to maximally reuse existing tools and 
to make the installer a chain of easily modifiable or replaceable 
components so that future installer-tinkerers will not run away in 
terror as quickly as I and many others have from sysinstall and libdisk.

Architecture
------------
BSDInstall is a set of tools that are called in sequence by a master 
script. These tools are, for example, the partition editor, the thing 
that fetches the distributions from the network, the thing that untars 
them, etc. Since these are just called in sequence from a shell script, 
a scripted installation can easily replace them with other things, (e.g. 
hard-coded gpart commands), leave steps out, add new ones, or interleave 
additional system modifications.

Status
------
This provides almost all of the functionality of the existing sysinstall 
'Express' track, and works Right Now. It installs working, bootable 
systems you can ssh into immediately after reboot on i386, amd64, 
sparc64, powerpc, and powerpc64. There is untested support for pc98. The 
final architecture on which we use sysinstall, ia64, is currently 
unsupported, because I don't know how to set up booting on those systems.

Paint Comes in Plaid?
---------------------
With only a little more spit and polish, I think this could easily 
replace sysinstall for the 9.0 release. It works right now on almost all 
architectures for which we ship install media. There are no dependencies 
on strange scripting languages, and only one on tools not currently in 
the base system.

bsdinstall depends on the newer dialog and libdialog from Thomas Dickey 
(devel/cdialog). This is LGPL2, but that is better than the current 
dialog's license, and the software is so much better to develop with 
than the current mess that is libdialog it might be good to have anyway. 
In addition, I believe he is the sole author, and it's possible he could 
be persuaded to relicense it.

I don't entirely know how all of this relates to pc-sysinstall. 
pc-sysinstall has some more features (e.g. installation onto geli 
disks), and certainly more thought went into it, but requires an immense 
amount of work to make it work on non-x86 systems and a text front-end 
is not yet complete. When it is ready, a lot of the infrastructural 
changes required for bsdinstall (live CDs for installation, a new 
libdialog, revised distfile format, etc.) will probably help 
pc-sysinstall as well.
-Nathan


More information about the freebsd-arch mailing list