Hello,
My name is Darko Ilic, I`m a Summer of Code
(
http://code.google.com/summerofcode.html) participant working on the Fedora
Live CD generator project. Elliott allready mentioned that I will join you,
and here I am.
Here is a description of the project I`ve submitted:
*********************************************
Project title:
Toolkit for Fedora Live CD/DVD generation
Synopsis:
The toolkit would include three separate tools:
- a tool for generating config files that hold the list of packages
that should be included in Live CD distribution (in kickstart-like format),
- a tool that installs specified packages in the specified directory
(and also check dependencies),
- a tool that makes bootable iso image out of that directory
Benefits to the Community
- The toolkit could be used at the Fedora Project for generation of
official Live CDs/DVDs. Once the config files for different-purpose Live CDs
are made (for example: Office Live CD, Workstation Live CD, Live DVD ...),
they could be used for every Fedora Core edition, and Live CDs could be
automatically generated.
- The toolkit could be also used by 3rd party companies for
Fedora-based live CDs creation (but with addition of some software not
included in Fedora Core)
- Fedora users could use the toolkit for custom Fedora Live CD
generation. Every Fedora user could put his favorite Fedora installation on
the Live CD or DVD, and take the full advantage of Live CD technology. Fedora
users could also use their working Fedora systems to make Live CDs out of
them.
Project Details
The purpose of the toolkit is to create Live CD/DVD distributions out
of Fedora Core installable tree. It would be composed of three separate
tools:
1. A tool that would be used for config file generation. Config file
would hold the list of packages that should be included in Live CD
distribution. Config file would be in kickstart-like format, for
compatibility and consistency reasons. Keeping this file format would allow
skiping this step, and using some existing kickstart file. The tool itself
would be a wizard style application with nice user interface (both GUI and
console based, like anaconda). It would allow user to browse trough the
groups of packages and to select individual packages or groups of packages.
It would provide information of expected iso image size so the user could
include/exclude packages to make iso image fit the desired media.
I would write this tool using anaconda code base because the majority
of code is allready included in anaconda. Additionally, I would consider
Kickstart Configurator and maybe some other kickstart configuration utility,
if such exist.
2. A simple tool that takes config file with the list of packages,
check dependencies, and use Fedora Core installable tree to install packages
in the target directory. It would be realized as a shell script, so it would
be possible to run it automatically (with cron, for example).
3. A tool that makes bootable iso image out of the directory holding
Fedora Core installed system. It could be used both with the running Fedora
installation and with the installation created using previously described
tool. It would have to modify init scripts and some other config files, to
modify an initrd image, to compress the data and also to include some other
software that would be needed. After all, it would have to create bootable
iso image.
This tool would be also realized as a shell script, so it would be
possible to run it automatically (with cron, for example). I would consider
the mklivecd tool from the readonly-root package, and possibly take it as my
start-point, because it`s purpose is quite similar.
Some of the features that created Live CD would have:
- automatic hardware detection (existing Fedora feature, but should
be mentioned because it`s very important)
- using local storage devices (hard disks, usb storage devices) for
storing/restoring settings and home directory
- installing a basic Fedora system on the local computer, that could
be further supplemented with the online repositories like any regular
installation
Technologies to be used:
- Python (and maybe BASH) would be used for programming ("Using the
Python scripting language for the majority of code allows for easy
distribution of updates and the quick development of new features")
- syslinux or isolinux (
http://syslinux.zytor.com/) for booting the
system
- Zisofs, Cloop or Squashfs for image compression (benchmark tests at
http://kerneltrap.org/files/PERFORMANCE.README.txt show that SquashFS is the
fastest, but I will also consider other aspects before making choice)
- tmpfs for storing changes made to system in memory
*********************************************
So, more or less, it`s something you were talking about here. I`ve allready
started, and I`ll work very hard during the hole summer, `cause I have to
finish the project before the 1st of September. It`s great that you are here,
so I can bother you with my questions :)
The first, and the most important question is what should be used for starting
point ( Rookery, mklivecd, ADIOS). Greg allready asked, so I`ll wait to hear
your oppinion. I tought that mklivecd should be my starting point because it
comes from RH, but I`ll also consider the other two projects.
I`ll try to gather as much information as I can till the thursday night, so we
can discuss them on the meeting (I`m in GMT+1 so I`m fine with 23:00 GMT).
See you,
Darko (spells like donnie darko)