PDA

Visualizza versione completa : ricompilare e compilare il kernel


Ghandalf
23-10-2003, 01.46.31
RICOMPILARE IL KERNEL

ln -s linux-2.4.22 linux
cd linux
make xconfig
make dep
make clean
make bzImage
make modules
make modules_install

cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22
cp System.map /boot/System.map-2.4.22

Oppure se vuoi far fare tutto senza dover aspettare, mettici && tra ogni comando..Con due & il comando seguente viene eseguito solo se quello prima e' terminato con successo..

editi /etc/lilo.conf
lilo -v


DUE KERNEL CONTEMPORANEAMENTE
Supponiamo che io abbia MDK9.1 col suo bel kernel 2.4.21_0.13 in /usr/src.

Ho scaricato il 2.4.22 e l'ho decompattato e copiato in /usr/src

Adesso ho tre cartelle "importanti":


linux (link al sottostante)
linux-2.4.21_0.13mdk
linux-2.4.22


Voglio compilare il 2.4.22 e tenermelo in dual boot col vecchio 2.4.21_0.13mdk.

Ci sono delle cose che non ho capito:

dando ad esempio il comando


rm linux


tolgo il link al mio vecchio kernel...devo farlo?

per poi' crearne un altro:


ln -s linux-2.4.22



Tralasciando questo.

Apro un terminale e mi sposto nella cartella linux-2.4.22.

da qui avvio subito e senza preamboli:

make xconfig (mi piace grafico:p)

una volta finita la configurazione salvo e chiudo l'xconfig.

continuando nel terminale do

make dep
make clean
make bzImage

make modules
make modules_install

SI puo' anche dare:

make dep && make bzImage [...] && make modules_install

questo fa si' che il comando venga eseguito solo se quello precedente e' andato a buon fine ed ovviamente evita di stare li' a dare ogni singolo comando...

Ed in teoria il mio nuovo kernel e' pronto per essere avviato.

Copio il nuovo bzImage creato in /usr/src/linux-2.4.22/arch/i386/boot

in
/boot

Dopodiche' edito lilo.conf

Aggiungo la stringa


image=/boot/bzImage
label="mdk9.1_new"
root=/dev/hdb1

e varie ed eventuali.

Mi sposto sempre in /sbin e do il comando lilo e se tutto va bene sono pronto a riavviare ed ad avere il mio nuovo kernel.

Ci sono?


Se mi date una mano e lo correggiamo potrebbe essere una guida..;)

pholcus
23-10-2003, 10.35.53
ln -s linux-2.4.22 linux
cd linux
make xconfig
make dep
make clean
make bzImage
make modules
make modules_install

cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22
cp System.map /boot/System.map-2.4.22

Oppure se vuoi far fare tutto senza dover aspettare, mettici && tra ogni comando..Con due & il comando seguente viene eseguito solo se quello prima e' terminato con successo..

editi /etc/lilo.conf
lilo -v

http://www.wintricks.it/forum/showthread.php?s=&postid=433575&highlight=kernel#post433575

Poi x averne due contemporaneamente guarda il post sopra..

Avevo promesso, avrei fatto una guida (infatti nel mio sito l'ho iniziata ) ma non ho mai tempo di far niente..

mmm..entro fine settimana la finisco ( piu' che altro e' la parte della configurazione che e' lunga, ma quella e' l'ultima cosa da finire )..

Metto insieme i consigli di questi post, cosi si fa prima ;)

Ghandalf
23-10-2003, 11.35.45
Bhe' il vantaggio di fare una mini guida sul forum e' che ci si lavora in tanti..:D

Solo una cosa, ma per avere due kernel contemporaneamente il link linux a quale dei due deve puntare??

Principalmente ma quel link a cosa serve??


Ad ogni nuovo consiglio o correzione aggiorno il mio primo post...e vi integro quello di pholcus..:)

Ghandalf
23-10-2003, 11.46.34
Originariamente inviato da pholcus

Supponiamo di avere in /usr/src la directory dell'attuale kernel "linux-2.4.20".
Ora, magari vogliamo fare delle prove con un nuovo kernel dela stessa versione..
Copiamo la directory linux-2.4.20:

cp -r linux-2.4.20 linux-2.4.20-prova

Avremo cosi una directory identica con le stesse impostazioni..
Entriamo nella nuova directory.

cd linux-2.4.20-prova

Apriamo il file "Makefile" con un editor.

kwrite Makefile

Cerchiamo la riga EXT= e mettiamo:

EXT= -prova

Perche' questo passaggio nel make file?


Una volta compilato otterremo un kernel con nome linux-2.4.20-prova, e dando make modules_install si creera' la directory /lib/modules/linux-2.4.20-prova .

Ora spostiamoci in /boot

cd /boot

Copiamo il kernel e il System.map in /boot

cp /usr/src/linux-2.4.20-prova/arch/i386/boot/bzImage ./vmlinuz-2.4.20-prova
cp /usr/src/linux-2.4.20-prova/System.map /usr/src/linux-2.4.20-prova/System.map-2.4.20-prova

Ora andate ein /etc/rc.d/ e cercate un file con il nome syslog: sotto slackware e' rc.syslog; in debian /etc/init.d/sysklogd , nelle altre distribuzioni dovrebbe essere /etc/rc.d/init.d/sysklog.

Apritelo con un editor e cercate la linea simile a questa:

klogd -k /boot/System.map

Modificatela in modo da renderla

klogd -k /boot/System.map-`uname -r`

ATTENZIONE AGLI APICI INVERSI CHE RACCHIUDONO uname -r !!

Ora aprite il solito lilo.conf e aggiungete il nuovo kernel, date lilo -v e al riavvio avrete a disposizione il nuovo kernel..


perche' queste modifice al system.map, di cosa si occupa?


Esempio di configurazione:


In /boot dovreste avere i file dei due kernel:

/boot/vmlinuz-2.4.20 (vecchio kernel)
/boot/vmlinuz-2.4.20-prova (nuovo kernel)
/boot/System.map-2.4.20 (vecchio System.map)
/boot/System.map-2.4.20-prova (nuovo System.map)

In /etc/lilo.conf dovreste avere:

image=/boot/vmlinuz-2.4.20
label=2.4.20
root=/dev/hdx

image=/boot/vmlinuz-2.4.20-prova
label=2.4.20-prova
root=/dev/hdx

Ghandalf
23-10-2003, 12.39.08
ok..il makefile lo modifichiamo per dare un nome al nuovo kernel.. ma il sys.map??

pholcus
23-10-2003, 13.46.46
http://www.dirac.org/linux/system.map/

Qui e' spiegato..
Cerca su google "system.map linux"

Facendo quello che ho scritto nell'altro post, ogni volta che si carica un kernel, viene caricato il System.map specifico.



il link
ln -s linux-2.4.22 linux,

Serve quando compili..

Gli include del kernel sono in /usr/include/linux
Di solito questo e' un link a /usr/src/linux/include/linux
Quando installi un nuovo kernel, devi poi avere gli include della release usata in quel momento..

Immagina di avere installato un kernel 2.6, quando pero' compili usi gli header del 2.4.x perche' non hai i link aggiornati..Non e' un bel lavoro ;)

Facendo il link che ti ho scritto prima ti semplifichi la vita, aggiornando di volta in volta un solo link ;)

Ora sinceramente non so se mdk abbia tutti i link al posto giusto, dagli un'occhiata..


Ciao

Ghandalf
23-10-2003, 16.23.01
Allora...ho cominciato con la procedura piu' semplice..:D

Ho ricompilato il 2.4.81-0.13mdk...che di default ha una marea di cose che non servono..:)
Tutto perfetto...- >ma questo e' facile!

non ho dato il mrproper...per evitare di dovere ricominciare da capo! e non ho neanche dato ln -s...di fatto rimane un link e se il kernel e' quello di default non c'e' motivo di ricrearlo...o sbaglio?

pholcus
23-10-2003, 17.42.32
Si infatti se ricompili quello di default non devi ricreare il link, c'e' gia'!

Ciao!