Subject: 1.6D sysinst... [long]
To: None <tech-install@netbsd.org>
From: Hauke Fath <hauke@Espresso.Rhein-Neckar.DE>
List: tech-install
Date: 07/20/2002 11:41:12
Folks,

trying to upgrade a NetBSD 1.5something installation on a Macintosh Quadra
700, I've taken some notes. I will 'cross-post' this list to tech-install
and port-mac68k since it contains general as well as mac68k specific items;
a discussion should probably move to tech-install.

Yes, I've managed to upgrade the machine with sysinst and not cause
permanent damage - but, oh, the pain...

And -- please take this list as constructive criticism, not flamage of
those who worked on sysinst.

The first part is somewhat chronological, while the second lists some more
random points.


==1==

# Sysinst offers to upgrade the root ffs; this is probably not appropriate
for mac68k. Does the booter understand the current FFS? The MacOS installer
tooldefinitely doesn't, and the upgrade cannot be undone.

--> Skip this message (for the root ffs at least) on mac68k.

# Message "...first part... is finished. Sysinst has written a disklabel to
the target disk, ..." is bogus and annoying for mac68k.

--> By all means skip this message on mac68k. Don't make my heart jump by
falsely telling me you've just trashed the partition table.

# In the FTP menu, I got control sequences from the cursor keys, and a
messed up screen. A ^L did not help. (Cursor keys worked elsewhere; over
the 15 or so re-iterations of the process, problem did not reoccur.)

# The dhcp client option is not working ('dhclient failed').

Then, serious problems began...

# xbase.tgz could not be unpacked, because the directories
/usr/X11R6/lib/X11/rstart/commands/{x,x11} could not be removed.  I had the
option of installing the remaining sets, then the upgrade was aborted, and
sysinst told me to manually reinstall the missing set(s).
I tried that, and the reinstall was aborted because of a missing
/etc/fstab. Right -- the previous attempt had dropped everything on the
floor because of a missing xbase.tgz, leaving a half-done /etc.

--> Keep state and history. Let me back out, one step at a time. Give me
the chance to recover and resume. If you feel you must abort, either undo
any changes, or at least list the changes made so far.

# On the other hand, failing to remove /usr/include/mac68k does not cause
sysinst to abort unconditionally. That's good.

--> Be consistent if you can.

# Since sysinst had left the disk in an unknown state, I had to start the
upgrade procedure from scratch. Shell prompt, mount sd0a, restore etc,
unmount. Start upgrade procedure. Upgrade aborted unconditionally because
sysinst cannot move /usr/X11R6/bin/X (a symlink!) to X.old. Excuse me?

--> Distinguish between fatal and non-fatal issues, and, in the latter
case, give me a chance to clean up from a shell prompt and resume. Don't
just assume, and do your thing. Offer alternatives, give me rope.

# If for whatever reason a fscked partition was unclean, the install
aborts. Having sysinst unconditionally quit on me because I forgot to
unmount a partition... has bitten me a hundred times, and still hurts like
the first time.

--> Stop tripping over your own feet: Unmount disks properly before fscking
them.

# sysinst fscked /dev/sd0d, had it marked clean and then aborted the
install -- repeatedly. Worked again after yet another reboot; happened
again later with /dev/sd0a.

# sysinst 'Full Installation' defaults to _not_ installing a kernel during
an upgrade. Reboot and be surprised.

--> Respect the principle of least surprise.

# Mis-type the target dir path for an ftp install, and you have to start
from scratch.

# sysinst remembers domain name, hostname, IP address and netmask from a
network setup, but not the nameserver and gateway IPs.

# Why does "install additional sets" unconditionally re-make devices and
mess with /etc?


==2==

# Why does 'umount -a' need /etc/fstab around? What is unclear about 'all'?

# US kbd layout on a non-US kbd _and_ no cli editor is just too much of a PITA.

--> For the not floppy-size-constrained install kernels, add command line
history in sh, and add switchable key maps.

# For installation via ftp, show|check available space on local
filesystems. Let me recover from disk space shortage.

# Treat /usr/X11R6/lib/X11 like /etc, don't just overwrite its contents.

# Factor out actions like transition a.out -> elf, upgrading /etc or
/usr/X11R6/lib/X11, and make them available in a menu.

# INSTALL.mac68k has nothing about /etc/postinstall or /usr/sbin/etcupdate.
postinstall does not even have a manpage.

# How does /etc/postinstall relate to the sysinst /etc upgrade procedure?
Looks like you can do one, or the other.


Overall impression: While sysinst has become quite polished in some areas,
its structure is still very rigid and unforgiving. Stroll from the Right
Path, and you're done for.

At this point, I'd advise to ignore sysoinst and upgrade the traditional
way: Boot with the new kernel to single user, unpack the tarballs, upgrade
/etc with /etc/postinstall and /usr/sbin/etcupdate.

	hauke


--
/~\  The ASCII Ribbon Campaign       "They that can give up essential liberty
\ /    No HTML/RTF in email          to obtain a little temporary safety
 X     No Word docs in email         deserve neither liberty nor safety."
/ \  Respect for open standards                    -- Benjamin Franklin, 1759