distribution customization

Jane Dogalt jdogalt at yahoo.com
Thu Jan 11 06:59:40 UTC 2007


--- Bill Nottingham <notting at redhat.com> wrote:

> One of the features we're working on for Fedora Core 7 is a
> framework to customize the distribution [1] without necessarily
> modifying the package set; this is needed as we're intending
> to target multiple 'spins' [2] of Fedora.

FYI here is the current outline (not much different from what I've said
on livecd-list for ages) for a project I am working on.  Preface: its
still deep in proof of concept stages-

------------------------------------------
viros/vsys system image generator outline
------------------------------------------
(not required to run as root)

1) generate (and maybe regress test) a custom livecd/derivative-distro
vsys generate liveiso --strain=fz7 customstrain.iso
(takes a few hours, progress meter, non-interactive, maybe eventually
a gui to manage flags/options)

2) test/play your new system image
vsys virtualize customstrain.iso
(purely a wrapper to abstract away qemu options)


What this is doing is create a 'strain' (aka 'spin'/'recipe'/'system
configuration') of a livecd.  In this case it pulls the recipe/config
from /usr/share/viros/strains/fz7.vml, which is an xml config file
describing exactly what needs to be known to create this particular
spin/strain/livecd.  Basically the input for how to do a fedora core 6
automated install (grub boot line, kickstart, arbitrary extra
data/script payload, etc...).

Then, to create a new, modified 'strain', you either copy and modify
the vml file, or use builtin 'features/traits', i.e.

vsys generate liveiso --strain=fz7 \
  --addfeature adduser:user=sysuser,password=notobvious
  --addfeature gdmautologin:user=sysuser
  --addfeature
adddefaultstartpage:user=sysuser,page="http://example.com"

The features/traits would be a standard format
(rpm/tgz/makeself/whatever) and live in /usr/share/viros/traits/

To reiterate, one benefit of my design using qemu instead of DavidZ's
root based pilgrim, is that all install actions (including hundreds of
%pre/%post scripts) are run in a user protected environment.

Another benefit, is that this can abstract away the distribution.  I.e.
I fully intend to support debian/ubunto/centos (and later PPC versions
of stuff using qemu-ppc).

I.e. I hope to have default strain configurations that can say generate
the latest version of knoppix with all debian updates applied.

Also, I have it working so that everything is always done to a hidden
vnc window, so it can just churn away on some headless server
generating images, and even doing automated regression tests on those
images by booting them under qemu.

One final aspect is that I also have designed it with modular backends
in mind.  I.e. 'generate a livecd using the unionfs method', 'generate
a livecd using the devicemapper snapshot method', 'generate a livecd
using the kadischi bindmounting method', 'generate a livecd using the
jdogalt rebootless installable method', 'generate a tgz that can be
remotely push installed to server you have root ssh access'.

Anyway, as I've been saying for years, I hope to get it demoable any
day now, and that other people find it as useful as I imagine it to be
:)

Maybe DavidZ has some better plans for pilgrim, perhaps integrating
with this virtmanager I haven't played with yet...

-dmc/jdog



 
____________________________________________________________________________________
Have a burning question?  
Go to www.Answers.yahoo.com and get answers from real people who know.




More information about the fedora-devel-list mailing list