BSDInstall: merging to HEAD

Nathan Whitehorn nwhitehorn at
Sun Jan 16 15:46:06 UTC 2011

On 01/16/11 05:48, Garrett Cooper wrote:
> On Sun, Jan 16, 2011 at 3:06 AM, krad<kraduk at>  wrote:
>> On 14 January 2011 18:26, Nathan Whitehorn<nwhitehorn at>  wrote:
>>> As those of you who have been reading freebsd-sysinstall and freebsd-arch know, I have been working for a few weeks on a lightweight new installer named 'bsdinstall'. This is designed to replace sysinstall for the 9.0 release.
>>> After two weeks of testing and bug fixes on the sysinstall list, I believe this now has all required functionality and is ready to be merged into the main source tree. I would like to do this on Tuesday, 18 January. Switching this to be the default installer would happen a few weeks after that, pending discussion on release formats with the release engineering team. This should provide a sufficient testing period before 9.0 and allow a maximal number of bugs to be discovered and solved before the release is shipped.
>>> Demo ISO for i386:
>>> SVN repository: svn://
>>> Wiki page:
>>> Goals
>>> -----
>>> The primary goal of BSDInstall is to provide an easily extensible installer without the limitations of sysinstall, in order to allow more modern installations of FreeBSD. This means that it should have additional features to support modern setups, but simultaneously frees us to remove complicating features of sysinstall like making sure everything fits in floppy disk-sized chunks.
>>> New Features:
>>> - Allows installation onto GPT disks on x86 systems
>>> - Can do installations spanning multiple disks
>>> - Allows installation into jails
>>> - Eases PXE installation
>>> - Virtualization friendly: can install from a live system onto disk
>>>   images
>>> - Works on PowerPC
>>> - Streamlined system installation
>>> - More flexible scripting
>>> - Easily tweakable
>>> - All install CDs are live CDs
>>> 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 functionality most similar to the existing sysinstall 'Express' track. 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 -- patches to solve this are very much welcome.
>>> There are still some missing features that I would like to see in the release, but these do not significantly impact the functionality of the installer. Some will be addressed before merging to HEAD, in particular the lack of a man page for bsdinstall. Others, like configuration of wireless networking and ZFS installation, can happen between merge and release. The test ISOs are also lacking a ports tree at the moment, which is a statement about the slow upload speed of my DSL line and not about the final layout of releases.
>>> Please send any questions, comments, or patches you may have, and please be aware when replying that this email has been cross-posted to three lists. Technical discussion (bug reports, for instance) should be directed to the freebsd-sysinstall list only. Most other discussion belongs on -sysinstall and -current.
>> I dont follow the freebsd-sysinstall and freebsd-arc list so sorry if
>> this has already been discussed. From what I have seen pc-sysinstall
>> already does all these things, and can install freebsd. Therefore why
>> are we reinventing the wheel?
>> I don't mean this as any disrespect to the work you have done.
> Hi Krad,
>      I asked this two weeks ago and in summary:
> - pc-sysinstall is x86-centric and porting to powerpc is non-trivial,
> and sysinstall is incomplete on powerpc. Nate sought to get a working
> powerpc port with minimal effort.
>      Please read other replies in the archives on freebsd-arch /
> freebsd-sysinstall to get more info as to why things have been done
> the way they have been done.

Here's the summary of why this doesn't use pc-sysinstall. PC-sysinstall 
is the backend of the PC-BSD installer, and was imported into FreeBSD in 
June 2010 with the goal of replacing sysinstall. It is much more 
full-featured that either bsdinstall or sysinstall, providing support 
for encrypted disks, ZFS, and mirroring. These are all good things. 
However, 9.0 is coming up quite soon, and pc-sysinstall still does not 
have a usable front-end (the code in the tree is just a script 
interpreter) nor support for non-x86 platforms. Adding these things 
appeared to be quite difficult and, in the second case, to require major 
rearchitecting of the installer backend. Since the original goal that 
Garrett alluded to was to provide an installer on PowerPC, this was 
obviously a non-starter.

What BSDinstall is is a stopgap, designed to provide a subset of 
pc-sysinstall's features but to be available quickly, in time for 9.0, 
and to have all of the features it does provide actually hooked up and 
usable. At the same time, I have architectured bsdinstall in such a way 
that (a) I would be happy enough to be stuck with it permanently (i.e. 
it is not a quick hack and was designed to be easily maintainable and 
extendable) and (b) it could be later adapted into the missing front-end 
for pc-sysinstall without an enormous amount of trouble. Many of the 
issues we need to face now to integrate bsdinstall (making bootable live 
CDs or the integration of a newer libdialog, for instance) are common to 
any later effort to import a pc-sysinstall front-end. Having these 
things in use and in the tree will only help pc-sysinstall whenever it 
is finished.

More information about the freebsd-current mailing list