# compilare il kernel

## cloc3

Sono un neofita di gentoo.

La prima instllazione, con stage3 e genkernel, mi sembrava soddisfacente, ma non utilizzava il modulo agpgart.

Ho provato successivamente a compilare il kernel da me, scoprendo alcune cose ceh non capisco bene.

1. La recompilazione cancella o rende inutilizzabili alcuni driver come e100 o xfree-drm.

2. Per ristabilire la funzionalità della scheda ethernet, ho dovuto fare:

     emerge -uC e100

     emerge -u e100

     Perchè?

3. La stessa procedura con xfree-drm ha prodotto un modulo radeon.o che non veniva caricato allo start di X a causa di un errore "unresolved simbol cmpxchg"

4. Durante la compilazione con il comando 

    #make dep && make clean bzImage modules modules_install

    Ho anche osservato che gcc usava il flag -march=i386, mentre tutte le compilazioni precedenti usavano i flag del file /etc/make.conf, cioè -mcpu=i686

Sapreste indicarmi cosa sta succedendo?

Marco

----------

## randomaze

 *cloc3 wrote:*   

> 
> 
> 2. Per ristabilire la funzionalità della scheda ethernet, ho dovuto fare:
> 
>      emerge -uC e100
> ...

 

Suppongo che il driver e100 (non conosco) non sia tra quelli con il supporto direttamente nel kernel, questo significa che che, ogni volta che ricompili il kernel é opportuno ricompilare il modulo stesso

 *cloc3 wrote:*   

> 
> 
> 3. La stessa procedura con xfree-drm ha prodotto un modulo radeon.o che non veniva caricato allo start di X a causa di un errore "unresolved simbol cmpxchg"
> 
> 

 

Probabilmente devi abilitare il supporto xfree-drm nel kernel (e dopo comunque riemergere...)

 *cloc3 wrote:*   

> 
> 
> 4. Durante la compilazione con il comando 
> 
>     #make dep && make clean bzImage modules modules_install
> ...

 

Le compilazioni precedenti utilizzavano la variabile CFLAGS in /etc/make.conf. Quando configuri tu il kernel devi specificare la tua architettura nell'apposita voce del menu.

----------

## fedeliallalinea

Inazitutto benvenuto in questa stupenda comunita'.

 *randomaze wrote:*   

>  *cloc3 wrote:*   
> 
> 3. La stessa procedura con xfree-drm ha prodotto un modulo radeon.o che non veniva caricato allo start di X a causa di un errore "unresolved simbol cmpxchg"
> 
>  
> ...

 

Penso che sia esattamente il contrario. Se usi xfree-drm devi disabilitare quello del kernel.

 *randomaze wrote:*   

>  *cloc3 wrote:*   
> 
> 4. Durante la compilazione con il comando 
> 
>     #make dep && make clean bzImage modules modules_install
> ...

 

Ovvero in 

```
Processor type and features  --->  (Pentium-III/Celeron(Coppermine)) Processor family
```

----------

## randomaze

 *fedeliallalinea wrote:*   

> 
> 
> Penso che sia esattamente il contrario. Se usi xfree-drm devi disabilitare quello del kernel.
> 
> 

 

E mi sa che pensi giusto  :Rolling Eyes: 

Comunque quì é spiegato per bene il tutto.

----------

## cataenry

 *randomaze wrote:*   

> 
> 
>  *cloc3 wrote:*   
> 
> 2. Per ristabilire la funzionalità della scheda ethernet, ho dovuto fare:
> ...

 

No no...

```
<*>     EtherExpressPro/100 support (e100, Alternate Intel driver)
```

Io lo uso  :Wink: 

Bye

----------

## cloc3

 *fedeliallalinea wrote:*   

> Inazitutto benvenuto in questa stupenda comunita'.
> 
>  *randomaze wrote:*    *cloc3 wrote:*   
> 
> 3. La stessa procedura con xfree-drm ha prodotto un modulo radeon.o che non veniva caricato allo start di X a causa di un errore "unresolved simbol cmpxchg"
> ...

 

 *cloc3 wrote:*   

> 
> 
> Grazie. Credo che proprio questo fosse il punto più importante della questione.
> 
> 

 

----------

## cloc3

 *cataenry wrote:*   

>  *randomaze wrote:*   
> 
>  *cloc3 wrote:*   
> 
> 2. Per ristabilire la funzionalità della scheda ethernet, ho dovuto fare:
> ...

 

 *cloc3 wrote:*   

> Grazie, proverò appena avrò tempo.
> 
> 

 

----------

## cloc3

ai 6 che mi hanno risposto

e ai circa 80 che mi hanno letto, in poche ore. Sto diventando un grande romanziere?

Complimenti anche a Gentoo, non avevo mai trovato fino ad ora nulla di tanto istruttivo.

Marco Clocchiatti.

----------

## shev

 *cloc3 wrote:*   

> e ai circa 80 che mi hanno letto, in poche ore. Sto diventando un grande romanziere?

 

Non rispondo perchè sono l'81°, quindi esente  :Razz: 

Volevo solo invitarti ad un quoting più umano, in modo tale da rendere più leggibili i tuoi messaggi. E' inutile quotare due o tre messaggi precedenti, siamo su un forum. Quota solo l'eventuale parte significativa cui rispondi, tanto basta un po' di scrolling per rileggersi i messaggi precedenti. Soprattutto non quotare la tua risposta  :Wink: 

/me che ha sfoggiato il suo nuovo cavallo di battaglia, dopo doc e ricerca: il quoting!  :Mr. Green: 

----------

## desmo

Approfitto di questo post...... qualcuno sa dirmi se c'e` qualche guida per quelli alle prime armi come il sottoscritto che spieghi i passi operativi per  ricompilare il kernel con moduli aggiuntivi????  :Question: 

----------

## fedeliallalinea

 *desmo wrote:*   

> Approfitto di questo post...... qualcuno sa dirmi se c'e` qualche guida per quelli alle prime armi come il sottoscritto che spieghi i passi operativi per  ricompilare il kernel con moduli aggiuntivi???? 

 

Ti faccio una guida sul momento

Allora ti sposti in

```
# /usr/src/linux
```

A questo punto dai il comando

```
# make menuconfig
```

e ti scegli i moduli aggiuntivi. Finita la scelta esci e quando ti dice di salvare la conf gli dai yes.

Adesso ricompili il kernel e i moduli con

```
# make dep && make clean bzImage modules modules_install   //se kernel 2.4

# make && make modules_install   //se kernel 2.6
```

Poi copi l'immagine in boot con

```
# mount /boot

# mv /boot/bzImage /boot/bzImage.old   /se vuoi teneri la conf vecchia

# cp arch/i386/boot/bzImage /boot
```

Ora configuri il tuo lilo.conf o grub.conf e reboot  :Very Happy: 

----------

## MyZelF

Credo intendesse dire utilizzando driver che non sono inclusi nel kernel tree ufficiale.

desmo: ti riferisci a qualche driver in particolare?

In genere si tratta di patchare i sorgenti del kernel, oppure di compilare moduli "esterni" specificando la path con i src del kernel.

Per driver presenti in portage, ad esempio xfree-drm, è sufficiente riemergere il pachetto dopo aver cambiato kernel e relativo link /usr/src/linux.

----------

## randomaze

Completo i passi di fedeliallalinea con una cosa che stavo sistemando (così, se qualcuno la guarda e mi aiuta nel debug ne facciamo una mini-guida...)

Segue la (molto) libera traduzione di una Gentoo FAQ.

1.All'inizio e' molto più importante avere un kernel funzionante che uno ottimizzato.

Ripeto, All'inizio e' molto più importante avere un kernel funzionante che uno ottimizzato. Si può sempre cercare di ottimizzare e ricompilare dopo

2.Inizialmente lasciamolo semplice. Allora, ci serve un kernel funzionante come descritto nel punto 15 della guida di installazione. repetita juvant:

-- sotto "Code maturity level options": 

-- selezionare "Prompt for development and/or incomplete code/drivers"

-- sotto "File systems": 

-- selezionare "Virtual memory file system support (former shm fs)" 

-- selezionare "/proc file system support" 

-- selezionare "/dev file system support (EXPERIMENTAL)" 

-- selezionare "Automatically mount at boot" 

-- selezionare "/dev/pts file system for Unix98 PTYs" 

-- selezionate tutti i fileistem che volete usare (reiserfs, ext2, ext3, JFS, XFS)

Anche se il primo kernel funzionante non avrà il supporto USB, la stampante, lo scanner etc. non importa, si può sempre aggiungere in seguito.

3. Kernel Monolitici vs. Moduli. Ci sono varie scuole di pensiero, qualcuno lo vuole più modulare possibile e altri lo vogliono più monolitico. In generale occorre ricordare che, a meno di usare un initrd tutto quello che serve all'avvio deve essere compilato staticamente (non mettere il reiserfs come modulo se ila vostra root partition é formattata reiserfs!!!) altrimenti il kernel non é in grado di fare il boot.

4.Come detto al punto #1, quando é stato installato un kernel funzionante nella /boot directory si possono configurare e compilare altri kernel alternativi come files separati. Sia lilo che grub permettono tramite un semplcie menu di installare multipli kernel e sciegliere al boot quale utilizzare.

Non necessariamente tutti i kernel si chiameranno bzImage ed é buona cosa mantenere delle copie di backup dei kernel prima di sovrascriverli.

Risorse:

[it]Gentoo Handbook

Gentoo Forum Kernel Compilation FAQ

[en]LinuxBeginners

Kernel Howto (Attualmente off-line per mantenimento. qui una vecchia versione)

Post Halloween Document Da 2.4 a 2.6... cosa cambia?

----------

## fedeliallalinea

 *randomaze wrote:*   

> 
> 
> Risorse:
> 
> [it]Gentoo Handbook
> ...

 

e aggingo https://forums.gentoo.org/viewtopic.php?t=24626

----------

## randomaze

 *fedeliallalinea wrote:*   

> 
> 
> e aggingo https://forums.gentoo.org/viewtopic.php?t=24626

 

Così sveli le mie fonti... io ho pseudo-tradotto la K11  :Wink: 

----------

## desmo

Grazie mille!!! Dopo qualche problema con il kernel e la directoy /boot sono riuscito, grazie ad un collega sgamatissimo, ha mettre a posto il tutto. Ora ho cominciato a vedere il log del boot per cercare di correggere alcuni errori/problemi e ho come l'impressione di non avere inserito alcuni moduli necessari.  Sempre il mio collega sgamatissimo mi ha fatto notare che ho settato il bus a 33MHz e ho dei dischi che possono andara a 66. 

Sto indagando sulla stringa... :  :Rolling Eyes:   :Confused: 

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

Hola!!!!!!

----------

## OKreZ

 *desmo wrote:*   

> Sto indagando sulla stringa... :  
> 
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

 

Basta che appendi alle opzioni da passare al kernel "idebus=66" (all'interno di lilo.conf o grub.conf)

----------

## randomaze

 *OKreZ wrote:*   

>  *desmo wrote:*   Sto indagando sulla stringa... :  
> 
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx 
> 
> Basta che appendi alle opzioni da passare al kernel "idebus=66" (all'interno di lilo.conf o grub.conf)

 

Il modo suggerito da OKreZ va bene, comunque controlla di aver selezionato le opzioni relative al tuo chipset... se é tutto giusto dovrebbe riuscire in automatico a determinare la velocità del bus

----------

## fedeliallalinea

 *randomaze wrote:*   

> comunque controlla di aver selezionato le opzioni relative al tuo chipset...

 

Sicuramente e' questo il problema. Per vedere se e' attivo nel kernel vai in

```
Device Drivers  --->   ATA/ATAPI/MFM/RLL support  --->
```

----------

