Come viene realizzata Trisquel

A parire dal rilascio 2.x, Trisquel è una derivata di Ubuntu completamente libera, e dunque il processo di costruzione della distro inizia facendo un mirror locale di Ubuntu e ripulendolo. Aggiorniamo il mirror ogni notte con reprepro e qualche script per cron, dopodiché viene pulito utilizzando una blacklist di pacchetti non liberi.

Il repository risultante rapppresenta dunque il vero upstream per il mirror di sviluppo di Trisquel, che include anche dei sostituti di alcuni dei pacchetti rimossi (come il kernel, o parti che richiedono la sostituzione dei marchi) e un insieme di pacchetti associati alla distro, che include immagini, configurazioni e metapacchetti.

Per aggiornare il sistema, abbiamo soltanto bisogno di sincronizzare il mirror di sviluppo con quello reso libero da Ubuntu. Dopo, aggiornando i nostri computer personali, controlliamo che i cambiamenti funzionino, dopodiché usiamo rsync per sincronizzare il repository di sviluppo con quello ufficiale su http://archive.trisquel.info.

workflow-compressed.png

I nostri pacchetti

Noi applichiamo delle modifiche ad alcuni pacchetti, come spiegato in | questa pagina.

Creare un'immagine ISO

Trisquel viene realizzato utilizzando debootstrap, usando uno script che installa anche un metapacchetto e le sue dipendenze (per costruire ogni edizione della distro), lo comprime in un immagine squashfs e costruisce l'immagine .iso usando isolinux. Lo script applica anche alcuni cambiamenti alla directory di debootstrap, per permettergli di parire in un ambiente live.

Lo script makedistro costruisce anche una serie di DVD con il codice sorgente.

Un kernel completamente libero

Trisquel non include il kernel vanilla di Linux che potete provare sui server del progetto Linux, bensì una versione pulita del kernel della versione di Ubuntu. Entrambe le versioni in upstream includono firmware non liberi con il solo codice binario, e anche molti blob binari nascosti nei file .c e .h sotto forma di lunghe sequenze di numeri. Per fornire ai nostri utenti un kernel completamente libero, usiamo un insieme di script basati su quelli presi da Linux-libre, con alcune nostre modifiche.

Iniziamo con il kernel dai repository di Ubuntu (invece di quelli dell'ultima versione vanilla, per assicurare la compatibilità col resto del sistema), includendo le modifiche fatte da Ubuntu sotto forma di una enorme patch. Applichiamo poi lo script di deblob per la versione corrispondente, e, come ultimo passo, lo script di Linux-libre più recente, modificato per permettere di essere eseguito anche su kernel più vecchi. Questo passo ricontrolla il codice, e aggiunge anche le modifiche di Linux-libre più recenti al pacchetto.

Come risultato di questa procedura, non stiamo soltanto rimuovendo i blob non liberi, stiamo anche assicurandoci che nessuna porzione di kernel richieda programmi non liberi per funzionare. Facciamo anche uso dello script di controllo di Linux-libre più aggiornato, per assicurare la pulizia delle modifiche di Ubuntu (che non sono gestite tramite gli script di deblob di Linux-libre). Questa operazione spesso richiede controlli per evitare i falsi positivi, come le tabelle di dati che contengono lunghe liste di numeri, e l'aggiunta di procedure addizionali di pulizia rispetto agli script di deblob, qualora venga rilevata effettivamente la presenza di blob.

Revisioni

10/29/2011 - 23:07
fabio
02/20/2012 - 15:02
Matsetes
02/25/2013 - 12:45
lembas