# [RISOLTO] Info ricompilazione kernel

## misterwine

Ciao raga... avrei intenzione di tentare di compilarmi il kernel a manina (fin' ora ho sempre usato genkernel!).

E' solo che vorrei fare una prova in tutta sicurezza... c'è un modo per non perdere la vecchia configurazione? Ovvero, se come mi compilo io il kernel vedo ke va da schifuz, posso poi tornare alla vecchia config che avevo con genkernel???

----------

## Luca89

```
cd /usr/src/linux

cp .config /posto/sicuro/config_fatta_da_genkernel
```

----------

## Ic3M4n

se vuoi utilizzare una versione successiva del kernel, anche r2 al posto di r1 per intenderci. puoi sempre mantenere il tuo vecchio kernel (cosa che dovrebbe essere la norma) e compilarti il successivo. in questo modo con una semplice aggiunta nel grub.conf di un'altra voce hai la possibilità di avere il tuo kernel sempre funzionante e sporconare quanto vuoi con quello nuovo.

ti dico di utilizzare 2 versioni differenti per il semplice motivo che i moduli almeno non sono in comune e non rischi di aver casini a causa di questi.

----------

## makoomba

per quanto riguarda il backup, non devi fare nulla.

genkernel, se non usi opzioni tipo --no-clean, copia in .config.bak la configurazione attuale e poi usa la sua.

----------

## misterwine

Allora, in /usr/src/linux (che punta ai sorgenti del mio attuale kernel: gentoo-sources-2.6.15-r1) è presente .config.bak , che come dice makoomba è il file di backup della configurazione del kernel compilato con lo script genkernel (quello che uso adesso). Dunque posso fare anche una copia di /usr/src/linux/.config , male non fa!

Per quanto riguarda quello che dice Ic3M4n, cioè di tirarmi giù degli altri sorgenti, compilarli a manina e aggiungere una entry nel bootloader, mi sembra la cosa migliore (se inoltre in questo modo evito di avere moduli in comune evito casini meglio!!)... si insomma, diciamo che vorrei fare delle prove per imparare a compilarmi il kernel a mano in tutta sicurezza... e questa mi sembra la soluzione migliore (copia di /usr/src/linu/.config, che non fa mai male, compilare un kernel con nuovi sorgenti e non con quelli attuali, aggiungere al bootloader il nuovo kernel).

Che kernel mi potete consigliare?? Come detto all'inizio uso gentoo-sources-2.6.15-r1 ora.

----------

## makoomba

con l'opzione Local Version, puoi mantenere i due kernel separati usando gli stessi sorgenti.

----------

## misterwine

Scusa la domana makoomba... l'opzione la trovo nella configurazione del kernel?? basta che faccio una ricerca con </> per trovarla, giusto?? Per caso sai come è il suo funzionamento??

----------

## xdarma

 *makoomba wrote:*   

> con l'opzione Local Version, puoi mantenere i due kernel separati usando gli stessi sorgenti.

 

u? forse intendevi dire EXTRAVERSION nel Makefile?

Nel caso in cui usi gli stessi sorgenti per due tipi di kernel diversi, System.map come lo "assegni"?

Soft-link?

----------

## makoomba

```
CONFIG_LOCALVERSION=""
```

viene aggiunto all'EXTRAVERSION definito nel Makefile.

es:

se si compila il 2.6.14-gentoo-r4 e si mette CONFIG_LOCALVERSION="-mio", il nuovo kernel si chiamerà 2.6.14-gentoo-r4-mio.

per il System.map, lo rinomini in System.map-$versioneKernel

----------

## misterwine

Beh, grazie per le delucidazioni.... però ho notato una cosa, che nella partizione /boot ho solamente 170KB di spazio... dunque non penso che ci possa stare un nuovo kernel e un nuovo system.map! o sbaglio?

----------

## Ic3M4n

beh... scusa, ma quanto è grande la boot? oppure... quanti kernel hai già lì dentro? con che filesystem è fatta?

----------

## misterwine

/boot l'ho fatta da 50MB (ho seguito l'handbook di gentoo) però, al posto di usare ext2 come fs, ho usato reiserfs (visto ke l'ho usato per / mi son detto: facciamo tutto con reiser!)...

ora magari me ne pentirò

----------

## Luca89

 *misterwine wrote:*   

> /boot l'ho fatta da 50MB (ho seguito l'handbook di gentoo) però, al posto di usare ext2 come fs, ho usato reiserfs (visto ke l'ho usato per / mi son detto: facciamo tutto con reiser!)...
> 
> ora magari me ne pentirò

 

Hai sbagliato, reiser si mangia un mare di spazio per il suo journal, convertila a ext2.

----------

## misterwine

Potresti spiegarmi come faccio a convertire la mia partizione /boot da reserfs a etx2?

Devo fare un backup dei dati presenti?

poi faccio un

```
mkext2 /dev/hda1 #la partizione che viene montata in /boot
```

grazie mille

----------

## Ic3M4n

```
cp -a /boot /postotemporaneo

umount /boot

mke2fs /dev/[quello-che-hai-come-boot]

mount /boot

cp -a /postotemporaneo /boot 

```

----------

## misterwine

Ok dai... intanto cerco di far un pò di spazio su /boot cambiando filesystem!

----------

## xdarma

 *makoomba wrote:*   

> per il System.map, lo rinomini in System.map-$versioneKernel

 

scusami, non ho avuto modo di provare, ma sei sicuro che dopo il cambio di nome al System.map, il kernel lo riconosca? non è che il kernel continuerà a caricare System.map, che è riferibile al veccho kernel?

----------

## Luca89

 *xdarma wrote:*   

>  *makoomba wrote:*   per il System.map, lo rinomini in System.map-$versioneKernel 
> 
> scusami, non ho avuto modo di provare, ma sei sicuro che dopo il cambio di nome al System.map, il kernel lo riconosca? non è che il kernel continuerà a caricare System.map, che è riferibile al veccho kernel?

 

Se non erro la System.map il sistema se la ricerca su /lib/modules, in /sbin/modules-update trovo infatti:

```
Panther ~ # grep System.map /sbin/modules-update

                if [[ -f /lib/modules/${KV}/build/System.map ]] ; then

                        depmod -a -F /lib/modules/${KV}/build/System.map ${KV}

Panther ~ #
```

Con un baselayout ~, mentre in quello per ora stabile se non erro se la va a cercare su /usr/src/linux.

----------

## makoomba

tanto per fare un pò di chiarezza, sistem.map altro non è che la "mappa" dei simboli esportati dal kernel stesso ed il suo ruolo, nel tempo, è diventato piuttosto marginale.

prima, ad esempio, veniva utilizzata per processare gli oops del kernel con ksymoops ma non è più necessario con la serie 2.6

un altro caso è nell'utilizzo di depmod: se un modulo richiede un simbolo non presente negli altri moduli, depmod assume che questo venga esportato dal kernel.

se viene fornita anche la System.map, depmod può controllare che questo avvenga realmente per un determinato kernel (anche diverso da quello attuale) e, in caso contrario, visualizzare un warning per ogni unresolved symbol trovato in un modulo.

----------

## misterwine

Bene, adesso uso ext2 per /boot... ben 30 MB di spazio risparmiato!

Ora posso compilarmi un kernel per provare a compilarmelo a mano (e imparare qualcosa...)

Comunque, scusate, ma non ho ben capito la procedura che dovrei seguire per utilizzare gli stessi sorgenti che ho adesso per compilarmi un kernel diverso da quello che ho adesso, in modo anche da poter poi usare due entry separate nel bootloader!

----------

## makoomba

quando dai il menuconfig, vai in General setup -> Local version e scrivi quello che vuoi: la stringa sarà aggiunta alla versione del kernel.

compilato il kernel, copialo in boot e dagli il nome che ti pare.

il make modules_install utilizzerà automaticamente la dir /lib/modules/$versioneKernel-$tuaStringa

----------

## misterwine

Bene, grazie mille allora... per il discorso del system.map??

Ho visto prima che discutevate di questo... per quel che riguarda genkernel si arrangia lui a quanto pare a copiare bzimage e system.map in /boot.

Ma compilandolo a mano, sull' handbook di gentoo, ho visto che bisogna copiare l'immagine del kernel in /boot, ma anche system.map

nel mio caso lascio il system.map che c'è adesso e copio solo bzimage del nuovo kernel??

grazie ancora

----------

## makoomba

copialo in boot come fa genkernel, aggiungendo alla fine "-$versione-$tuaStringa"

----------

## misterwine

beh, grazie mille per le spiegazioni!

----------

## neryo

se non fai tutto da zero la configurazione del kernel non ha molto senso compilarlo a mano.. questo perche' a parte dare piu' comandi non ottieni nulla in piu' di quello che non otterresti con genkernel...   :Rolling Eyes: 

Questa e' solo una semplice considerazione personale.. io uso genkernel per comodita' e lo ritengo un ottimo tool... chiaramente ottimizzando il tutto tramite --menuconfig.. 

ciao

----------

## .:deadhead:.

 *neryo wrote:*   

> io uso genkernel per comodita' e lo ritengo un ottimo tool... chiaramente ottimizzando il tutto tramite --menuconfig.. 

 anche io uso con soddisfazione genkernel in modalità semi-automatica usando menuconfig. Con 2 parametri ho initrd & bootsplash attivi volete metter la comodità?   :Wink: 

----------

## misterwine

Pure io ho sempre usato genkernel... con menuconfig per attivare alsa e bootsplash... però non è che vengono attivati supporti a device che non sono presenti nella macchina oppure opzioni che non servono??

----------

## Luca89

 *misterwine wrote:*   

> però non è che vengono attivati supporti a device che non sono presenti nella macchina oppure opzioni che non servono??

 

Si, proprio per questo motivo io lo uso solo quando devo compilare kernel che devono girare su macchine diverse, per il resto preferisco fare a mano e crearmi l'initrd per lo splash con il tool presente nelle splashutils.

----------

## .:deadhead:.

no assolutamente: se usi menuconfig ti viene mostrata l'interfaccia in ncurses come se stessi configurando a mano normalmente il kernel. Io scelgo tutte e sole le voci ed i drivers che necessito e poi lascio la compilazione del kernel e la creazione dell'initrd a genkernel. Purtroppo molti non conoscono appieno il funzionamento di tale utilissimo tool e ne parlan in tono dispregiativo o dando informazioni non veritiere riguardo le sue effettive capacità.

----------

## .:chrome:.

 *misterwine wrote:*   

> però non è che vengono attivati supporti a device che non sono presenti nella macchina oppure opzioni che non servono??

 

no. basta dargli la configurazione specifica per la tua macchina.

resta sempre la comodità che ti crea un'immagine initramfs, e hai sempre la garanzia offerta da busybox e la versione di klibc compilata specificatamente per il tuo kernel e il tuo busybox

----------

