|
|
Riga 1: |
Riga 1: |
| Per compilare il kernel su debian e facilitarsi la vita avremo bisogno di: | | Per poter firmare i nostri package necessitiamo di sue strumenti per poter firmare i nostri package necessitiamo di due strumenti '''gpg''' e '''dpkg-sig'''. |
| | |
| | Il primo dovrebbe essere gi� installato di default con la nostra debian, per il secondo: |
|
| |
|
| <pre> | | <pre> |
| kernel-source-2.n.n (dove n e' la versione )
| | # apt-get install dpkg-sig |
| kernel-image-2.n.n-n-n86
| |
| kernel-package
| |
| module-assistant
| |
| modconf
| |
| libncurses5-dev
| |
| libncursesw5-dev (queste due non sono risolte come dipendenze e senza non potete far andare menuconfig)
| |
| </pre> | | </pre> |
|
| |
|
| Diventiamo root ( con su ) e portiamoci nella directory dove sono stati installati i sorgenti del kernel:
| | fatto questo generiamo una nuova coppia di chiavi , da usare solo per firmare i packages: |
|
| |
|
| <pre> | | <pre> |
| root@localhost:~# cd /usr/src
| | $ gpg --gen-key |
| </pre> | | </pre> |
|
| |
|
| Avremo una situazione tipo:
| | * rispondiamo 1 alla prima domanda ovvero DSA e ElGamal, diamo invio |
| | * come dimensione lasciamo pure 1024, diamo invio |
| | * mettiamo 0 come scadenza, diamo invio |
| | * rispondiamo s, diamo invio |
| | * ora ci verr� chiesto Nome e Cognome: |
|
| |
|
| <pre> | | <pre> |
| root@localhost:/usr/src# ls
| | Nome e Cognome: denis pecci |
| kernel-kbuild-2.6-n (dove n e' la versione dell' attuale kernel-package)
| |
| kernel-source-2.n.n.tar.bz2 (dove n e' la versione del kernel)
| |
| </pre> | | </pre> |
|
| |
|
| Decomprimiamo il kernel:
| | inseriamo i nostri dati e diamo invio |
| | |
| | * ora ci viene chiesto l'indirizzo email: |
|
| |
|
| <pre> | | <pre> |
| root@localhost:/usr/src# tar xvjf kernel-source-2.n.n.tar.bz2
| | Indirizzo di Email: debian@nextdeb.net |
| </pre> | | </pre> |
|
| |
|
| A fine decompressione avremo una directory kernel-source-2.n.n (dove 2.n.n sta per la versione del kernel), creiamo un link simbolico linux che punta ai sorgenti del kernel:
| | inseriamolo e diamo invio |
| | |
| | * ed ora inseriamno il commento per la coppia di chiavi: |
|
| |
|
| <pre> | | <pre> |
| root@localhost:/usr/src# ln -s /usr/src/kernel-source-2.n.n linux
| | Commento: NextDeb Team Packager |
| </pre> | | </pre> |
|
| |
|
| Questo link serve a make-kpkg (ma anche a make nel vecchio stile di compilazione) in maniera che non debba sapere la versione del kernel, e quindi il percorso ai sorgenti, per convenzione gli sviluppatori del kernel hanno deciso di usare il metodo del link per ovviare a questo problema.
| | diamo invio |
|
| |
|
| Ora spostiamoci della directory e puliamo i sorgenti del kernel:
| | * ora premiamo ''''o'''' e invio |
| | * ora ci verr� richiesta la password per le chiavi, inseriamola e invio |
| | |
| | Ecco fatto, ora abbiamo la nostra coppia di chiavi per firmare i pacchetti, esportiamole sul nostro keyserver preferito. |
| | |
| | Per firmare i nostri packages procediamo in questo modo: |
|
| |
|
| <pre> | | <pre> |
| root@localhost:/usr/src# cd linux
| | # dpkg-sig --sign nostronick nomepackages.deb |
| root@localhost:/usr/src/linux# make-kpkg clean
| |
| </pre> | | </pre> |
|
| |
|
| Copiamo il file di configurazione della immagine del kernel che abbiamo scaricato (essendo l'immagine precompilata puo' boottare su quasi tutte le piattaforme avremo una piu alta possibilita che il nostro kernel booti senza problemi):
| | {{Box|Esempio| |
| | <pre> |
| | # dpkg-sig --sign debian cwcdr_2.0.1-4_all.deb |
| | Processing cwcdr_2.0.1-4_all.deb... |
| | |
| | Ti serve una passphrase per sbloccare la chiave segreta |
| | dell'utente: "denis pecci (NextDeb Team Packager) <debian@nextdeb.net>" |
| | chiave DSA di 1024 bit, ID 73E02514, creata il 2004-11-26 |
|
| |
|
| <pre>
| | Signed deb cwcdr_2.0.1-4_all.deb |
| root@localhost:/usr/src/linux# cp /boot/config-2.n.n .config
| |
| </pre> | | </pre> |
| | }} |
|
| |
|
| Ora e' venuto il momento di cominciare la compilazione, prima per� una premessa su make-kpkg;
| | Ecco fatto, ora abbiamo firmato in maniera inequivocabile il nostro pacchetto. Per controllare la firma possiamo usare sia <tt>dpkg-sig</tt> che <tt>gpg</tt>. Con <tt>gpg</tt> basta usare il seguente comando: |
| questo tool accetta vari parametri direttamente su una sola riga di comando (elenchero solo i pi� importanti per gli altri leggete l'amichevole pagina di manuale aka read the friendly manual)
| |
|
| |
|
| <pre> | | <pre> |
| --help mostra l'utilizzo del tool | | # gpg --verify nome package |
| --append-to-version foo appende un nome personalizzato al kernel, ad esempio foo
| |
| --added-modules foo compila dei sorgenti esterni (presenti in /usr/src/modules) insieme al kernel, potete mettere
| |
| pi� nomi separati da virgole
| |
| --added-patches foo aggiunge delle patch al kernel, le path possono essere molteplici separate da virgole
| |
| --config sceglie quale frontend usare per configurare il kernel (config, menuconfig, xconfig, gconfig)
| |
| --initrd da usare se state compilando un kernel che utilizza le immagini initrd.img
| |
| --zimage crea una zImage per il kernel
| |
| --bzImage crea una bzImage per il kernel
| |
| --mkimage qui potete passare dei parametri a mkinitrd, ad esempio se volete creare una immagine rom
| |
| "genromfs -d %s -f %s"
| |
| --rootcmd foo per passare un comando a make-kpkg ad esempio fakeroot o sudo
| |
| CONCURRENCY_LEVEL questa variabile e' l'omonimo di -j per make, per usare vi basta mettere il numero intero che
| |
| desiderate usare ( CONCURRENCY_LEVEL=4 make-kpkg --blabla ecc.ecc... )
| |
| </pre> | | </pre> |
|
| |
|
| Ora vediamo "cosa pu� fare" make-kpkg:
| | {{Box|Esempio| |
| | |
| <pre> | | <pre> |
| clean pulisce i sorgenti
| | # gpg --verify cwcdr_2.0.1-4_all.deb |
| buildpackage pulisce i sorgenti e avvia "binary" (vedere sotto)
| | gpg: Firma fatta ven 26 nov 2004 11:23:33 CET usando DSA con ID 73E02514 |
| binary questo genera un nuovo pacchetto deb con i sorgenti, uno con gli header, uno con la
| | gpg: Firma valida da "denis pecci (NextDeb Team Packager) <debian@nextdeb.net>" |
| documentazione e uno con l' immagine del kernel
| | gpg: controllo il trustdb |
| kernel_headers questo genera un pacchetto con gli headers del kernel
| | gpg: controllo al livello 0 firmato=0 ot(-/q/n/m/f/u)=0/0/0/0/0/2 |
| kernel_image questo genera un pacchetto con il kernel
| |
| build compila solo l'immagine del kernel
| |
| modules compila tutti moduli esterni sotto /usr/src/modules e genera un file .diff e un pacchetto
| |
| sorgente
| |
| modules_config permette di configurare i moduli esterni residenti in /usr/src/modules prima di compilarli
| |
| modules_image crea i pacchetti deb dei moduli esterni residenti in /usr/src/modules senza il file .diff e
| |
| senza creare un'altro pacchetto sorgente
| |
| modules_clean pulisce i sorgenti dei moduli esterni presenti in /usr/src/modules
| |
| debian questo crea la directory ./debian utile per compilare i kernel vanilla e patcharli alla
| |
| maniera debian
| |
| </pre> | | </pre> |
| | }} |
|
| |
|
| Ora vediamo come utilizzare velocemente questo potente tool per compilare il nostro kernel personalizzato;
| | mentre con <tt>dpkg-sig</tt>: |
| ipotizziamo di usare un kernel della serie 2.6.8, dopo aver pulito i sorgenti:
| |
|
| |
|
| <pre> | | <pre> |
| root@localhost:/usr/src/linux# make-kpkg --append-to-version -nomepersonalizzato-386 --initrd --config menuconfig binary
| | # dpkg-sig -v -l nome package |
| </pre> | | </pre> |
|
| |
|
| Questo comando vi aprira' il frame di menuconfig (ci mettere un po di tempo poiche' genera sorgenti e documentazione prima di aprirvi il frontend) dove dovrete aggiungere|togliere tutto quello che ritenete necessario (andate su <help> per avere maggiori dettagli), una volta configurato tutto e usciti make-kpkg compilera' tutto come da spiegazione antecedente.
| | {{Box|Esempio| |
| | |
| Una volta finito tornerete alla riga di comando e vi sposterete nella directory precedente dove troverete tutti i vostri bei pacchetti .deb che potrete installare e disinstallare cosi come ogni pacchetto .deb:
| |
| | |
| <pre> | | <pre> |
| root@localhost:/usr/src/linux# cd ..
| | # dpkg-sig -v -l cwcdr_2.0.1-4_all.deb |
| root@localhost:/usr/src# ls
| | Processing wcdr_2.0.1-4_all.deb... |
| kernel-kbuild-2.6-3
| | debian |
| kernel-source-2.6.8
| |
| kernel-source-2.6.8.tar.bz2
| |
| linux
| |
| modules
| |
| rpm
| |
| kernel-image-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb
| |
| kernel-headers-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb
| |
| kernel-doc-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb
| |
| kernel-source-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb
| |
| root@localhost:/usr/src# dpkg -i kernel-image-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb
| |
| Selezionato il pacchetto kernel-image-2.6.8-nomepersonalizzato-386, che non lo era.
| |
| (Lettura del database ... 191374 file e directory attualmente installati.)
| |
| Spacchetto kernel-image-2.6.8-nomepersonalizzato-386 (da kernel-image-2.6.8-nomepersonalizzato-386_10.00.Custom_i386.deb)
| |
| [...cut...]
| |
| </pre> | | </pre> |
| | }} |
|
| |
|
| Se abbiamo lilo dovremo configurare lilo.conf aggiungendo le righe relative al kernel, se abbiamo grub non ci resta altro che riavviare :D
| | come potete vedere quest'ultima maniera mostra solo il nick del firmante del package. |
| | |
| ===Piccolo tip===
| |
| Se abbiamo messo reiserfs o ext3 come modulo dovremo aggiungerlo nel file /etc/mkinitrd/modules, in maniera che venga aggiunto alla immagine di initrd.
| |
| | |
| Anche qui una piccola spiegazione: l'immagine di initrd e' una immagine base del kernel che viene caricata in ram prima del boot del nostro kernel, questa carica alcuni moduli cosi che il vero kernel una volta avviato si trovi i suddetti moduli gia caricati e possa filare liscia come l'olio (bug dei moduli in questione, esclusi :) )
| |
| | |
| Per ora e' tutto, vedr� di aggiungere una mini guida a module-assistant, per quel che riguarda modconf:
| |
| diventate root (con su) e digitate modconf.
| |
|
| |
|
|
| |
|
| Buon divertimento con Debian GNU/Linux
| | ---- |
|
| |
|
| Autore: Abortigeno | | Autore: debian |