Pagina 1 di 1

ricompilazione kernel

Inviato: ven 13 lug 2007, 14:37
da moebius77
Ho installato la slack 12 e di default ho installato il kernel huge2.6-smp (pur avendo un pentium4)
Vorrei provare a compilare il kernel huge 2.6 (non smp)
nella directory boot ho i file system.map, vmlinuz , config, sia del 2.6 semplice che del 2.6 smp
nella directory /usr/src ho un unica directory dei sorgenti ; per ricompilare mi basta importare in essa il config del 2.6 normale e andare con la normale procedura tanto le opzioni per l'smp non mi vengono evidenziate , o devo scaricare la directory dei sorgenti per il 2.6 normale e così via..?

Grazie

P.S.: perchè bisogna mettersi per forza nella directory-link linux e non lavorare direttamente in quella dei sorgenti?

Inviato: ven 13 lug 2007, 14:57
da phobos3576
In realtà, la directory /usr/src/linux è un link simbolico che punta alla directory /usr/src/linux-x.y.z dove si trova il codice sorgente del kernel attualmente in uso; ovviamente, nessuno ti impedisce di ricompilare il kernel posizionandoti direttamente in /usr/src/linux-x.y.z.
Tieni presente comunque che la presenza di questo link simbolico è importantissima visto che, quando si ricompilano ad esempio determinati driver o programmi, viene fatto riferimento automaticamente a /usr/src/linux presupponendo che tale link simbolico stia puntando alla directory dove è presente il kernel correntemente in uso.

Prima di ricompilare e installare un nuovo kernel, devi sempre cancellare /usr/src/linux e ricreare il link simbolico facendolo puntare a /usr/src/nuovo_kernel; ad esempio, se vuoi passare dal kernel 2.6.21 al 2.6.22, posizionati in /usr/src e dai i comandi:

Codice: Seleziona tutto

rm linux
ln -s /usr/src/linux-2.6.22 /usr/src/linux
Per quanto riguarda la ricompilazione, dopo esserti posizionato in /usr/src/linux devi lanciare:

Codice: Seleziona tutto

make mrproper
Questo comando ripulisce tutti i vecchi file di configurazione, compreso .config; ricordati quindi di copiare il tuo .config personale solo dopo aver dato make mrproper.
Nel tuo caso, puoi utilizzare il config non SMP di Pat; lancia:

Codice: Seleziona tutto

make xconfig
vai nella sezione "processor type and features e assicurati che sia disattivato tutto ciò che riguarda il supporto SMP.
Se hai sufficiente esperienza puoi approfittarne per impostare in modo più dettagliato e preciso le configurazioni più adatte per il tuo hardware (tipo di processore, modello di motherboard, etc).

Inviato: ven 13 lug 2007, 15:04
da ekxius
grazie phobos, non sapevo alcune di queste cose che hai detto ;)

Inviato: ven 13 lug 2007, 15:18
da targzeta
phobos3576 ha scritto:...Tieni presente comunque che la presenza di questo link simbolico è importantissima visto che, quando si ricompilano ad esempio determinati driver o programmi, viene fatto riferimento automaticamente a /usr/src/linux presupponendo che tale link simbolico stia puntando alla directory dove è presente il kernel correntemente in uso...
Bhà, veramente che io sappia per ritrovare i sorgenti del kernel in uso si usa

Codice: Seleziona tutto

/lib/modules/`uname -r`/build
o indifferentemente,

Codice: Seleziona tutto

/lib/modules/`uname -r`/source
questi due link sono creati dal Makefile del kernel quando si lancia "make modules_install". Poi magari mi sbaglio e si arriva come dici tu, ma io non mi fiderei troppo.
phobos3576 ha scritto:

Codice: Seleziona tutto

rm linux
ln -s /usr/src/linux-2.6.22 /usr/src/linux
Puoi anche semplicemente usare l'opzione -f di ln.

Codice: Seleziona tutto

ln -fs /usr/src/linux-2.6.22 /usr/src/linux
Spina

Inviato: ven 13 lug 2007, 15:48
da moebius77
quindi il link e importante solo in fase di compilazione
ma per il funzionamento del sistema ( al boot ) potrebbe anche non esistere!

Inviato: ven 13 lug 2007, 20:07
da targzeta
moebius77 ha scritto:quindi il link e importante solo in fase di compilazione
ma per il funzionamento del sistema ( al boot ) potrebbe anche non esistere!
Bhè non è obbligatorio avere i sorgenti installati per cui....direi proprio che non è importante al boot. Tutto quello che conta è il kernel compilato e caricato in memoria dal boot loader, dopo di ché, se usi le utility modprobe (quindi se hai un kernel modulare) allora ti serve anche la directory /lib/modules/`uname -r`, che, come ho detto anche prima, viene creata quando si lancia "make modules_install".

Spina

P.S. Ovviamente se vuoi compilarti un modulo per, hai bisogno dei sorgenti del, kernel.