Cómo se hace Trisquel

Trisquel es una distribución completamente libre de GNU/Linux. Desde su versión 2.x está basada en Ubuntu.

El proceso para la construcción de Trisquel comienza haciendo una réplica local de Ubuntu y limpiándola (es decir, quitando los componentes que no son libres). Para ello, actualizamos el espejo cada noche con algunos scripts "reprepro" y "cron" y luego la limpiamos utilizando una lista negra de paquetes no libres.

El repositorio resultante se utiliza entonces como el verdadero upstream para el espejo de desarrollo de Trisquel, lo que también incluye sustituir algunos de los paquetes eliminados (como el kernel, o piezas que necesita cambio de marca) y un conjunto de paquetes para afinar la distro, lo que incluye obras de arte, configs, y metapaquetes.

Para actualizar el sistema, sólo tenemos que sincronizar el espejo "devel" frente al de Ubuntu recién liberado. Entonces comprobamos que los cambios funcionan mediante la actualización de nuestros propios equipos, y luego hacemos "rsync" al repositorio de desarrollo con la versión oficial en http://archive.trisquel.info

workflow-compressed.png

Nuestros paquetes

Incluimos nuestras propias modificaciones para algunos paquetes, como se explica en la página package-helpers.

La construcción de una imagen ISO

Trisquel es construido usando debootstrap, mediante un script que instala también un metapaquete y sus dependencias (para construir cada edición de la distro), la comprime en una imagen squashfs y construye un archivo .iso usando isolinux. La secuencia de comandos también se aplica a algunos cambios en el directorio debootstrap, para permitir que se ejecute en un entorno vivo.

El script "makedistro" también construye un conjunto de código fuente DVD.

Un kernel totalmente libre

Trisquel no incluye el kernel de Linux vainilla que puede encontrar en el proyecto Linux servers, sino una versión limpia del kernel de Ubuntu. Las dos versiones upstream incluyen firmware binarias no libres, y también un montón de blobs binarios ocultos en los archivos .c y .h en forma de enormes secuencias de números. Para proporcionar a nuestros usuarios un kernel totalmente libre usamos un conjunto scripts basados en los que ofrece Linux-libre, con algunas modificaciones hechas por nosotros.

Empezamos con el kernel desde los repositorios de Ubuntu (en lugar de la última versión vainilla de Linux, a fin de asegurar la compatibilidad con el resto del sistema), incluyendo las modificaciones realizadas por Ubuntu en la forma de una "enorme"' parche. A continuación, aplicamos el script Linux-libre para la versión correspondiente, y como paso final, el más reciente script de Linux-libre, modificado para permitir que se ejecute contra de los núcleos más antiguos. Este paso comprueba dos veces el código, y añade también al paquete las funciones más reciente de Linux-libre.

Como resultado de este procedimiento, no sólo eliminamos los blobs no-libre, sino que también nos aseguramos de que ninguna pieza del kernel requiere de algún programa no-libre para trabajar.

También hacemos uso de los últimos scripts de comprobación de Linux-libre, para garantizar la limpieza de las modificaciones de Ubuntu (que no son administrados por el script para quitar blobs Linux-libre). Esto a menudo requiere la comprobación de los falsos positivos, tales como tablas de datos que comprende largas listas de números, y la adición de limpieza extra procedimientos para la deblob secuencias de comandos, si se encuentran reales positivos.

Revisiones

08/04/2016 - 08:21
alejandro_blue