Freeduc-CD factory HOWTO
From OFSET Wiki
Contents |
[edit] Why a factory?
We currently recieve many propositions to modifiy our distributed Freeduc-CD to make it more suitable for such or such target people. It appears that the modifications may be considered often as selections of free software, while there is a limitation on the size of the data which can be burnt on a CDROM (700 Mbytes).
Modifying the subset of applications embedded in a Freeduc-CD can be partially automated so we made a factory to ease the process, and to make the process of designing a Freeduc-CD more easy to share among a group of coworkers.
[edit] One factory, four departments
[edit] Importation of the structure
Freeduc-CD is based on Knoppix, so each time a new version of Knoppix is released, it makes sense to import its new features. It is a manual stripping process, which can be done by one person. It outputs what may be called "freeduc-barebones", a bootable CD with approximately 330 Mb on it.
[edit] Writing applicative granules
Each educational application coming in a Freeduc-CD must be available for the user with a documentation, a tutorial, some interesting examples, an icon, a short name and a popup help in the menus. So people willing to promote the usage of a free educational software are prompted to contribute to our Freeduc-doc project, that is, author and/or translate applicative granules.
[edit] Packaging applications and data
Some good educational applications are already packaged and available in Debian repositories, and some are not. Since the factory relies on the dependance system of Debian, each application of Freeduc-CD, as well as each data package (text documents, image collections, sound collections, etc.) must be packaged in .deb format, then uploaded into our repository to be apt-getable.
[edit] Composing the CDROM
This is the easy part, since most of the task are carried out by scripts available from a semi-graphic frontend. However the toolbox to make this composition easy is still in development, and can be still made better. The sources are available at our repository at gna.org.
[edit] The director's office
The high level decisions are taken in a separate place : it is a matter of choice:
- linking each application to some attributes
- a generic name (and translations)
- a short info (and translations)
- a list of debian packages to bring the desired features
- an icon
- defining categories for the applications
- populating each category with a set of applications
- defining a cool screen background ;c)
These decisions are taken in Freeduc-Dbase, an application which features a good feedback. When the design is ready, an export of the particular profile is done, and it can be used to drive the factory. The director's office may contain several profiles, each beeing a design for a new Freeduc-CD.
[edit] The production cycle
When a profile is fed into the factory, in most cases an iso image is ready within half an hour (the interaction lasts about ten minutes for a new cdrom, and can be shorter for a minor revision).
When the iso image is ready, it can be either burnt into a cd-r(w) or directly tested with a bios emulator like Qemu. Then there is a cycle of bug tracking / fixing.
[edit] Hints, gotchas, etc.
You may ask for a package implementing the webserver which runs OFSET's metadata database to maintain profiles.
This package contains a Squeak/seaside image with the relevant structures, and a startup script. You must feed the structures into a MySQL server, and create one MySQL user authorised to access this database.
[edit] Gotcha #1 : "The password authentification is not supported, please upgrade your MySQL client"
- This issue is documented in the reference manual of MySQL 5.0.
- One possible workaround is to encode the password used for "freeducuser" with the OLD_PASSWORD function. You can do it for example with Phpmyadmin, if you have enough rights to modify the database mysql : edit freeducuser's record in the table "user", type the clear password for the relevant field, select the function OLD_PASSWORD and validate. Don't forget to reload MySQL.

