Pagina 1 di 2
slackbuil for kernel headers
Inviato: lun 17 ott 2005, 13:07
da salbutamolo
Ciao a tutti,
ogni volta che compilo ed installo un kernel nuovo, "installo" anche i nuovi headers del suddetto kernel tramite un mio script, che devo dire funziona egregiamente, in quanto si occupa anche di rimuovere gli headers vecchi...quindi il sistema rimane pulito. Tuttavia mi è venuta la voglia di realizzare un pacchetto tgz in maniera tale da rendere più ordinata la procedura. Ho cercato lo slackbuild del pacchetto kernel-headers-* nei sorgenti di slackware 10.2 ma ho trovato solo uno slack-desc. Sono cieco io o questo script manca? Have a nice day
Inviato: lun 17 ott 2005, 18:51
da Bart
Scusa, ma quanto è importante da 0 a 10 aggiornare gli headers? Se non lo fai che problemi puoi riscontrare? Io lo faccio veramente di rado.
Inviato: lun 17 ott 2005, 19:00
da zzt
Non riesci a compilare cose che richiedono gli header aggiornati
Inviato: lun 17 ott 2005, 19:17
da zzt
In realtà se ti ricompili il kernel e quindi hai i sorgenti del kernel in /usr/src/linux non ti serve a nulla il pacchetto dei kernel-headers. Ti bastano due link simbolici:
/usr/include/linux -> /usr/src/linux/include/linux/
/usr/include/asm -> /usr/src/linux/include/asm/
In questo modo tutte le volte che compili un nuovo kernel aggiustando il link /usr/src/linux metti automaticamente a posto gli header.
Inviato: mar 18 ott 2005, 10:22
da Bart
zzt ha scritto:In realtà se ti ricompili il kernel e quindi hai i sorgenti del kernel in /usr/src/linux non ti serve a nulla il pacchetto dei kernel-headers. Ti bastano due link simbolici:
/usr/include/linux -> /usr/src/linux/include/linux/
/usr/include/asm -> /usr/src/linux/include/asm/
In questo modo tutte le volte che compili un nuovo kernel aggiustando il link /usr/src/linux metti automaticamente a posto gli header.
Io di solito procedo così:
Codice: Seleziona tutto
Copio i sorgenti reperiti su www.kernel.org in /usr/src/
Scompatto i sorgenti ed eseguole seguenti istruzioni:
# rm linux
# ln -s linux-2.6.x linux
Cancello il vecchio link simbolico e ne creo un altro che punti al nuovo kernel
# cd /usr/src/linux-2.6.x
# make mrproper
# make menuconfig
Effettuo la configurazione scelta
# make -j5 && make modules_install
In questa maniera non mi sono mai interessatio troppo degli header e non ho mai avuto problemi.
Inviato: mar 18 ott 2005, 12:34
da zzt
Certo, il kernel si compila perchè giustamente ha i suoi kernel header..
Il problema nasce quando vuoi compilare qualche applicazione che ha bisogno dei kernel header perchè, come la maggior parte degli header, si dovrebbero trovare in /usr/include/.
Quindi risolvi la situazione con i link di cui o parlato sopra.
Se tu, ad esempio, installi il pacchetto con i kernel header del 2.6.9 e in realtà ti sei compilato il 2.6.14 come dici tu, quando compili qualche applicazione usi i vecchi kernel header (e nel 99% dei casi non hai nessun problema).
Inviato: mar 18 ott 2005, 15:06
da Bart
Ok, ma se io volessi aggiornare ogni volta gli headers come fa salbutamolo, dove posso reperirli? Perchè da quello che ho capito nella maniera in cui procedo io gli headers non vengono aggiornati.
Detto questo ogni volta che ricompilo un nuovo kernel dovrei prima aggiornare gli headers e poi compilarmi il nuovo kernel, giusto?
Inviato: mar 18 ott 2005, 15:16
da zzt
Io il pacchetto con i kernel-header non l'ho mai installato...
Se fai i due link simbolici che ho scritto sopra, ti ritrovi automaticamente i kernel-header corretti quando cambi il link /usr/src/linux alla nuova versione compilata.
Quando compili il kernel non ti servono kernel-header particolari sono già tutti compresi nei sorgenti ed io non faccio altro che riutilizzare quelli.
Inviato: mar 18 ott 2005, 15:21
da Bart
zzt ha scritto:Io il pacchetto con i kernel-header non l'ho mai installato...
Se fai i due link simbolici che ho scritto sopra, ti ritrovi automaticamente i kernel-header corretti quando cambi il link /usr/src/linux alla nuova versione compilata.
Quando compili il kernel non ti servono kernel-header particolari sono già tutti compresi nei sorgenti ed io non faccio altro che riutilizzare quelli.
Quei due link li crei prima di compilare? Da quello che ho capito è indifferente perchè servono solo per applicazioni che sfruttano appunto gli headers del kernel, vero?
Inviato: mar 18 ott 2005, 15:23
da zzt
Esatto
Inviato: mar 18 ott 2005, 15:33
da Bart
zzt ha scritto:In realtà se ti ricompili il kernel e quindi hai i sorgenti del kernel in /usr/src/linux non ti serve a nulla il pacchetto dei kernel-headers. Ti bastano due link simbolici:
/usr/include/linux -> /usr/src/linux/include/linux/
/usr/include/asm -> /usr/src/linux/include/asm/
In /usr/include/asm ho un link simbolico ma ho dei dubbi su questa:
/usr/include/linux -> /usr/src/linux/include/linux/
Io non ho alcun link del genere, forse intendevi /usr/src/linux che punta alla directory del kernel corrente?
Inviato: mar 18 ott 2005, 15:49
da zzt
Qui
http://www.slackware.it/pb/showfile.php ... .31-i386-1
ci sono elencati i file contenuti nel pacchetto kernel-headers, che come vedi semplicemente riempono /usr/include/asm-i386 e /usr/include/linux. Questi file sono identici a quelli contenuti nei sorgenti del kernel nelle directory (supponendo di avere i sorgenti in /usr/src/linux):
/usr/src/linux/include/asm (che è tipicamente a sua volta un link simbolico a /usr/src/linux/include/asm-i386)
/usr/src/linux/include/linux
Quindi facendo i due link che ho scritto eviti di avere i file copiati 2 volte o di utilizzare kernel-header di un kernel diverso da quello attuale (supponendo che /usr/src/linux punti ai sorgenti dell'ultimo kernel compilato)
/usr/include/linux -> /usr/src/linux/include/linux/
/usr/include/asm -> /usr/src/linux/include/asm/
Tra l'altro questa soluzione permette di compilare per qualsiasi kernel che si ha a disposizione in /usr/src senza bisogno di riavviare, basta cambiare il link /usr/src/linux e si hanno sempre gli header corretti.
Inviato: mar 18 ott 2005, 16:53
da Bart
Ora è più chiaro, grazie

Inviato: mar 18 ott 2005, 17:07
da zzt
Figurati... queste cose le ho imparate a mie spese
Se ad esempio patchi il kernel per avere qualche funzione particolare (mpls nel mio caso) e poi cerchi di compilare qualche applicazione scritta per funzionare con il kernel patchato, se non sistemi correttamente gli header non compili nulla...
In realtà pochissime persone hanno problemi per questo motivo perchè gli header sono abbastanza stabili da un versione all'altra del kernel e il pacchetto di Pat basta ed avanza.
Inviato: mar 18 ott 2005, 20:23
da aries
a proposito di patchare il kernel: ho il 2.6.13.4 e il mio lettore di memory per fotocamere 8 in 1, continua a non funzionare, mentre con mandriva e fedora funzionava.
Esiste una patch per slack che risolva l'inconveniente?
Ciao