tech-install archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Sysinst project: final GSOC report



Howdy folks,

It's a bit late, but here's a report of the latest progress from the
install-tool (sysinst) project during the GSOC period. When we last
left off (http://mail-index.netbsd.org/tech-install/2008/07/15/msg000033.html),
the back end was nearing completion, the library contained an
almost-completed parser but little else, and the front end was not
started yet. Well things have changed since then. The back end is
basically done, but because of the complications of wrapping it all
together and putting it on some install media it hasn't been tested
yet. Instead, each step of the process has been supplemented with a
generous amount of debugging output which is verified against the
expected results. The library has been supplemented by some non-parser
code. Right now, this consists of a common.h which holds the parts of
defs.h which are the same between the front and back end. Also, the
message handling is now handled by the library. Menus are exclusively
in the front end. I'm considering creating a fourth part, just called
"common", which contains code that both the front and back end use.
This is so that the parser remains a separate entity and isn't linked
to any code that "does anything". The front end is coming along, I'd
say about half way until it is functional. It properly handles MBR and
BSD partitions, sets and kernels, and install media. Here's a little
teaser:

# NetBSD Installation Configuration File

# Verbosity
VERBOSITY=progress;

# Exit on error
EXITONERROR=yes;

# Installation media
MEDIA={
    TYPE=floppy DEV="/dev/fd0a" TYPE="ffs" XFERDIR="/usr/install"
RMXFERDIR=yes SETS=*;
};

# Kernel
KERNEL=(kern-GENERIC);

# Sets
SETS=(base, etc, comp, games, man, misc, tests, text, xbase, xcomp,
xetc, xfont, xserver);

# MBR Partitions
MBRPARTITIONS={
    PART=a TYPE="NetBSD" BOOTMENU="" ACTIVE START=63S  SIZE=390719792S;
};

# BSD Partitions
BSDPARTITIONS={
    PART=a FS="FFSv1" MOUNT="/" NEWFS=no SIZE=390719855S;
    PART=c FS="unused" NEWFS=no SIZE=390719792S;
    PART=d FS="unused" NEWFS=no SIZE=390719855S;
};

The project has presented quite a bit of challenging design decisions.
For instance, should the library contain any MD code? And if it does,
should the front and back end as well? Also, the front end should
obviously have some sort of back end functionality so that it can
verify the sanity of the user's choices. Should this be in the front
end or back end, or in the library? (right now this is planned to go
in "common", while it is currently still in the front end.)

Though it's not quite done, I'm happy to say that my application for
membership is being processed right now. I'll continue on this project
until I've gotten the chance to work out all of my ideas and it's
release-ready. From there I can continue to work on, well, just about
anything.

It's been a great summer, and I've grown to love NetBSD even more. I
look forward to getting this project out to the masses, and I hope I
can finish this thing up in time for the next release (that isn't
already in feature freeze, of course). I'd like to thank Tim Rightnour
for his valuable mentorship throughout the summer, always ready to
answer "why???" about some feature of sysinst, and Alistair Crooks for
his valuable substitute-mentorship when Tim was out of town. It's nice
to become part of the community.

Zach


Home | Main Index | Thread Index | Old Index