Newsgroup: it.comp.os.linux.iniziare
Titolo: Ricompilare il kernel

Salve,
L'attuale versione del kernel è 2.6.26-2-686 ho scaricato degli
aggiornamenti e in /usr/src ho queste directory.
linux-headers-2.6.26-2-common linux-headers-2.6.26-2-686 
linux-kbuild-2.6.26
Mi sapete dire cosa contengono, tipicamente, queste cartelle, oltre ai
sorgenti del kernel?
Sarei curioso di provare a ricompilare il kernel. Ho trovato una guida su
internet ma risale al 2001. Me ne sapreste indicare una più aggiornata
(sempre che non possa fare riferimento direttamente a quella del 2001)?
Inoltre vorrei sapere se c'è un modo per ripristinare tutto nel caso in cui
qualcosa andasse storto.
Grazie

 (sempre che non possa fare riferimento direttamente a quella del 2001)?
http://d-i.alioth.debian.org/manual/en.i386/ch08s06.html
Buon divertimento :D
-- 
"All science is either physics or stamp collecting."
Ernest Rutherford.
"All science is either physics AND stamp collecting".
Somewhere on the net

 Buon divertimento :D
Mi pare che quella guida tratti la compilazione stile debian, che consiste
nel creare un pacchetto installabile anche successivamente.
Preferirei qualcosa di più standard e generale.
Ho visto una guida per ricompialare il kernel in 7 passi su ubuntu... può
applicarsi a debian?

 applicarsi a debian?
Perché allora non usi la guida di Fedora o di OpenSuSE?
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

 applicarsi a debian?
non saprei, ma nella Slack la cosa è molto semplice, momento che recupero...
carica l'ultimo kernel stable da 
www.kernel.org
 (sulla destra cliccando F)
scompattalo in
cd /usr/src
cd linux-2.6.xx (il kernel che hai appena scompattato)
cp /boot/config-del-kernel-in-uso   .config
make xconfig
fai le modifiche (se metti il file system statico non hai bisogno 
dell'initrd -questo vale per me, se hai bisogno di altro mettilo statico 
o ricorri all'initrd)
salva
make && make modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.xx && cp System.map 
/boot/System.map-2.6.xx
cp .config /boot/config-2.6.xx
modifica lilo.conf:
image = /boot/vmlinuz-2.6.xx
  root = /dev/sdb1
  label = 2.6.xx
  read-only
quindi lilo -v
al riavvio posso scegliere il nuovo kernel e se non va il vecchio;
r
-- 
l'unica legge elettorale che funzionerebbe in Italia è quella che 
prevede uno sbarramento al 70% di QI
Ramapage, Baudelaire, Pentangle: 
http://umpf.net/

 Perché allora non usi la guida di Fedora o di OpenSuSE?
No, pensavo che ci fosse qualche tecnica adatta a tutte le distribuzioni, e
che quella citata per ubuntu potesse essere una versione semplificata (che
magari non consente di aver un kernel super snello) di quella generale.
Saluti

 applicarsi a debian?
Mi pare di si, ma alla fine anche Ubuntu usa la Debian Way...


 Saluti
Saluti!


 al riavvio posso scegliere il nuovo kernel e se non va il vecchio;
Ok grazie.

 Mi pare di si, ma alla fine anche Ubuntu usa la Debian Way...
Allora seguo la guida che mi hai postato precedentemente.

 e in grub a cosa corrisponde?
a niente, ti basta modificare menu.lst;
r
-- 
Heaven is a place where nothing ever happens
[David Byrne, Heaven]
tutto sui Pentangle: 
http://umpf.net/

>> make && make modules_install
dimenticavo: controlla che il kernel attuale non abbia bisogno di un 
initrd, se sì non so se basta rinominare quello vecchio e non ricordo 
come si fa a crearlo in fase di compilazione;
io non lo uso da un pezzo avendo scoperto che mi basta mettere reiserfs 
prima e ora ext3 statico;
r
-- 
basta con mani pulite!
rimettiamole nel barattolo della marmellata!
Baudelaire e l'arte: 
http://umpf.net/

 come si fa a crearlo in fase di compilazione;
In / ho initrd.img e intird.img.old (ed anche vmlinuz e vmlinuz.old).
Ma non è che scaricando questi aggiornamenti automaticamente ha fatto
qualche installazione?
Come mai ci sono quei file old? 

 linux-kbuild-2.6.26
ma la procedura in quale directory la devo seguire?
In common o 686?
Oltretutto ho dato un'occhiata alle cartelle, contengono altri makefile, e
non son riuscito a trovare nemmeno un sorgente in C.

 ma la procedura in quale directory la devo seguire?
Mi sa che non hai scaricato i sorgenti. Li installi da Synaptic e lui li mette
(compressi) in /usr/src/
Devi installare il pacchetto linux-source-2.6.26 (leggi anche la descrizione,
che ti dice che altro scaricare)
Li scompatti con
tar xvfj #nomepacchetto
e poi crei un link simbolico di nome linux alla directory dei sorgenti del
nuovo kernel
ln -s #nomedirectory linux
e poi 
cd linux
ed inizi a lavorare in quella directory.
Ciï¿œ! :D


 mette (compressi) in /usr/src/
A che servono allora quei file in quelle cartelle?
Comunque ora inizio a leggere la guida :D

 Comunque ora inizio a leggere la guida :D
I file headers (di solito terminano con .h) in soldoni sono dei files in cui
il programmatore inserisce le dichiarazioni di alcune funzione che vengono
usate nei programmi. Nello specifico, quei files, in quelle cartelle, servono
per poter compilare alcuni programmi che hanno bisogno di interfacciarsi con
il kernel (ed il kernel stesso, ovvio). Niente di cui tu debba preoccuparti,
al momento ;)


Ho cercato i sorgenti ma non trovo linux-source, ne ho trovato uno di nome
patch (che appunto credo siano solo patch). Poi ne ho trovato un altro ma
era un pacchetto deb non tar.gz

 cui tu debba preoccuparti, al momento ;)
Ho visto che ci sono file oggetto. Ma verranno richiamati automaticamente
dal sistema?

 dal sistema?
Non lo so, qui mi cogli impreparato :)
Comunque tranquillo, non puoi far danni ricompilando un kernel, nemmeno se
sbagli e nemmeno se lo installi.


 sbagli e nemmeno se lo installi.
Anni fa, quando smanettavo per la prima volta con linux, lo feci e mi pare
che il panico prese il kernel e anche me :-D
Però se non ricordo male si avviava lo stesso, forse utilizzava
automaticamente la versione precedente.

 sbagli e nemmeno se lo installi.
Ho scaricato il file da
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.3.tar.bz2
ma non me lo ha fatto scompattare (col tool grafico di cui non ricordo il
nome). E ogni volta che scarico un file in quel modo, se per caso chiudo il
tool o ho problemi di qualche tipo, quel file non riesco più a trovarlo,
non si capisce in che punto lo salva. Dove dovrei cercare?
Cmq sto scaricando con wget come super user, meno male che c'è la shell...

 Cmq sto scaricando con wget come super user, meno male che c'ï¿œ la shell...
Quoto.


 directory /usr/src.
Ho seguito la guida che dice si salvare i sorgenti compressi in /usr/src e
scompattarli in una cartella in ~
Comunque per ora tutto sembra andare bene, sta compilando (chissà quanto ci
stà ma non è un problema).

 ci stà ma non è un problema).
Ha finito e ha creato il pacchetto deb ma non riesco a trovare dove l'ha
messo :-/

Ho compilato i sorgenti e installato il pacchetto, tutto sembra a posto.
Tra la 2.6.26 e la 2.6.29 non so che differenze ci siano, ma in ogni caso è
stato interessante eseguire questa famosa procedura di compilazione del
kernel :D
I sorgenti posso anche eliminarli no? Mi tengo solo il pacchetto deb?

Pero' forse c'è qualche problema con la web cam perché non la rileva, cosi
ho provato a ripetere la procedura che ho usato tempo fa però:
noixe@debian-lenny:/usr/src/gspcav1-20071224$ sudo apt-get install
linux-headers-$(uname -r) build-essential make automake autoconf g++
gccLettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso       
Lettura informazioni sullo stato... Fatto        
E: Impossibile trovare linux-headers-2.6.29.3
Non trova gli headers... vorrei solo sapere se è una cosa normale (magari
devono ancora implementare questa caratteristica) oppure, dato che gli
header precedenti li trovava, dovrebbero esserci anche questi?

 header precedenti li trovava, dovrebbero esserci anche questi?
Quando costruisci il kernel vero e proprio (make-kpkg kernel-image), gli
headers non vengogno costruiti.
Mettiti in /usr/src/linux e dai
make-kpkg kernel-headers
Alla fine, ti troverai un .deb degli headers nella "solita" /usr/src
Installalo con dpkg -i, come al solito. E riprova con il modulo per la cam.
La prossima volta puoi fare direttamente
make-kpkg kernel-headers kernel-image
Per "costruirli" entrambi.


 stï¿œ ma non ï¿œ un problema).
Se hai una macchina recente, una 20ina di minuti. Tieni conto che, a seconda,
deve compilare svariate decine di MB.


 I link simbolici corrispondo ai collegamenti in windows?
se intendi i .lnk, sono una cosa pi� limitata. 
i collegamenti simbolici sono supportati solo dalle ultime
versioni di win. 
vedi per es. 
http://www.megalab.it/780

 cam.
Fatto, ma il make fallisce, ho l'impressione che questi driver non vadano
bene. Infatti non trova alcuni header e sembra che rilevi incompatilibità
nei sorgenti:
make -C /lib/modules/`uname -r`/build SUBDIRS=/usr/src/gspcav1-20071224
CC=cc modules
make[1]: Entering directory `/home/noixe/linux-2.6.29.3'
  CC [M]  /usr/src/gspcav1-20071224/gspca_core.o
/usr/src/gspcav1-20071224/gspca_core.c:54:27: error: asm/semaphore.h: No
such file or directory
In file included from /usr/src/gspcav1-20071224/gspca_core.c:845:
/usr/src/gspcav1-20071224/utils/spcausb.h: In function ‘spca5xxRegRead’:
/usr/src/gspcav1-20071224/utils/spcausb.h:95: error: implicit declaration of
function ‘info’
/usr/src/gspcav1-20071224/utils/spcausb.h: In function ‘spca_set_interface’:
/usr/src/gspcav1-20071224/utils/spcausb.h:278: error: implicit declaration
of function ‘warn’
In file included from /usr/src/gspcav1-20071224/gspca_core.c:853:
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h: In
function ‘sp5xxfw2_init’:
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h:122: error: called
object ‘info’ is not a function
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h:136: error: called
object ‘info’ is not a function
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h:141: error: called
object ‘info’ is not a function
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h:148: error: called
object ‘info’ is not a function
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h:176: error: called
object ‘info’ is not a function
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h: In
function ‘sp5xxfw2_start’:
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h:214: error: called
object ‘info’ is not a function
/usr/src/gspcav1-20071224/Sunplus-jpeg/sp5xxfw2.h:230: error: called
object ‘info’ is not a function
/usr/src/gspcav1-20071224/gspca_core.c: In function ‘spca5xx_ioctl’:
/usr/src/gspcav1-20071224/gspca_core.c:2463: error: implicit declaration of
function ‘video_usercopy’
/usr/src/gspcav1-20071224/gspca_core.c: At top level:
/usr/src/gspcav1-20071224/gspca_core.c:2609: error: unknown field ‘owner’
specified in initializer
/usr/src/gspcav1-20071224/gspca_core.c:2609: warning: initialization from
incompatible pointer type
/usr/src/gspcav1-20071224/gspca_core.c:2611: error: unknown field ‘type’
specified in initializer
/usr/src/gspcav1-20071224/gspca_core.c:2615: warning: initialization from
incompatible pointer type
/usr/src/gspcav1-20071224/gspca_core.c: In function ‘spca50x_create_sysfs’:
/usr/src/gspcav1-20071224/gspca_core.c:2769: error: implicit declaration of
function ‘video_device_create_file’
/usr/src/gspcav1-20071224/gspca_core.c:2780: error: implicit declaration of
function ‘video_device_remove_file’
/usr/src/gspcav1-20071224/gspca_core.c: In function ‘spca5xx_probe’:
/usr/src/gspcav1-20071224/gspca_core.c:4301: error: incompatible types in
assignment
make[2]: *** [/usr/src/gspcav1-20071224/gspca_core.o] Error 1
make[1]: *** [_module_/usr/src/gspcav1-20071224] Error 2
make[1]: Leaving directory `/home/noixe/linux-2.6.29.3'
make: *** [default] Error 2

 nei sorgenti:
In effetti...
Uhm. Hai provato con una nuova versione del modulo?


 
http://en.wikipedia.org/wiki/Symbolic_link
 
C'è anche quella in italiano :-D
Comunque qui si nota penso la sostanziale differenza:
http://it.wikipedia.org/wiki/Collegamento_(Windows)
Concettualmente, un collegamento in Windows è simile ad un collegamento
simbolico in ambiente Unix, ma ha un funzionamento molto meno trasparente:
in pratica, ad utilizzarlo e rispettarne la funzione, è solo la shell
grafica di Windows, Windows Explorer, e con essa le finestre comuni di
apertura e salvataggio dei file utilizzate da quasi tutti i programmi. Per
il resto, tutte le funzionalità di accesso ai file fornite da Windows non
riconoscono un collegamento come tale, e questo si rivela un grave handicap
per tutti gli strumenti a riga di comando dal momento che non possono
utilizzare l'interfaccia grafica per permettere all'utente la selezione di
un file.
Però dice anche che:
Un collegamento non è semplicemente un rimando al file di destinazione: se
il file a cui si riferisce è un file eseguibile di un'applicazione, l'uso
di un collegamento permette di specificare alcuni parametri d'esecuzione
del programma: l'esempio più diffuso è l'aggiunta di parametri da riga di
comando al programma, cosa non possibile con i collegamenti simbolici.

 Uhm. Hai provato con una nuova versione del modulo?
Stasera faccio nuovamente la ricerca dei gspca, forse ce ne vuole un altro,
ma se non ricordo male l'altra versione disponibile era per kernel più
vecchi.

 comando al programma, cosa non possibile con i collegamenti simbolici.
????
attila2:/home/enri# /etc/rc2.d/S04laptop-mode start
Enabling laptop mode...Following symlink from /dev/scd0 to /dev/sr0.
Polling is already disabled on the given drive.
The given drive don't use removable media so it's not polled anyway.
done (enabled, active).
attila2:/home/enri#
e S04laptop-mode ï¿œ un simlink...


 e S04laptop-mode é un simlink...
credo parlasse dei link in Win;
r
-- 
Pull down thy vanity, I say pull down.
[Canto LXXXI]


 e S04laptop-mode é un simlink...
Credo intendesse che i parametri da riga di comando li puoi mettere 
"dentro" al collegamento. Cosa che di solito si fa con gli alias sotto 
Unix.
See you,
        Silver Drake
-- 
Paperblog: l'irriverente blog della famiglia pinguina
http://www.silverdrakenet.it/blog/blog.html
Quello che scrive il Drake è la verità (gg)
RADIO HELL: 
http://www.myspace.com/rh666

 più vecchi.
Ho ritrovato quel sito e praticamente ricordavo bene, la versione che ho io
è per i kernel dal 2.6.11 in su. L'altra versione è per kernel precedenti.
Inoltre ho trovato la segnalazione di un errore da parte di un utente che
sembra avere il mio stesso problema col kernel 2.6.27 (più nuovo del mio
precedente ma più vecchio del mio attuale):
http://img264.imageshack.us/img264/1897/schermatapa8.png
In questi casi, cosa si fa?
1. Si aspetta/spera che vengano rilasciati i driver
2. Si usa il kernel precedente
3. Si cambia webcam
4. Altro

 4. Altro
a) scrivi all'autore per chidere info
b) ti modifichi i sorgenti :D


 credo parlasse dei link in Win;
Avrï¿œ letto di fretta.
p.s. Non per srompere le palle, ma quella "r" mi viene sempre quotata. Un paio
di trattini+uno spazio? ;-)


 Unix.
Vedi risposta a Rama :D


 di trattini+uno spazio? ;-)
non fa parte della sign;
potrei evitare di metterla ma il post mi darebbe un'aria d'incompiutezza;
come questo;


 
Capisco. ï¿œ come il caffï¿œ alla fine del pranzo. ;)


 b) ti modifichi i sorgenti :D
Conoscendo a fondo il funzionamento del driver, forse :P