Domande sul 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
linus.bash
Linux 3.x
Linux 3.x
Messaggi: 976
Iscritto il: ven 10 feb 2006, 12:58
Località: Bologna
Contatta:

Domande sul kernel

Messaggio da linus.bash »

Vorrei alcune delucidazioni sulla compilazione del kernel.

Ho perso molto tempo per capire alcuni passaggi che fin dall'inizio mi sembravano inutili, infatti non vengono più da me fatti ma scrivo per esserne sicuro.

1 Il più importante è perchè si deve fare un link simbolico al kernel scompattato nella directory /usr/src se si può accedere direttamente alla directory stessa. (ln -s linux-2.xxx linux)

2 perchè bisogna fare link simbolici al bzImage e System.map in /boot se si possono usare direttamente gli originali in lilo o grup

Poi volevo capire una cosa a riguardo della configurazione con "make xconfig" :

avendo il kernel 2.4 e passando al 2.6 come posso fare per non perdere le configurazioni del vecchio kernel ed aggiungere quelle del nuovo?

mi spiego meglio :

con il 2.4 mi funziona la rete e non il mouse usb...con il 2.6 mi funziona il mouse usb e non la rete. Quando configuro il 2.6 è possibile continuare dai dati già esistenti del 2.4? In modo da avere mouse e rete funzionanti?

Inoltre i kernel preconfigurati "bzimage, system.map e config" ho letto che basta copiare i primi due file nel boot per avere il nuovo kernel...ma poi in /usr/src non ci sarà la directory del kernel usato, quindi serve o non serve, cioè una volta avuto il bzimage e system.map
la directory può essere cancellata? :?: "per esempio" :?:

Grazie per eventuali risposte.

Avatar utente
Heidegger
Linux 2.x
Linux 2.x
Messaggi: 246
Iscritto il: lun 28 mar 2005, 0:00
Località: Roma
Contatta:

Messaggio da Heidegger »

Ti consiglio vivamente di prendere i sorgenti del Kernel e di prendere esclusivamente il config di pat per la versione del kernel da te scelto.
Così puoi caricare direttamente il config e fare le modfiche che ti servono.
Il config di Pat è ottimo, dovrai soltanto personalizzarlo un pò.
Ciao :D

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2073
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 5.4.0
Desktop: lxde
Distribuzione: ubuntu 20.04
Località: Darmstadt - Germania

Messaggio da albatros »

1) Ci può essere qualche programma, ad esempio un modulo per il kernel, che cerca gli header o altro direttamente in /usr/sr/linux, che dovrà essere un link simbolico alla directory dove hai i sorgenti del kernel, a meno che /usr/src/linux non contenga direttamente i sorgenti.
2) Dal mio punto di vista (esperti, correggetemi se sbaglio) i link simbolici all'interno del boot sono una comodità se vuoi avere versioni diverse del kernel (per sapere che kernel hai ti basta l'uname -a).
3) Una volta copiato bzImage in /boot (o dove hai detto a grub che si trova il kernel) e System.map e dato il make modules_install che ti sistema i moduli in /lib/modules, se non devi ricompilare il kernel o altri moduli puoi anche cancellare i sorgenti. Io l'ho fatto spesso per motivi di spazio, avendo cura di salvare da qualche parte il file di configurazione (.config).
4) Se usi kernel della stessa serie (es 2.6.x o 2.4.x) ti consiglio make oldconfig: ti verranno poste delle domande solo sulle nuove opzioni, a patto che abbia preventivamente messo il vecchio file .config nella top directory dei sorgenti del kernel.
5) Ti sconsiglio anch'io, a meno che non sappia bene quello che stai facendo, di configurare un kernel da zero, ti conviene modificare in base alle tue esigenze una configurazione già esistente.

Ciao

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Re: Domande sul kernel

Messaggio da absinthe »

linus.bash ha scritto: 2 perchè bisogna fare link simbolici al bzImage e System.map in /boot se si possono usare direttamente gli originali in lilo o grup
veramente non sono sicuro che un link simbolico sia sufficiente.... se vuoi un kernel di sicurezza già testato ti conviene copiare bzimage in /boot e poi ricompilare il kernel copiando la nuova bzimage in boot insieme alla vecchia così puoi utilizzare 2 kernel: uno affidabile, l'altro da testare per eventuali errori - il più tragico il kernel panic :)-.

M

Avatar utente
linus.bash
Linux 3.x
Linux 3.x
Messaggi: 976
Iscritto il: ven 10 feb 2006, 12:58
Località: Bologna
Contatta:

Messaggio da linus.bash »

albatros ha scritto:1) Ci può essere qualche programma, ad esempio un modulo per il kernel, che cerca gli header o altro direttamente in /usr/sr/linux, che dovrà essere un link simbolico alla directory dove hai i sorgenti del kernel, a meno che /usr/src/linux non contenga direttamente i sorgenti.
2) Dal mio punto di vista (esperti, correggetemi se sbaglio) i link simbolici all'interno del boot sono una comodità se vuoi avere versioni diverse del kernel (per sapere che kernel hai ti basta l'uname -a).
3) Una volta copiato bzImage in /boot (o dove hai detto a grub che si trova il kernel) e System.map e dato il make modules_install che ti sistema i moduli in /lib/modules, se non devi ricompilare il kernel o altri moduli puoi anche cancellare i sorgenti. Io l'ho fatto spesso per motivi di spazio, avendo cura di salvare da qualche parte il file di configurazione (.config).
4) Se usi kernel della stessa serie (es 2.6.x o 2.4.x) ti consiglio make oldconfig: ti verranno poste delle domande solo sulle nuove opzioni, a patto che abbia preventivamente messo il vecchio file .config nella top directory dei sorgenti del kernel.
5) Ti sconsiglio anch'io, a meno che non sappia bene quello che stai facendo, di configurare un kernel da zero, ti conviene modificare in base alle tue esigenze una configurazione già esistente.

Ciao
mi spieghi meglio il punto 4?

sono entrato nella directory del nuovo kernel e lanciando make oldconfig mi è uscita una configurazione a video...poi cosa devo fare? Nessuna domanda ho ricevuto.

grazie

Avatar utente
l1q1d
Master
Master
Messaggi: 1862
Iscritto il: lun 21 feb 2005, 0:00
Località: In uno spazio n-dimesionale
Contatta:

Messaggio da l1q1d »

hai copiato il vecchio config nella directory?
Se si ti dovrebbe chiedere quale modifiche vuoi fare.
Dopo dai make.

Avatar utente
linus.bash
Linux 3.x
Linux 3.x
Messaggi: 976
Iscritto il: ven 10 feb 2006, 12:58
Località: Bologna
Contatta:

Messaggio da linus.bash »

l1q1d ha scritto:hai copiato il vecchio config nella directory?
Se si ti dovrebbe chiedere quale modifiche vuoi fare.
Dopo dai make.
allora ecco cosa faccio :

1 scompatto i sorgenti del kernel in /usr/src

2 entro nel new kernel

3 lancio il comando "make oldconfig"

4 ricevo domande "new" e rispondo quasi sempre no tranne per quello che riguarda nvidea e toshiba (mio portatile)

"""non copio nessun config"""

alla fine do i comandi in questa serie :

make bzImage
make modules
make modules_install

mi sembra tutto ok, allora eseguo la procedura di portare il bzImage in /boot con il suo rispettivo system.map


DOMANDE :

1 il system.map non è descritto quasi in nessuna guida, serve o non serve? come si configura in lilo?

2 il config che vedo in lilo da dove salta fuori (del vecchio kernel)

3 la ram initrd serve o non serve, se serve in che modo si utilizza?

Se possibile avere le tre risposte.

Alla fine di tutto questo c'è un particolare da mettere in discussione.

Io ho un kernel 2.4 e installo un 2.6.15.4

nel kernel 2.4 mi funziona il modem perfettamente, nel 2.6 neanche se lo paghi.

DOMANDA :

4 ma il comando "make oldconfig" non doveva continuare la vecchia configurazione?

Inoltre mi serve sapere avendolo visto in alcune guide quando si deve dare il comando "make dep" che io non ho mai dato, e se serve dare tale comando alla shell e in che punto.

Mi fate capire secondo i comandi che ho scritto dove sbaglio e cosa manco, grazie.

PS: se installo su slackware 10.2 il kernel 2.6.15.4 giuro che ne faccio una guida visto che ho installato questo kernel almeno 20volte senza risultati completamente positivi.


Saluti e grazie, questo forum merita.

Avatar utente
urka58
Linux 3.x
Linux 3.x
Messaggi: 543
Iscritto il: mer 7 dic 2005, 23:29

Messaggio da urka58 »

Rispondo un po' a casaccio

- System.map è una lista di corrispondenze tra i nomi delle varie funzioni/simboli chiamati dal kernel e un "codice" usato dal kernel stesso per definire tali funzioni/simboli.
il file ha un formato tipo

00100000 A phys_startup_32
c0100000 A _text
c0100000 T startup_32
c01000c6 t checkCPUtype
c0100147 t is486
c010014e t is386
c0100199 t L6
c010019b t check_x87
c01001c2 t setup_idt
c01001df t rp_sidt

A sinistra sono elencati i simboli che effettivamente usa il kernel, mentre a destra la corrispondenza in forma leggibile. (c'e una t in mezzo, ma sinceramente non ne ricordo il significato)
E' un file importante per il bug tracking, tramite klogd e syslogd, poco usato dai programmi (in user mode) salvo alcuni emulatori. Senza questo file, in realtà il sistema funziona comunque, ma non è in grado di riportare correttamente i messaggi di errore.


- (più o meno) Perchè devo copiare o creare un link di bzImage System-map e config in /boot ?
E' una reminescenza delle vecchie (mica tanto) versioni dei bootloader, che non erano in grado di leggere oltre il 1024 esimo settore del disco, pertanto era necessario sistemare l'immagine del kernel entro questo limite. Ciò avveniva creando come prima partizione la partizione /boot, dove veniva sitemata l'immagine, garantendo che questa sarebbe finita entro i primi 1024 settori.
Ora i bootloader non soffrono più di questa limitazione e l'immagine del kernel potrebbe essere sistemata in qualsiasi punto sul disco.E' rimasta come consuetudine di sistemare bzImage nella partizione /boot (che in molti sistemi, è in realtà, semplicemente una directory).
System.map, che come già detto viene utilizzato principalmente da klogd, viene cercato nell'ordine in /, /boot, /path/sorgenti/del/kernel/in/uso. Non è quindi strettamente necessario che sia presente in /boot.
Il kernel è in grado di scegliere automaticamente la corretta versione del System.map, quindi la consuetidine di rinominarlo aggiungendone la versione (es System.map-2.6.15), pur corretta, non è indispensabile.
Config viene usato solo in fase di compilazione del kernel, la sua presenza in /boot è utile solo come pro-memoria o per un successivo riutilizzo.
Non viene utilizzato da lilo, che invece utilizza un file map, dove vengono riportati gli indirizzi sul disco dei files necessari a lilo stesso per caricare il sistema

-initrd (immagine ram).
E' necessaria se usando un kernel precompilato si vogliono caricare all'avvio dei driver che non sono compilati staticamente nel kernel. ES Voglio eseguire il boot da una rete, ma il driver della scheda di rete è stato compilato come modulo, quindi non è disponibile in fase di boot.
Altro ES. Il mio sistema utilizza un filesystem il cui driver è compilato come modulo caricabile: se la partizione / del mio sistema è sistemata su una partizione formattata con questo filesystem otterrò un kernel panic, in quanto il kernel non è in grado di leggere e montare questa partizione.
Creando una immagine ram, initrd appunto, che contiene questi moduli, è possibile caricarla attraverso il bootloader e avere caricati all'avvio i driver altrimenti non disponibili. Non ha molto senso se si è deciso di creare un kernel ad hoc, in quanto basta includere i driver necessari all'avvio compilandoli in modo statico.
Spero che sia una spiegazione utile
Ciao

Avatar utente
linus.bash
Linux 3.x
Linux 3.x
Messaggi: 976
Iscritto il: ven 10 feb 2006, 12:58
Località: Bologna
Contatta:

Messaggio da linus.bash »

si molto utile direi, grazie di cuore.

stasera riprovo ecco come farò :

Codice: Seleziona tutto

kernel


comandi shell

cp linux-xxx /usr/src
tar -xvjf linux-xxx.tar.bz2
cd /usr/src
ln -s linux-xxx linus (link a piacere del nuovo kernel)

copiare il file .config da utilizzare in una directory a piacere, lanciare “make mrproper” e rimettere il file .config al suo posto di origine

usare : make oldconfig (rispondere alle domande, si a kmod e version kernel)

(make xconfig, make config oppure make menuconfig)

Make dep (configurare dipendenze)
Make clean (preparare il sorgente alla compilazione)
make bzImage (/usr/src/linux/arch/i386/boot)
make module (prende I moduli)
make module_install (installa I moduli)
make install (copia il kernel e I file nelle loro directory)

controllare

“”cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage-xxx””

lilo.conf

saluti

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2073
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 5.4.0
Desktop: lxde
Distribuzione: ubuntu 20.04
Località: Darmstadt - Germania

Messaggio da albatros »

urka58 ti ha già risposto meglio di quanto avrei saputo (e potuto) io a diverse tue domande (già, il mitico limite 1024 con cui anch'io ho dovuto fare i conti qualche anno fa e a cui non pensavo più...).
Il .config ti conviene prenderlo da una configurazione già funzionante, ma la struttura del file di configurazione dei kernel 2.4.x e 2.6.x è un po' diversa, quindi non so se il make oldconfig funziona fra serie diverse (funziona senza problemi nell'ambito della stessa serie, fra serie diverse non so, non ho mai provato...).
Prendi semmai nota delle varie opzioni e controlla punto punto, guardando anche la buona documentazione a corredo del kernel, oltre a quella riassuntiva in linea di xconfig e menuconfig.
Il make dep non serve più con la 2.6.x, puoi dare subito il bzImage.
Noterai anche che di default è molto meno dettagliato nel dirti cosa sta compilando.
make modules, non make module
Almeno una volta, non so se poi le cose son cambiate perché ho sempre fatto in questo modo, prima di dare make modules_install conveniva spostare/rinominare /lib/modules/2.x.y.z se stai ricompilando stessa identica versione del kernel.
Il make install non l'ho mai provato, ho sempre copiato a mano il kernel compresso /sorgenti/arch/i386/boot/bzImage, il System.map e il config per comodità.
Non uso più lilo da anni, ti consiglio grub, che è forse un po' più difficile da usare la prima volta, ma è molto potente e facile da configurare quando ci hai preso la mano. Fra l'altro, se metti sempre il kernel nel solito posto, non devi fare nulla con grub se ricompili il kernel.
Hai poi scritto:
"PS: se installo su slackware 10.2 il kernel 2.6.15.4 giuro che ne faccio una guida visto che ho installato questo kernel almeno 20volte senza risultati completamente positivi."
Beh, probabilmente hai avuto un po' di sfortuna e poca documentazione sottomano, io (come tantissimi altri) ho appunto la slack 10.2 e l'installazione del 2.6.15.4 ha richiesto uno sforzo minimo...
Ho avuto però anch'io un po' di dubbi nel passaggio alla serie 2.6.x, c'era il discorso del sysfs, fra l'altro io la serie 2.4.x l'ho usata pochissimo, ho fatto in poche settimane il salto dal 2.2.x al 2.6.x...

Facci sapere com'è andata.

Ciao, scusami se ti ho risposto con gran ritardo, ma ho lottato tutta la sera con un mouse ottico della mediacom (100/MEB30) da cui sono uscito alla fine sconfitto...
Vado a fare anch'io un post per farmi consigliare un modello di mouse ottico che mi dia meno problemi di questo...
Ciao di nuovo.

Avatar utente
linus.bash
Linux 3.x
Linux 3.x
Messaggi: 976
Iscritto il: ven 10 feb 2006, 12:58
Località: Bologna
Contatta:

Messaggio da linus.bash »

ho provato troppe volte a riconfigurare il kernel da 2.4 a 2.6.15 ma senza successo, almeno come volevo io...con il 2.6 il nokia non si connette + quindi per ora rimango ancora con il 2.4.

ho provato anche con "make defconfig", "make modconfig", ecc... usando il make help...ma il risultato è stato sempre lo stesso...niente audio e niente rete e niente mouse usb.


!!!

Rispondi