Fwd: YAFI or Yet Another FreeBSD Installer
Garrett Cooper
youshi10 at u.washington.edu
Tue Dec 18 19:41:48 PST 2007
> From: Garrett Cooper <youshi10 at u.washington.edu>
> Date: December 18, 2007 4:55:41 PM PST
> To: mtm at FreeBSD.Org
> Subject: Re: YAFI or Yet Another FreeBSD Installer
>
> On Dec 18, 2007, at 3:24 PM, Mike Makonnen wrote:
>
>> 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 @ gmail.com | AC7B 5672 2D11 F4D0 EBF8 5279 5359 2B82
>> 7CD4 1F55
>> mtm @ FreeBSD.Org | FreeBSD - http://www.freebsd.org
>
> That's awesome! I assume that certain GUI~ish features can now be
> invoked via the command line like the disklabel editor? That would
> be the ultimate next step if it's not already in the works :)..
>
> Thanks Mike!
> -Garrett
Forgot to include current at .
-Garrett
More information about the freebsd-current
mailing list