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

rfc: growlight as d-i partman replacement



Hello!

Last summer, I was hoping to add ZFS support to the Debian installer. After
playing around with partman a week or two, I ended up developing an entirely
new application, growlight [0]. It is currently used in the SprezzOS
installer [1], and has been used by a small, ZoL-intensive user base for
several months (since ZoL 0.6.0-rc11 days). It has had open bugtracking [2]
and git-based source control [3] since its first commit.

I'd like to sound out the list on replacing partman in d-i proper with
Growlight. I'm sure there's some use cases I've missed that partman handles,
etc (for one, preseeding is not yet at all supported by growlight. then
again, it was never very pleasant with partman, either).

--Known shortcomings of growlight vs partman--

 (1) No preseed support currently
 (2) Fullscreen ncurses UI diverges from the rest of the whiptail-based
      installer, though IMHO it's much more attractive (see screenshots at
      [1] to see what I'm talking about)
 (3) No support for guided partitioning, but I plan to do that soon
 (4) No online filesystem resizing yet (soon! [4])
 (5) Probably misses some details that partman has accumulated over the years

--Known benefits of growlight vs partman--

 (1) ZoL (ZFS on Linux) support
 (2) Full knowledge and handling of alignment issues
 (3) Much more information available
 (4) Much more attractive
 (5) Fully dynamic UI in the face of device removal/addition
 (6) More functionality than partman (secure erase, smart, temp, etc)
 (7) One binary with coherent data model vs a bunch of scripts

The SprezzOS installer is based on d-i, and growlight runs as a udeb from
main-menu just as partman does. Here's the current postinst script [5],
just to illustrate how I break the fullscreen UI out from main-menu:

	-----------------------------------------------------------
	#!/bin/sh

	export LANG=C.UTF-8

	TARGET=/target

	# Load ZFS so that growlight's loading of libzfs doesn't do it, prompting a
	# (potentially confusing) message to stderr.
	modprobe zfs

	# Load relevant MD modules, as they aren't typically autoloaded
	modprobe md-mod
	modprobe raid0
	modprobe raid1
	modprobe raid456

	# Ensure the target mountpoint exists
	mkdir -p "$TARGET"

	# Ensure /dev/ entries exist, until we start monitoring for them at least FIXME
	mkdir /dev/md /dev/disk/by-path

	# -w: wait for process, then switch back to controlling terminal
	# -s: switch to new vt on launch
	# -v: verbose. someone might switch back to this vt purposefully; hopefully
	# this will kinda indicate what's going on.
	openvt -v -w -s -- fbvfbterm /usr/share/sprezzatech/sprezzos.png \
		growlight-curses -i -t "$TARGET" --disphelp
	-----------------------------------------------------------

This leaves main-menu on VT1 in a blue screen, which is less elegant than
I'd like, but otherwise I ran into console integrity problems of an
unpleasant nature.

I believe Growlight, suitably modified to implement all of partman's feature
set, could serve as a well-engineered, powerful replacement for the
venerable but creaky partman. I'm interested in helping make this happen,
if it's at all feasible. Please take a look at the screenshots, design, and
code, and let me know your thoughts. Thanks!

--rigorously, nick

  Hacker-In-Charge, SprezzOS Project

[0] http://nick-black.com/dankwiki/index.php/Growlight
[1] ~20 screenshots: https://plus.google.com/photos/118364511747568235669/albums/5841122304857060513
[2] https://www.sprezzatech.com/bugs/buglist.cgi?component=Growlight
[3] https://github.com/dankamongmen/growlight
[4] https://www.sprezzatech.com/bugs/show_bug.cgi?id=411
[5] https://github.com/dankamongmen/sprezzos-world/blob/master/packaging/growlight/debian/growlight-udeb.postinst

-- 
nick black     http://www.sprezzatech.com -- unix and hpc consulting
to make an apple pie from scratch, you need first invent a universe.

Attachment: signature.asc
Description: Digital signature


Reply to: