CD-Remastering script: dscdbuilder
First of all, thanks to Alexander Schmehl for telling me the address of this
list, as i first sent this mail to debian-custom@l.d.o
The following text is the mail i sent to debian-custom, but first i'd like to
say that i plan to use the KNOPPIX.build scripts on the process, to try to
unificate work (well, to stop doing some work, in fact :))
Of course, all tips, advices, help and others are welcome
And here goes the mail:
Hi all, as i told a long time ago, i've done some scripts to remaster from
scratch a knoppix-based live cd, keeping in mind simplicity to add/remove
programs from it, and as i don't know where else to announce this (don't know
how to signup on the debian-knoppix list), here it goes.
This bunch of scripts are used under the name of dscdbuilder (Debian from
Scratch CD BUILDER), and available on lafarga.upc.es/projects/gnupcix, as part
of a project to make a live CD for the UPC university, containing all the
essential tools to do all the many courses it holds.
It's still in a very early stage of its development process (the first
official version of the CD - 1.1 - was a "normal" knoppix remaster, so that's
why the script points now to 1.2-pre2), and will be a little stopped for a
while, but the idea is to make the students and teachers of every course
contribute with what they think it should be.
And in the idea of preventing the reinventation of the wheel, all the "live"
options are borrowed from knoppix, but just that, to ensure a live-cd with
knoppix hw detection and all the others, but with (presumably) different
contents.
And another point to say is that all the programs are installed through
aptitude, so it always maintains a relation of what is needed and what not
(something i always miss when aptitude hasn't been used from the very start,
and would let the HD installed versions to be cleaned of what is not really
needed/wanted), and lets you choose the needed packages from an upper level
(without worrying for recommends, although suggestions are not automated).
The script goes through a set of stages (and its sub-stages) dedicated to
simple and concrete jobs, so as a developer, one only has to make a little
script on a directory to "add" a functionality.
>From the users's point of view (the one who builds the CD), only a few files
have to be edited:
- dscdbuilder.conf: where to place the things, kernel versions to use on the
CD, default language, base debian suite, publisher information, etc.
- base-packages.{preseed,list}: preseeding information and a list of base
packages to install
- knoppix-packages.{preseed,list}: the same but with knoppix's live
detection/bootup environtment
- einam-packages.{preseed,list}: this is where the upper level packages go
(gnome, openoffice, etc; whatever the final user wants); the name comes from
the distribution's name, Einam, that means Toolkit in catalan (the gnupcix
part comes from its former name)
The script has a sort of information feature with the -h flag to get some
descriptions for the 'stages' and the variables they use (a bit long):
Debian from Scratch CD Builder
Usage: dscdbuilder.sh [-v <var>=<val>,...] { [-h [<stage>|_<variable>]] | [[+]<stage>] }
-v Lets you specify a comma separated list of variables to
overwrite config file values
-h Gets help on all stages
-h <stage> Gets help on a concrete stage
-h _<variable> Gets help on a concrete variable and all the ones it is composed of
<stage> Concrete stage to run
+<stage> Run from FULL_STAGES' <stage> to the end
Available stages:
chroot Chroot to the dist
kern_config Configure the kernel
kern_make Create a kernel binary package
logo Create the dist's logo (must give a parameter with the source image)
mproc Mount the dist's /proc
packages_build Build and put onto the repository Einam's packages
packages_check Check for availability of new tracked packages/versions
packages_clean Clean Einam's package sources
uproc Umount the dist's /proc
full Full run of CD creation
base_bootstrap Debootstrap a basic Debian (leave the Ginnungagap)
base_templates Load base templates
base_clean Initialize package system (update and clean)
base_update Update and upgrade packages (run from here to update and remaster an existing version)
base_install Install base packages
base_kernel Install selected kernel
knx_clean Clean the newly debootsrapped Debian
knx_templates Copy Knoppix's templates
knx_install Install Knoppix's packages
knx_post Post-install Knoppix-specific operations
einam_install Install Einam's packages
einam_post Post-install Einam-specific operations
knx_bootclean Clean boot scripts
knx_extratemplates Extra templates applied after all installations
minirt_bootstrap Create a miniroot from its skeleton
CD_bootstrap Create a base CDROM skeleton
CD_compress Compress the HD contents to the CDROM contents
As you see, each line in the stages part is a so called stage, each one on a
single file (bash script).
There's still a lot to do, but for now it buils a fairly usable live-CD
(except for the last changes i made, that were apparently inocuous, but not
tested :)), so i think thats a quite robust skeleton.
There's only one problem, the cvs where the project lies is not (yet)
accessible through anonymous access, but a web interface is available at
http://lafarga.upc.es/scm/cvsweb.php/?cvsroot=gnupcix
(i heard of a java program to download projects fom a cvs we interface, but
can't remember its name... if you want i can send you a tarball with it)
So without nothing more to say (that was enough :)), here it is.
Best regards,
Lluis
PD: another (not so) little problem: the script is, specially while getting
the help information and on my poor 300MHz, far too slow
--
"And it's much the same thing with knowledge, for whenever you learn
something new, the whole world becomes that much richer."
-- The Princess of Pure Reason, as told by Norton Juster in The Phantom
Tollbooth
Reply to: