ricompilazione kernel

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
moebius77
Linux 1.x
Linux 1.x
Messaggi: 149
Iscritto il: ven 2 giu 2006, 18:17

ricompilazione kernel

Messaggio 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?

Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Messaggio 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).

Avatar utente
ekxius
Linux 3.x
Linux 3.x
Messaggi: 831
Iscritto il: sab 18 mar 2006, 11:01
Slackware: 12.0
Kernel: 2.6.23.12
Desktop: KDE 3.5.9
Località: Casa <-> Torino <-> Aosta

Messaggio da ekxius »

grazie phobos, non sapevo alcune di queste cose che hai detto ;)

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio 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

Avatar utente
moebius77
Linux 1.x
Linux 1.x
Messaggi: 149
Iscritto il: ven 2 giu 2006, 18:17

Messaggio da moebius77 »

quindi il link e importante solo in fase di compilazione
ma per il funzionamento del sistema ( al boot ) potrebbe anche non esistere!

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio 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.

Rispondi