Hi folks, I've been working on an installer for FreeBSD for the past month, and I've finally come along far enough that I have something usable that people can play with and provide feedback. Our sysinstall(8) is actually pretty darn nice. No really. Think about it. Forget for a moment that it doesn't have a spiffy GUI and look at some of the things it does right: 1. It doesn't have any 3rd party dependency (it builds out of the src tree). 2. You're not limited by the physical media the installer is on. You can install from CD, FTP, HTTP, NFS, UFS, FAT, etc. 3. If you want to build your own release you can use a configuration file for unattended setup. 4. libdisk(3) On the other hand it suffers from one major flaw (which is the root cause of its other problems): the presentation and logic is so tightly coupled together that it's damn hard to make non-trivial changes without breaking it. So, it hasn't been able to move with the times or change significantly over the years because it would essentially have meant a complete rewrite. The DragonFly folks went ahead and did a complete re-write, but while their implementation addressed sysinstall's major problem, they didn't keep (or re-implement) its good points. Worse, from our stand-point, the BSD Installer (www.bsdinstaller.org) only works from a live-cd and depends on messy command lines and string-parsing to install the system. Recently, I believe they've gone even further and re-implemented the back-end using the Lua scripting language (making it even more unusable for us). Having said that; however, there is one thing that I really like about it: they've managed to completely divorce the presentation layer from the installer logic. All the logic for installing the system is contained in the back-end application, and all the front-end does is essentially just display forms and return the user's choices to the back-end. What I like even better is that the front-end and the back-end don't even have to be on the same machine, which opens up a whole new area of installation options. So essentially, what I'm doing is taking all the parts I like about sysinstall(8), putting it on the framework provided by the BSD Installer folks, and adding a couple of ideas of my own. Here's what I envision the end-product to look like: 1. One back-end (in C), multiple front-ends (curses, web browser, X) 2. Supports multiple installation media 3. XML based application configuration - no hard coded options/distributions/packages in source files - no flat file (key=value) configuration files 4. Supports Internationalization 5. Clean and modular backend so that the installer can grow right along FreeBSD itself (i.e. - ZFS support, etc) What I have so far is alpha quality. It will install a basic FreeBSD system that you can boot into, but that's about it. It works on i386/amd64, uses libdisk(3) for slicing and dicing disks, and looks for the install cd on the first IDE CD-Rom. It installs the complete base system (all distributions), and doesn't know about packages yet. You can find the tarball at: http://people.freebsd.org/~mtm/fin.tar.bz2 The tarball contains the modified BSD Installer source code, a script to copy the code into the right places in the source tree, and a diff against src/ to integrate it into the build system and make a release CD. The script I use to build a release is here: http://people.freebsd.org/~mtm/scripts/makerelease I'm very much interested in your comments and suggestions. Cheers. -- Mike Makonnen | GPG-KEY: http://people.freebsd.org/~mtm/mtm.asc mmakonnen _at_ gmail.com | AC7B 5672 2D11 F4D0 EBF8 5279 5359 2B82 7CD4 1F55 mtm _at_ FreeBSD.Org | FreeBSD - http://www.freebsd.orgReceived on Tue Dec 18 2007 - 22:20:23 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:24 UTC