Revision of How Trisquel is made from Sun, 08/30/2009 - 02:14
The revisions let you track differences between multiple versions of a post.
From the 2.x release onwards, Trisquel is a fully-free Ubuntu-based derivative, so the process for building the distro starts by doing a local mirror of Ubuntu -Hardy for the 2.x branch-, and cleaning it. We update the mirror every night with reprepro and some cron scripts, and then it gets cleaned using a blacklist of non-free packages.
The resultant repo is then used as the real upstream for the development Trisquel mirror, which also includes replacements for some of the removed packages -as the kernel, or pieces that need branding- and a set of packages that tune up the distro, and which includes artwork, configs, and metapackages.
To update the system, we just need to sync the devel mirror against the freed Ubuntu one. Then we check that the changes work by updating our own computers, and then we rsync the devel repo with the official one, at http://archive.trisquel.info

Our packages
We include three groups of packages:- Trisquel metapackages: This set of packages allow you to build several Trisquel systems, including the domestic, educative, professional, and mini editions, along with a basic console environment one.
- Trisquel data packages: they include all the files needed to setup the above environments.
- Extra programs: we include a set of free programs that are not in the Ubuntu repos, as libdvdcss, Jclic, Abanq, etc.
Building up a ISO image
Trisquel is built using debootstrap, it's done by a script that also installs a metapackage and it's dependencies -to build one of the 4 editions of the distro-, compresses it into a squashfs image and builds the iso using isolinux. The script does also apply some changes to the debootstrap directory, to allow it to run in a live environment.The makedistro script also builds a set of source code DVD's.
A fully free kernel
Trisquel does not include the vanilla linux kernel you can find at the linux project servers, nor the Ubuntu modified version of that, but a cleaned up version of this last one. Both the upstream versions include non-free binary-only firmware files, and also a lot of binary blobs hidden into .c and .h files, in the form of huge sequences of numbers. To provide our users with a fully free kernel we use a set of scripts based in the ones from linux-libre, with some modifications of our own.We start with the vanilla kernel from the Ubuntu repositories -note that we need to use this one, not the latest vanilla version, to assure the compatibility with the rest of the system-, including the modifications done by Ubuntu in the form of a -huge- patch. We then apply the linux-libre deblob script for the matching version, and as a final step, the latest linux-libre script, modified to allow it to be run against older kernels. This step double-checks the code, and also adds the latest linux-libre features to the package.
As a result of this procedure, we are not only removing the non-free blobs, we also make sure that no piece of the kernel requires a non-free program to work. We also make use of the latest check scripts from linux-libre, to assure the cleaning of the Ubuntu modifications -which are not managed by the linux-libre deblob scripts-. This often requires to check for false positives -like data tables composed by long lists of numbers-, and the addition of extra cleaning procedures to the deblob scripts, if real positives are spotted.
| Attachment | Size |
|---|---|
| workflow.png | 75.11 KB |

