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