PDA

View Full Version : Errore compilazione kernel


dan77
13-06-2003, 10:07
E' la prima volta che compilo il kernel, quindi non escludo di aver fatto qualche cavolata...

Ho seguito le istruzioni che mi avevate dato, ma ad un certo punto di make bzImage si verifica un errore!

Riepilogo i passi:
- creo il file .config nella directory col kernel
- make xconfig (modifico iil file .config)
- make clean (pulisco)
- make dep
- make bzImage

Ad un cero punto mi compare:

page_alloc.c: In function `free_area_init_core':
page_alloc.c:981: `smp_num_cpus' undeclared (first use in this function)
page_alloc.c:981: (Each undeclared identifier is reported only once
page_alloc.c:981: for each function it appears in.)
make[2]: *** [page_alloc.o] Error 1
make[2]: Leaving directory `/usr/src/linux-2.4.20-8/mm'
make[1]: *** [first_rule] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.20-8/mm'
make: *** [_dir_mm] Error 2


Mi è venuto il dubbio di aver fatto qualche errore modificando il file .config.
Allora ho copiato il file che avevo nella directory /boot e ho provato a ricompilarlo, ma mi da lo stesso errore!


Avete qualche suggerimento?
Per la cronaca ho RedHat 9

Grazie

Nightwish
13-06-2003, 22:10
Da quello che vedo, sul PC hai un solo processore, l'errore che ti da se ho capito bene e perche hai messo il supporto multi processore... Prova a togliere il support multi processor dalla configurazione del kernel e ricompilare. Spero di esserti stato d'aiuto.
Ciao! :D

Gavrila
13-06-2003, 22:18
Originally posted by "Nightwish"

Da quello che vedo, sul PC hai un solo processore, l'errore che ti da se ho capito bene e perche hai messo il supporto multi processore... Prova a togliere il support multi processor dalla configurazione del kernel e ricompilare. Spero di esserti stato d'aiuto.
Ciao! :D

nn saprei... questo significherebbe che non si puo' compilare su una macchina con un solo processore un kernel magari da mettere su una macchina con piu' proc? :confused:

dan77
14-06-2003, 07:42
Quello che non mi è chiaro è che non mi compilava neanche il file di configurazione che era presente in /boot. Questo file non è quello con cui dovrebbe essere compilato il kernel della distro?

Cmq ho provato a ricompilarlo sul portatile ... e a parte le modifiche quali ACPI e altre cosette sono qiuscito a compilarlo! ... beh, ho qualche problema con l'USB e il video in modo testo, però parte!

Nightwish
14-06-2003, 10:32
Originally posted by "Gavrila"



nn saprei... questo significherebbe che non si puo' compilare su una macchina con un solo processore un kernel magari da mettere su una macchina con piu' proc? :confused:

Si puo fare, il fatto e che e strano che li da quel errore, almeno a me anche se ho dimenticato il supporto multi processor qualche volta, il kernel mi si compilava lo stesso. Quello che non so e se magari la RedHat che usa lui ha dei kernel con delle patch fatte dalla RedHat per cui se non hai tipo comprato la versione server per multiprocessor, non te lo fa compilare, mi sembra molto strano pero, ma non so che altro puo essere. :confused:

Nightwish
14-06-2003, 10:53
Originally posted by "dan77"

Quello che non mi è chiaro è che non mi compilava neanche il file di configurazione che era presente in /boot. Questo file non è quello con cui dovrebbe essere compilato il kernel della distro?

Cmq ho provato a ricompilarlo sul portatile ... e a parte le modifiche quali ACPI e altre cosette sono qiuscito a compilarlo! ... beh, ho qualche problema con l'USB e il video in modo testo, però parte!

Non so com'e sulla RedHat, perche alcune distro mettono i file magari in altre directory e fanno magari dei cambiamenti. Io uso la Debian e i sorgenti del kernel me li scarico da www.kernel.org me li scompato in /usr/src faccio un link simbolico alla directory dei sorgenti e lo chiamo linux poi entro nella directory e faccio make menuconfig il file di configurazione comunque almeno nel mio caso e a tutti quelli che scaricano sorgenti da kernel.org si trova nella directory dei sorgenti stessi con il nome .config cioe e un file nascosto. Io non so se la RedHat mette il file anche nella directory /boot
Spero di esserti stato d'aiuto, comunque se te la senti, passa a Debian. E un po piu difficile da configurare, ma penso che ti troverai meglio. Io per dire sono partito con la Debian, e la prima volta non mi andava quasi niente, allora ho messo la Mandrake che ha fatto tutto da sola, ma l'ho tolta il giorno dopo, perche non mi piaceva questa cosa. Alla fine se so quello che so adesso, lo devo al fatto di aver rinunciato alla cosa pronta, per capire cosa sbagliavo e farmi tutto da solo. Non dico di essere un esperto adesso, ma piu o meno so dove mettere le mani. Se pero non ti interessa imparare qualcosa in piu, perche non hai magari il tempo o perche vuoi solo un sistema che funzioni bene per lavorare, allora forse ti conviene tenere la RedHat, e di sicuro piu user friendly rispetto alla Debian e ti risparmiera parecchio tempo! Sono ottime distribuzioni tutte e due, a te la scelta. :)

dan77
14-06-2003, 11:37
Originally posted by "Nightwish"



Si puo fare, il fatto e che e strano che li da quel errore, almeno a me anche se ho dimenticato il supporto multi processor qualche volta, il kernel mi si compilava lo stesso. Quello che non so e se magari la RedHat che usa lui ha dei kernel con delle patch fatte dalla RedHat per cui se non hai tipo comprato la versione server per multiprocessor, non te lo fa compilare, mi sembra molto strano pero, ma non so che altro puo essere. :confused:


Non credo in qualche cavolata made in RedHat, anche perché sul portatile, con le stesse impostazioni compila... controllerò meglio!

dan77
14-06-2003, 11:41
Originally posted by "Nightwish"



Non so com'e sulla RedHat, perche alcune distro mettono i file magari in altre directory e fanno magari dei cambiamenti. Io uso la Debian e i sorgenti del kernel me li scarico da www.kernel.org me li scompato in /usr/src faccio un link simbolico alla directory dei sorgenti e lo chiamo linux poi entro nella directory e faccio make menuconfig il file di configurazione comunque almeno nel mio caso e a tutti quelli che scaricano sorgenti da kernel.org si trova nella directory dei sorgenti stessi con il nome .config cioe e un file nascosto. Io non so se la RedHat mette il file anche nella directory /boot
Spero di esserti stato d'aiuto, comunque se te la senti, passa a Debian. E un po piu difficile da configurare, ma penso che ti troverai meglio. Io per dire sono partito con la Debian, e la prima volta non mi andava quasi niente, allora ho messo la Mandrake che ha fatto tutto da sola, ma l'ho tolta il giorno dopo, perche non mi piaceva questa cosa. Alla fine se so quello che so adesso, lo devo al fatto di aver rinunciato alla cosa pronta, per capire cosa sbagliavo e farmi tutto da solo. Non dico di essere un esperto adesso, ma piu o meno so dove mettere le mani. Se pero non ti interessa imparare qualcosa in piu, perche non hai magari il tempo o perche vuoi solo un sistema che funzioni bene per lavorare, allora forse ti conviene tenere la RedHat, e di sicuro piu user friendly rispetto alla Debian e ti risparmiera parecchio tempo! Sono ottime distribuzioni tutte e due, a te la scelta. :)

Grazie per i consigli!
Il fatto è che mi sto configurando il sistema per la tesi... Quasi certamente userò linux per i progetti.
Per ora resterò sulla RedHat per due motivi: non ho troppo tempo per imparare bene a configurare il sistema ed inoltre i computer del laboratorio hanno solo RedHat, quindi preferisco non cambiare.

dan77
14-06-2003, 11:45
Cmq ora ho un altro problemino.
Sul portatile riesco a compilare il kernel e a farlo partire. Solo che in modo testo è tutto sfalsato. Ho guardato più volte tutte le voci di xconfig, ma non riesco a trovare la voce che mi modifica questo parametro...
Avete qualche suggerimento?

Nightwish
14-06-2003, 14:53
Originally posted by "dan77"

Cmq ora ho un altro problemino.
Sul portatile riesco a compilare il kernel e a farlo partire. Solo che in modo testo è tutto sfalsato. Ho guardato più volte tutte le voci di xconfig, ma non riesco a trovare la voce che mi modifica questo parametro...
Avete qualche suggerimento?

In modo testo intendi dentro l'interfaccia grafica aviando un terminale o intendi senza X quindi solo testuale? Se intendi dentro X prova a cambiare i font che usa il terminale se invece intendi in testuale puro, magari e un problema di framebuffer. Se cosi fosse prova a compilare il kernel solo con il framebuffer VESA. Ciao! :)

dan77
15-06-2003, 06:04
Originally posted by "Nightwish"



In modo testo intendi dentro l'interfaccia grafica aviando un terminale o intendi senza X quindi solo testuale? Se intendi dentro X prova a cambiare i font che usa il terminale se invece intendi in testuale puro, magari e un problema di framebuffer. Se cosi fosse prova a compilare il kernel solo con il framebuffer VESA. Ciao! :)

Intendo senza X...
Ora provo, grazie!

dan77
15-06-2003, 08:01
Ho provato, ma niente da fare!
Ho provato anche a disabilitare la modalità text VGA, ma niente!

dan77
15-06-2003, 19:54
Con il kernel scaricato da www.kernel.org tutto ok! Finalmente! Che gioia!

Ora però ho notato che il kernel originale non ha i moduli per il downclock della cpu che a me (che non ho processore mobile) servirebbe! Avete qualche idea di come downclockare la cpu?

Nightwish
15-06-2003, 22:27
Originally posted by "dan77"

Con il kernel scaricato da www.kernel.org tutto ok! Finalmente! Che gioia!

Ora però ho notato che il kernel originale non ha i moduli per il downclock della cpu che a me (che non ho processore mobile) servirebbe! Avete qualche idea di come downclockare la cpu?

Se i moduli che usava il tuo vecchio kernel sono stati fatti dalla RedHat non ne ho idea, ma mi sa che devi usare il kernel loro purtroppo... :(
Se invece non e un kernel loro, fatti una ricerca con google o direttamente su sourceforge.net e vedi se c'e qualche patch per il kernel che permette di fare questo. Se la RedHat ha usato una patch non sua allora quasi sicuramente la trovi su sourceforge. :)

dan77
16-06-2003, 12:04
Beh, grazie anche al tuo aiuto ora riesco a cavarmela abbastanza bene con la compilazione del kernel. Proverò a cercare qualche patch per la CPU, ma credo non ce ne sia bisogno visto che ho già ottenuto i risultati sperati (abbassare la temperatura del processore). Ero convinto che oltra ad installare ACPI si dovesse utilizzare qualche programma particolare.

Anche se vado un po' OT spero che tu o qualcun'altro possa aiutarmi. Volevo fare un programmino in C per la lettura delle temperature e cose simili. Ora però mi sono accorto di un piccolo problemino: da quando ho messo la red hat 9 non riesco più a compilare in c! Cacchio! L'avevo sempre fatto per preparare l'esame di sistemi operativi! Ora non mi trova le librerie! Ho provato a cercarle e le trovo (a mano), ma anche se specifico le directory in gcc mi dice che non riesce a trovare STDIO.H!
Qualche suggerimento?

Nightwish
16-06-2003, 14:02
Originally posted by "dan77"

Beh, grazie anche al tuo aiuto ora riesco a cavarmela abbastanza bene con la compilazione del kernel. Proverò a cercare qualche patch per la CPU, ma credo non ce ne sia bisogno visto che ho già ottenuto i risultati sperati (abbassare la temperatura del processore). Ero convinto che oltra ad installare ACPI si dovesse utilizzare qualche programma particolare.

Anche se vado un po' OT spero che tu o qualcun'altro possa aiutarmi. Volevo fare un programmino in C per la lettura delle temperature e cose simili. Ora però mi sono accorto di un piccolo problemino: da quando ho messo la red hat 9 non riesco più a compilare in c! Cacchio! L'avevo sempre fatto per preparare l'esame di sistemi operativi! Ora non mi trova le librerie! Ho provato a cercarle e le trovo (a mano), ma anche se specifico le directory in gcc mi dice che non riesce a trovare STDIO.H!
Qualche suggerimento?

Mi sa che sta volta non ti posso aiutare molto... Se mi dici che il link alle librerie e giusto e non ti funziona, non so cosa puo essere. Mi spiace... :(

Comunque per le temperature puoi usare lm-sensors se non sbaglio.

dan77
16-06-2003, 14:28
Ho visto che esistono già dei programmi per la lettura dello stato ACPI, però volevo farne uno semplice per riprendere la programmazione in C...

Cmq proprio non me la spiego questa novità! ... continuo a cercare!


Grazie di tutto!

Nightwish
16-06-2003, 14:43
Originally posted by "dan77"

Ho visto che esistono già dei programmi per la lettura dello stato ACPI, però volevo farne uno semplice per riprendere la programmazione in C...

Cmq proprio non me la spiego questa novità! ... continuo a cercare!


Grazie di tutto!

E di che? Quando hai bisogno siamo qui! :)

dan77
16-06-2003, 18:51
Ok, ok, sono un pirla ... problema compilazione risolto.

Ora me n'è successa un'altra: ho compilato il kernel e ho compilato pctel (per il modem del portatile). Quando carico il modulo per il modem mi dice che il kernel è stato compilato con gcc 3, mentre il modulo con gcc 2, quindi non funge! Ma come è possibile? Li ho compilati sullo stesso computer!

lovaz
17-06-2003, 08:08
Originally posted by "dan77"

... Quando carico il modulo per il modem mi dice che il kernel è stato compilato con gcc 3, mentre il modulo con gcc 2, quindi non funge! Ma come è possibile? Li ho compilati sullo stesso computer!
Forse nel pacchetto dei driver ci sono dei pezzi precompilati (argh!), guarda se ci sono file con estensione .o .a :muro:

dan77
17-06-2003, 08:18
Originally posted by "lovaz"


Forse nel pacchetto dei driver ci sono dei pezzi precompilati (argh!), guarda se ci sono file con estensione .o .a :muro:

... ma il bello è che la versione che ho scaricato di PcTel (la 0.9.6) è stata rilasciata apposta per risolvere il problema di gcc versione 3!!!

Dopo controllo (ora sono sotto winzozz).

dan77
17-06-2003, 09:04
Altro problema, questo mi infastidisce un po'...

Ho compilato il kernel con il supporto per NTFS (in sola lettura) perché RedHat 9 non la supporta di default!
Con le versioni precedenti che avevo provato non avevo nessun problema a vedere le partizioni da linux. Ora le vedo solo come root. Come utente no! Ho provato a modificare fstab, mtab e i permessi in /mnt, ma niente! Ogni volta che faccio mount -a mi modifica nuovamente mtab togliendomi l'opzione user.
Avete qualche suggerimento?

lovaz
17-06-2003, 09:08
Prova a vedere qua:

http://linux-ntfs.sourceforge.net/info/redhat.html

dan77
17-06-2003, 18:41
Originally posted by "lovaz"

Prova a vedere qua:

http://linux-ntfs.sourceforge.net/info/redhat.html


Ho letto di fretta, ma non mi sembra che chiarisca i miei dubbi... il fatto è che non mi lascia impostare i premessi per poter fare il mount come utente generico... A me basterebbe che facesse il mount durante il boot. Ho messo auto,user,ro in fstab e mtab ma niente! Ogni volta che provo a rifare il mount mi toglie user!

Provo ancora ad aggiungere umask=0222... vedremo!

dan77
17-06-2003, 18:46
Approfitto ancora... Come si fa a far caricare un modulo all'avvio del sistema? Da quanto ho letto bisogna modificare il file /etc/modules.conf
Ho provato a farlo, però non ho combinato niente. Cosa devo scrivere? Io ho messo probe modulo modulo. In teoria la sintassi dovrebbe essere probe nome lista_moduli ma non ho ben capito cosa devo mettere come nome...

Nightwish
17-06-2003, 19:16
Allora per le partizioni NTFS, con umask, dovrebbe andare, se no aggiungi anche gid=nomeutente.

Per i moduli, almeno su debian, devi modificare modules e non modules.conf e basta che scrivi il nome del modulo. Se no un altra soluzione sarebbe modificare lo script che sta in /etc/init.d e si chiama (parlando sempre della debian) bootmisc.sh li puoi aggiungere, sia il modulo da caricare e magari anche delle opzioni in piu per quel modulo.

Spero di esserti stato d'aiuto ciao! :)