# [Risolto]Compilazione kernel

## Pancu

Ragazzi ho compilato il kernel una volta e la compilazione e andata a buon fine.

Purtroppo mi ero dimenticato i moduli SATA e adesso sia con essi sia senza ricevo questo errore.

Che posso fare.

Grazie

```
# make

  CHK     include/linux/version.h

  SPLIT   include/linux/autoconf.h -> include/config/*

  CC      arch/x86_64/kernel/asm-offsets.s

arch/x86_64/kernel/asm-offsets.c:1: error: code model `kernel' not supported in the 32 bit mode

make[1]: *** [arch/x86_64/kernel/asm-offsets.s] Error 1

make: *** [prepare0] Error 2

```

Last edited by Pancu on Wed Jan 04, 2006 8:44 pm; edited 3 times in total

----------

## .:chrome:.

hai selezionato l'architettura corretta?

hai fatto un make clean o distclean, prima?

posta esattamente i passaggi che hai fatto per la configurazione (intendo i comandi che hai dato)

----------

## Pancu

 *k.gothmog wrote:*   

> hai selezionato l'architettura corretta?
> 
> hai fatto un make clean o distclean, prima?
> 
> posta esattamente i passaggi che hai fatto per la configurazione (intendo i comandi che hai dato)

 

Nessun comando..dopo aver compilato la prima volta correttamente ho copiato l'immagine del kernel nella partizione di boot assieme al file di configurazione, installato grub e riavviato.

Come procedimento ho usato questo howto per installare reiser4

http://gentoo-wiki.com/HOWTO_Install_Gentoo_with_Reiser4_enabled_using_Lxnay%27s_Gentoo_RR4_LiveCD

Al riavvio ho rimesso il live cd, montato le partizione, effettuato il chroot e modificato il menuconfig del kernel..

Al successivo:

```
make
```

ho ricevuto quell'output.

----------

## .:chrome:.

tra una compilazione e l'altra è buona norma dare un make clean

prova così

----------

## Pancu

Intanto grazie per l aiuto.

Dopo un make clean.

Rieseguo

```
make
```

stavolta mi compare questo errore

```
# make

  CHK     include/linux/version.h

  SPLIT   include/linux/autoconf.h -> include/config/*

  CC      arch/x86_64/kernel/asm-offsets.s

In file included from include/asm/smp.h:18,

                 from include/linux/irq.h:13,

                 from include/asm/hardirq.h:6,

                 from include/linux/hardirq.h:7,

                 from arch/x86_64/kernel/asm-offsets.c:10:

include/asm/mpspec.h:6:25: mach_mpspec.h: No such file or directory

In file included from include/asm/smp.h:18,

                 from include/linux/irq.h:13,

                 from include/asm/hardirq.h:6,

                 from include/linux/hardirq.h:7,

                 from arch/x86_64/kernel/asm-offsets.c:10:

include/asm/mpspec.h:8: error: `MAX_MP_BUSSES' undeclared here (not in a functio n)

include/asm/mpspec.h:23: error: `MAX_IRQ_SOURCES' undeclared here (not in a func tion)

In file included from include/linux/irq.h:22,

                 from include/asm/hardirq.h:6,

                 from include/linux/hardirq.h:7,

                 from arch/x86_64/kernel/asm-offsets.c:10:

include/asm/irq.h:16:25: irq_vectors.h: No such file or directory

In file included from include/asm/hardirq.h:6,

                 from include/linux/hardirq.h:7,

                 from arch/x86_64/kernel/asm-offsets.c:10:

include/linux/irq.h:85: error: `NR_IRQS' undeclared here (not in a function)

In file included from include/linux/irq.h:94,

                 from include/asm/hardirq.h:6,

                 from include/linux/hardirq.h:7,

                 from arch/x86_64/kernel/asm-offsets.c:10:

include/asm/hw_irq.h:30: error: `NR_IRQ_VECTORS' undeclared here (not in a funct ion)

In file included from arch/x86_64/kernel/asm-offsets.c:10:

include/linux/hardirq.h:35:27: warning: "NR_IRQS" is not defined

In file included from include/asm/suspend.h:6,

                 from include/linux/suspend.h:5,

                 from arch/x86_64/kernel/asm-offsets.c:11:

include/asm/desc.h: In function `__set_tss_desc':

include/asm/desc.h:67: warning: cast from pointer to integer of different size

include/asm/desc.h: In function `set_ldt_desc':

include/asm/desc.h:75: warning: cast from pointer to integer of different size

arch/x86_64/kernel/asm-offsets.c:12:21: asm/pda.h: No such file or directory

arch/x86_64/kernel/asm-offsets.c:16:22: asm/ia32.h: No such file or directory

arch/x86_64/kernel/asm-offsets.c: In function `main':

arch/x86_64/kernel/asm-offsets.c:39: error: dereferencing pointer to incomplete type

arch/x86_64/kernel/asm-offsets.c:40: error: dereferencing pointer to incomplete type

arch/x86_64/kernel/asm-offsets.c:41: error: dereferencing pointer to incomplete type

arch/x86_64/kernel/asm-offsets.c:42: error: dereferencing pointer to incomplete type

arch/x86_64/kernel/asm-offsets.c:43: error: dereferencing pointer to incomplete type

arch/x86_64/kernel/asm-offsets.c:44: error: dereferencing pointer to incomplete type

arch/x86_64/kernel/asm-offsets.c:68:5: warning: "DEBUG_STKSZ" is not defined

arch/x86_64/kernel/asm-offsets.c:68:19: warning: "EXCEPTION_STKSZ" is not define d

make[1]: *** [arch/x86_64/kernel/asm-offsets.s] Error 1

make: *** [prepare0] Error 2

```

----------

## .:chrome:.

ma che sta succedendo a quel kernel?  :Confused: 

prova, per scrupolo, a dare un make oldconfig, ed a verificare che non si sia rovinata la tua configurazione.

ma tu che sistema usi?

----------

## Pancu

 *k.gothmog wrote:*   

> ma che sta succedendo a quel kernel? 
> 
> prova, per scrupolo, a dare un make oldconfig, ed a verificare che non si sia rovinata la tua configurazione.
> 
> ma tu che sistema usi?

 

Questo e quello impostato in make.conf

```
CFLAGS="-march=athlon-xp -02 -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

```

Con make old config la compilazione sembra non essersi rovinata.  :Crying or Very sad: 

----------

## .:chrome:.

ecco dove sta la rogna... stavi compilando un kernel a 64 bit!!!

controlla nle tue variabili di ambiente, e soprattutto la stringa che stai passando a make

----------

## Pancu

 *k.gothmog wrote:*   

> ecco dove sta la rogna... stavi compilando un kernel a 64 bit!!!
> 
> controlla nle tue variabili di ambiente, e soprattutto la stringa che stai passando a make

 

Scusa sono un niubbo, potresti spiegarmi quali sono le variabili d'ambiente e la stringa che passo  make???  :Confused:   :Confused: 

Devo cambiare kernel??

Grazie!

----------

## .:chrome:.

allora... in uno dei tuoi primi messaggi ho notato la stringa X86_64 che stava ad indicare appunto quell'architettura, che tu non usi

prima di tutto bisognerebbe capire che tipo di kernel stai usando.

poi un emerge info potrebbe chiarire qualcosa sul tuo sistema.

oppure, se vuoi ridurre al massimo lo sbattimento, butta vi ail kernel e fai l'emerge di uno nuovo (gentoo-sources o vanilla-sources)  :Wink: 

----------

## Pancu

 *k.gothmog wrote:*   

> allora... in uno dei tuoi primi messaggi ho notato la stringa X86_64 che stava ad indicare appunto quell'architettura, che tu non usi
> 
> prima di tutto bisognerebbe capire che tipo di kernel stai usando.
> 
> poi un emerge info potrebbe chiarire qualcosa sul tuo sistema.
> ...

 

Ti ringrazio per la risposta esauriente...

Il problema è che dovrei usare un kernel che patchato supporta reiser4.

Vedrò di trovare il kernel giusto..

Grazie.

Molto gentile. :Wink: 

----------

## mambro

controlla anche con 

```

ls -l /etc/make.profile

```

se hai impostato giusto il profilo... mi sembra strano che venga installato un kernel per 64bit su un sistema con profilo a 32 (a meno che tu non l'abbia installato senza emerge..)

EDIT:

ps: se vuoi un kernel che supporti reiser4 prova gli archck sources   :Wink: 

https://forums.gentoo.org/viewtopic-t-416613-highlight-archck.html

oppure se vuoi qualcosa direttamente in portage prova gli mm-sources

----------

## .:chrome:.

 *Pancu wrote:*   

> Ti ringrazio per la risposta esauriente...
> 
> Il problema è che dovrei usare un kernel che patchato supporta reiser4.
> 
> Vedrò di trovare il kernel giusto..
> ...

 

oh... è vero... avevo trascurato quel... "dettaglio"

non vorrei dire una scemenza, ma mi sembra che i ck-sources includano la patch per ReiserFS-4. prova quelli

----------

## Pancu

Grazie ancora.  :Wink: 

Proverò con i ck-sources.  :Smile: 

----------

## Pancu

 *mambro wrote:*   

> controlla anche con 
> 
> ```
> 
> ls -l /etc/make.profile
> ...

 

Ritorno sull'argomento xchè non riesco a risolvere il problema.

Ho provato ad installare vanilla-sources (con emerge) applicandogli poi la patch ma l'errore ritorna ugualmente quando faccio un 

```
make
```

Scusa ma cosa si intende per il profilo??

Cio che è dentro make.conf???

Io ho installato il sistema con dallo stage1 con un:

```

/usr/portage/scripts/bootstrap.sh

emerge -e system

```

Aiuto!Please!  :Sad:   :Sad: 

----------

## Luca89

Secondo me sbagli a configurare la cpu nella configurazione del kernel, sicuramente avrai scelto una cpu a 64bit e quindi il kernel viene compilato per quella architettura. Ciò che riguarda portage non credo c'entri molto con la compilazione del kernel.

----------

## Pancu

 *Luca89 wrote:*   

> Secondo me sbagli a configurare la cpu nella configurazione del kernel, sicuramente avrai scelto una cpu a 64bit e quindi il kernel viene compilato per quella architettura. Ciò che riguarda portage non credo c'entri molto con la compilazione del kernel.

 

Boh non riesco a capire..

IL mio è un processore Amd64 Sempron 2600.

Ho impostato le variabili flag seguendo questo link:

http://gentoo-wiki.com/CFLAGS

Il kernel vanilla che ho installato tramite emerge è sicuramente per un processore a 64 bit perchè al suo interno mi richiede di selezionare il processore amd64 o intel64.

Boh allora non riesco a capire l'errore.

Può essere che io ho scaricato uno stage1 per x86 a 32 bit e lui adesso non mi fa installare un kernel a 64bit per questo motivo???  :Confused:   :Confused:   :Confused:   :Confused: 

Oddio non ditemi  che è così xchè mi sparo  :Sad:   :Sad: 

Dovrei reinstallare lo stage1 per amd64 e reinstallare tutto il sistema??  :Sad:   :Sad:   :Sad: 

Grazie!

----------

## randomaze

 *Pancu wrote:*   

> Può essere che io ho scaricato uno stage1 per x86 a 32 bit e lui adesso non mi fa installare un kernel a 64bit per questo motivo???     

 

Puó essere. Come si chiama lo stage1 che hai usato?

----------

## devilheart

 *Pancu wrote:*   

> 
> 
> Può essere che io ho scaricato uno stage1 per x86 a 32 bit e lui adesso non mi fa installare un kernel a 64bit per questo motivo???    
> 
> 

 non è che stai cercando di compilare un kernel a 64bit usando gcc a 32bit?

posta l'output di

```
file `which gcc`
```

----------

## Pancu

 *devilheart wrote:*   

>  *Pancu wrote:*   
> 
> Può essere che io ho scaricato uno stage1 per x86 a 32 bit e lui adesso non mi fa installare un kernel a 64bit per questo motivo???    
> 
>  non è che stai cercando di compilare un kernel a 64bit usando gcc a 32bit?
> ...

 

Mi dice:

```
# file 'which gcc'

which gcc: cannot open 'which gcc' (No such file of directory)

```

x randomaze 

Lo stage1 che ho scaricato era x x86 ma mi ricordo benissimo che non era x amd64.

----------

## Kernel78

ti ha suggerito questo 

```
file `which gcc`
```

ma tu hai scritto questo 

```
file 'which gcc'
```

Hai toppato l'apice   :Wink: 

----------

## randomaze

 *Pancu wrote:*   

> Lo stage1 che ho scaricato era x x86 ma mi ricordo benissimo che non era x amd64.

 

Non sono un grosso esperto di 64 bit, tuttavia mi sa che non c'é molto da fare: se vuoi fare un installazione a 64 bit devi partire dallo stage a 64 bit.

----------

## Pancu

 *randomaze wrote:*   

>  *Pancu wrote:*   Lo stage1 che ho scaricato era x x86 ma mi ricordo benissimo che non era x amd64. 
> 
> Non sono un grosso esperto di 64 bit, tuttavia mi sa che non c'é molto da fare: se vuoi fare un installazione a 64 bit devi partire dallo stage a 64 bit.

 

E' consigliata un'installazione a 64 bit????

Avevo letto in giro che ci sono diversi problemi nell'installazione dei pacchetti..

Cmq sia..E' un problema se nel mio make.conf ho impostato la variabile flag come un processore a 64 bit e ho installato gnome e tutti i pacchetti vari come se avessi (come effettivamente ho) una cpu da 64 bit ma il mio stage era di 32 bit??

Se io ora cambio flags nel mio make.conf impostando una variabile tipo pentium4 da 32 bit e riemergo il kernel, esso sarà x cpu a 32 bit.sbaglio??

Grazie e scusate se ho fatto un po di confusione! :Smile: 

----------

## neryo

 *Pancu wrote:*   

> E' un problema se nel mio make.conf ho impostato la variabile flag come un processore a 64 bit e ho installato gnome e tutti i pacchetti vari come se avessi (come effettivamente ho) una cpu da 64 bit ma il mio stage era di 32 bit??
> 
> 

 

no.. tu stai compilando a 32 bit con il tuo CHOST="i686-pc-linux-gnu"...

 *Quote:*   

> 
> 
> Se io ora cambio flags nel mio make.conf impostando una variabile tipo pentium4 da 32 bit e riemergo il kernel, esso sarà x cpu a 32 bit.sbaglio??
> 
> 

 

hai tentato di compilare il kernel 64 a 32 bit.. usando uno stage a 32.. un bel casino   :Confused: 

meglio se metti questo x un 64 bit...

```

CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=athlon64 -O2 -pipe"

```

e credo che se riparti fai una bella scelta!!!   :Rolling Eyes: 

----------

## .:chrome:.

 *Pancu wrote:*   

> E' consigliata un'installazione a 64 bit????

 

pancu... qui si sta facendo un macello incredibile...

correggimi se sbaglio, ma qualche post indietro io avevo letto da qualche parte "Athlon-XP". se tu hai quel processore, ti faccio notare che è a 32 bit, e non puio dcidere arbitrariamente di usare codice a 32 o 64 bit... quel processore è a 32 bit e deve eseguire codice a 32 bit.

se ho sbagliato chiedo perdono

----------

## neryo

 *k.gothmog wrote:*   

>  *Pancu wrote:*   E' consigliata un'installazione a 64 bit???? 
> 
> pancu... qui si sta facendo un macello incredibile...
> 
> correggimi se sbaglio, ma qualche post indietro io avevo letto da qualche parte "Athlon-XP". se tu hai quel processore, ti faccio notare che è a 32 bit, e non puio dcidere arbitrariamente di usare codice a 32 o 64 bit... quel processore è a 32 bit e deve eseguire codice a 32 bit.
> ...

 

lui ha detto di avere un amd sempron 2600+ a 64 bit.. tu hai letto athlon-xp nella sua CFLAGS...

----------

## .:chrome:.

 *neryo wrote:*   

> lui ha detto di avere un amd sempron 2600+ a 64 bit.. tu hai letto athlon-xp nella sua CFLAGS...

 

ah ecco... allora ho fatto casino io.

scusate  :Very Happy: 

----------

## Luca89

 *neryo wrote:*   

> lui ha detto di avere un amd sempron 2600+ a 64 bit.. tu hai letto athlon-xp nella sua CFLAGS...

 

Ma lui ha scritto effettivamente athlon-xp nelle sue CFLAGS, guarda i post nelle pagine precedenti.

Comunque, in definitiva, direi che innanzitutto le incomprensioni che ci sono state sono dovute al fatto che Pancu non ha rispettato le linee guida, se avessi indicato già dall'inizio che processore avevi, il proseguimento del thread sarebbe stato diverso.  :Wink: 

Inoltre credo che le soluzioni sono due: compilare un kernel a 32bit, reinstallare tutto il sistema per x86_64. Non mi pare che ci sono altre vie.

----------

## neryo

 *Luca89 wrote:*   

> 
> 
> Inoltre credo che le soluzioni sono due: compilare un kernel a 32bit, reinstallare tutto il sistema per x86_64. Non mi pare che ci sono altre vie.

 

esatto...  :Wink: 

----------

## Pancu

Chiedo a tutti scusa x le imcoprensioni...

Allora riepilogo il tutto...

Ho un AMD Sempron64 2600+ quindi dovrebbe essere un 64 bit giusto???

Per impostare il CFLAGS ho guardato qui http://gentoo-wiki.com/Safe_Cflags#Mobile_AMD_Sempron e secondo quanto dice chi ha scritto quella guida devo impostare il make.conf come segue:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"
```

Bene...Da quanto ho capito xò questo mi compila il tutto a 32 bit giusto???Ok va benissimo...Anche xchè inconsapevolmente sono partita da uno stage1 x86 da 32bit.Va bene trattiamo come se fosse una cpu da 32 bit come consigliano.

Ora  spiegatemi una cosuccia... 

xchè quando vado a emergere un kernel me lo installa x cpu da 64 bit e mi da l'errore che mi ha dato nel primo topic, considerando che nel make.conf ho impostato una cpu da 32 bit???

Spero di essermi spiegato stavolta.

Grazie a tutti.

----------

## neryo

 *Pancu wrote:*   

> Chiedo a tutti scusa x le imcoprensioni...
> 
> Allora riepilogo il tutto...
> 
> Ho un AMD Sempron64 2600+ quindi dovrebbe essere un 64 bit giusto???
> ...

 

giusto..

 *Pancu wrote:*   

> 
> 
> Per impostare il CFLAGS ho guardato qui http://gentoo-wiki.com/Safe_Cflags#Mobile_AMD_Sempron e secondo quanto dice chi ha scritto quella guida devo impostare il make.conf come segue:
> 
> ```
> ...

 

Quella conf risponde si a un sempron ma la versione 32 bit mobile... i sempron sono nati a 32 bit solo di recente e' uscito il modello a 64.

 *Pancu wrote:*   

> 
> 
> Bene...Da quanto ho capito xò questo mi compila il tutto a 32 bit giusto???Ok va benissimo...Anche xchè inconsapevolmente sono partita da uno stage1 x86 da 32bit.Va bene trattiamo come se fosse una cpu da 32 bit come consigliano.

 

Io se fossi in te lo rifarei a 64 visto che e' una cpu a 64. E nessuno consiglia di trattare un 64 bit a 32 bit...   :Wink: 

 *Pancu wrote:*   

> 
> 
> Ora  spiegatemi una cosuccia... 
> 
> xchè quando vado a emergere un kernel me lo installa x cpu da 64 bit e mi da l'errore che mi ha dato nel primo topic, considerando che nel make.conf ho impostato una cpu da 32 bit???
> ...

 

hai compilato il kernel con genkernel? credo che sia per questo che sia stato compilato a 64 bit, viene rilevata la tua architettura e viene automaticamente impostata nella configurazione del kernel...   :Rolling Eyes: 

ciauzz

----------

## Luca89

 *Pancu wrote:*   

> xchè quando vado a emergere un kernel me lo installa x cpu da 64 bit e mi da l'errore che mi ha dato nel primo topic, considerando che nel make.conf ho impostato una cpu da 32 bit??? 

 

Nella configurazione del kernel, più precisamente dovrebbe essere la sezione che riguarda la CPU, scegli una architettura e una CPU a 32 bit.

----------

## neryo

 *Luca89 wrote:*   

>  *Pancu wrote:*   xchè quando vado a emergere un kernel me lo installa x cpu da 64 bit e mi da l'errore che mi ha dato nel primo topic, considerando che nel make.conf ho impostato una cpu da 32 bit???  
> 
> Nella configurazione del kernel, più precisamente dovrebbe essere la sezione che riguarda la CPU, scegli una architettura e una CPU a 32 bit.

 

sempre se vuoi non sfruttare la tua architettura a 64!   :Rolling Eyes:  ..rifai tutto che stai meglio.. e' solo un consiglio, poi vedi tu!   :Wink: 

----------

## Pancu

ok vi ringrazio del consiglio!

Rifaccio tutto da capo...

Come CFLAGS che mi consigliate di mettere??

----------

## Luca89

 *Pancu wrote:*   

> Come CFLAGS che mi consigliate di mettere??

 

RTFM

http://gentoo-wiki.com/Safe_Cflags

 :Smile: 

----------

## neryo

 *Pancu wrote:*   

> 
> 
> Come CFLAGS che mi consigliate di mettere??

 

```
CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=k8 -O2 -pipe"

CXXFLAGS="${CFLAGS}"
```

----------

## Pancu

 *Luca89 wrote:*   

>  *Pancu wrote:*   Come CFLAGS che mi consigliate di mettere?? 
> 
> RTFM
> 
> http://gentoo-wiki.com/Safe_Cflags
> ...

 

Ho già guardato nel seguente link ma non c'è niente che riguardi un sempron64.

Grazie Neryo!

----------

## Luca89

 *Pancu wrote:*   

> Ho già guardato nel seguente link ma non c'è niente che riguardi un sempron64.
> 
> Grazie Neryo!

 

Quello che ti ha postato neryo è uguale a quello che c'è lì.

----------

## neryo

 *Pancu wrote:*   

>  *Luca89 wrote:*    *Pancu wrote:*   Come CFLAGS che mi consigliate di mettere?? 
> 
> RTFM
> 
> http://gentoo-wiki.com/Safe_Cflags
> ...

 

forse non hai capito... le flags che ti ho postato vanno bene per il tuo sempron..

```
CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=k8 -O2 -pipe"

CXXFLAGS="${CFLAGS}"
```

e sono presenti nel link..   :Rolling Eyes: 

----------

