Nel costruire gNewSense abbiamo creato il nostro Builder che consente la creazione di una nuova distribuzione di GNU/Linux basata su Ubuntu Dapper.
Da un semplice file di configurazione puoi scegliere il nome della tua distribuzione, il rilascio, il tagline e quali pacchetti desideri installare o rimuovere
di default. La grafica verra' generata automaticamente. Ovviamente questi script sono orientati alla produzione di gNewSense ma dovrebbero costituire
una buona base su cui lavorare.
Sappi che non c'e' bisogno di seguire questi passi per utilizzare gNewSense; puoi scaricare un'immagine da uno dei nostri Mirror.

Avrai bisogno di almeno 35Gb di spazio libero e preferibilmente una connessione internet veloce (dovrai effettuare un download di 27GB di dati).
Avrai anche bisogno di circa 28GB di spazio sul tuo mirror (che puo' essere lo stesso sistema). Se utilizzi gli hardlink in maniera accurata dovresti
essere capace di evitare alcuni doppioni. Il tutto dovrebbe girare su una distribuzione Ubuntu Dapper (o piu' recente). Tutti i comandi devono essere
lanciati da root.

Per qualsiasi domanda fai un salto nel nostro canale IRC. Questo software e' ancora in versione beta.
Io non ho effettuato un rebuild completo da lungo tempo e il codice e' cambiato molto da allora.

Passo 1: GPG key

Le versioni piu' recenti di apt richiedono che i file del repository siano firmati GPG per assicurare l'integrita' della distribuzione cosi' il nostro primo passo
e' creare una chiave GPG.

 gpg --gen-key

ti permettera' di farlo. Assicurati che la chiave non abbia alcuna password.
Prendi nota del fingerprint della chiave poiche' ne avrai bisogno piu' tardi per il file di config.

Passo 2: Debmirror (opzionale)

Per evitare di dover riscaricare i file suggerisco di creare un mirror di Ubuntu Main e Universe. Questo richiedera' circa ulteirori 29Gb.

 debmirror --nocleanup --verbose --progress --method=http --host=ie.archive.ubuntu.com --arch=i386 \  --source --dist=dapper,dapper-security,dapper-updates,dapper-backports \  --section=main,main/debian-installer,universe --ignore-release-gpg --root=ubuntu /the/target/directory 

Avrai anche bisogno di installare Apache in modo da poter utilizzare il mirror via HTTP. Questo passaggio e' opzionale ma e' fortemente raccomandato avere un mirror locale di Ubuntu.

Passo 3: Pacchetti

Avrai bisogno di un certo numero di pacchetti affinche' il Builder possa funzionare correttamente.

 apt-get install reprepro debmirror build-essential apache2 subversion cdebootstrap debootstrap imagemagick
 apt-get install squashfs-tools netpbm syslinux bittornado fakeroot devscripts equivs sharutils 
 svn co http://svn.gnewsense.svnhopper.net/gnewsense/builder/trunk builder
 cd builder

E' ovvio che da questa lista mancano alcuni pacchetti. Per favore fatemi sapere.

Passo 4: Configurazione

Apri il file config in un editor di testo. I settaggi di cui devi preoccuparti maggiormente sono MIRROR, RELEASE, DISTRONAME, DOMAIN, BASEDIR, e REPOAPT. Cambiare gli altri settaggi portera' a una migliore personalizzazione.

MIRROR e' o il mirror che hai preparato al passo 3, o un mirror di Ubuntu. Dovrebbe contenere i pacchetti di sicurezza.

MIRRORDIST e' la distribuzione nel mirror, di solito si tratta di 'dapper'.

DISTRONAME e' il nome con cui vuoi chiamare la tua distribuzione e dovrebbe consistere solamente di lettere e numeri.

RELEASE e' il nome della tua versione. Dovrebbe essere scritto in minuscolo perche' apparira' in seguito nei path.

TAGLINE e' utilizzato dal bootsplash e dalla schermata di login.

SIGNINGKEY e' la tua fingerprint GPG del passo 1, non dovrebbe contenere spazi.

BASEDIR e' la directory in cui verranno messi il repository, il livecd e i file temporanei. REPODST e' dove il mirror sara' costruito nel filesystem ($BASEDIR/(nome della distribuzione in minuscolo)).

REPOAPT e' il posto da cui gli script di costruzione prenderanno i pacchetti; dovresti impostare Apache in modo da permetterlo.

DOMAIN e' utilizzato per creare il file di default sources.list durante l'installazione. Assumiamo di avere un setup simile a quello di Ubuntu dove e' presente un archive.DOMAIN, un security.DOMAIN e sottodomini per tutti i codici di ciascun paese.

RSYNC_DEST e' dove il repository che e' stato generato e il livecd dovrebbero essere risinscronizzati tramite un push-repo o un push-cd.

LOGOLETTER e' la lettera che diventera' il tuo logo.

META_*_{ADD,REMOVE} controlla wuali pacchetti vorresti fossero aggiunti e rimossi dall'ubuntu-meta package quando i tuoi meta packages vengono creati.

*_VERSION sono i numeri che seguono le versioni dei pacchetti creati. Avrai bisogno di incrementarli ogni volta che ricostruirai un pacchetto. E' probabile che tu voglia impostare tutti questi settaggi a 1 quando inizi.

Passo 5: Generare il repository

 ./gen-repo && ./do-update

Questo impieghera' un po' di tempo. Il repository potra' trovarsi in uno stato non completo mentre questo comando e' in azione. Questo e' il motivo per cui tutti i cambiamenti vengono inseriti nel mirror al passo 7. Ogni volta che e' disponibile una nuova versione (es. aggiornamenti di sicurezza) occorre rilanciare do-update (e debmirror se necessario).

Se stai facendo girare un kernel a 32bit in userland o un kernel a 64bit, dovresti installare il pacchetto linux32 e lanciare:

 ./gen-repo && linux32 ./do-update

Passo 6: Generare un LiveCD

 ./gen-livecd

L'immagine appena creata verta' salvata in $LIVECDDIR/$DISTRONAME_L-livecd-$LIVECD_VERSION.iso

 ./gen-cdsource
 ./stage-cd

Questo preparera' un tarball sorgente e posizionera' l'iso su $REPODST/cdimage

Passo 7: Carica il tuo repository su un mirror e diffondilo

Adesso puoi pubblicare le directory del tuo repository (dists e pool) cosi' come il tuo LiveCD sul tuo mirror e diffondere la tua nuova distribuzione a tutto il mondo.

 ./push-repo
 ./push-cd

© Brian Brazil 2006
Modifiche minori da Karl Goetz

Builder.it/HowToCreateYourOwnGNULinuxDistribution (last edited 2011-06-02 09:09:52 by samgee2)