[NetBSD logo]    &    [Google logo]

NetBSD-SoC: Customizable install tool

What is it?

This project is to provide the NetBSD operating system with a flexible, customizable as well as automatable installation tool. The current utility for instaliing NetBSD on a computer is sysinst. Sysinst is a basic text-based program that is both higly technical and highly interactive. That is, it requires user input at many different points throughout an installation, which requires the user to wait while the installer finishes the various steps. This is unacceptable for both new users and those who would like to make many quick, identical installations, like in a classroom setting. This project will split sysinst into a back end as well as a front end. The idea is that the back end can do a complete installation all at once based on a configuration file either created in advance or made on-the-fly at the time of installation. This updated utility will make NetBSD's installation process much more usable to novices and pros alike.

The project involves two main areas: the creation of an installation configuration file format and the splitting of sysinst into a front end and a back end. The file format must be made so that installations can be described either generally or specifically. It must be able to convey every option that a user can make in the front end, and should be amenable to hand editing for advanced users. The second must dissociate a significant amount of code that is at present tightly integrated, while still maintaining the same functionality. There will be three areas to the code base: the front end, the back end, and the parser (in the form of a library). The front end must be able to parse files, because default installations will be described in the same configuration format, and the front end must disambiguate it to create an exact specification. The front end will also use the parser library in order to write out the files. The project will deliver the file format standard, specified in the form of a man page, the new installation tool, and updated documentation on the tool itself.

Throughout the project period I will be discussing the project on the tech-install mailing list.

You can see the latest changes (as far as they are committed) here, in the CVS browser: http://netbsd-soc.cvs.sourceforge.net/netbsd-soc/install-tool/


Here I will list the milestones in the project as I reach them.

Basic Calendar

Below you see the rough outline of the project timeline. The bold dates are the important Google-set dates; the others are specific to my project and are likely to be swapped around. The nature of this project involves many separate components that will be completed asynchronously. The main flow of progress should remain the same throughout though.


This project will deliver a complete replacement for sysinst. The tool must have at least the same amount of functionality, with more flexibility offered along the way. One snag here is that sysinst has a large amount of machine dependent code, supporting every architecture for NetBSD. Because of the limited time available for this project, as well as the lack of availability of these machines for testing, only the amd64/i386 ports will be converted initially.

Mandatory (must-have) components:

There are a lot of details here, because the configuration file must specify everything that the user can in the current sysinst.

Optional (would-be-nice) components:

This is a pretty long list. We'll see how much stuff I can fit in. There is quite a lot of room for further improvement. This is listed roughly in order of importance.


[Insert use and test cases, instruction for integration into NetBSD, installation, configuration, using; reference existing standards or other existing works where appropriate]

Technical Details

Mostly just existing sysinst stuff! Additionally, the parser uses lex and yacc. More here later as I figure out what exactly the project is going to require (though it's likely not much more than what's here).

[Documentation of existing NetBSD interfaces used, new interfaces created, pointers to header-files, section .2/.3/.9 manpages created and used, etc.]

SourceForge.net Logo
Zachary Wegner <zwegner@gmail.com>
$Id: index.html,v 1.7 2008/07/14 18:56:51 zwegner Exp $