Pagina 1 di 2
Compilazione kernel e periferiche
Inviato: lun 23 lug 2012, 18:13
da -sf
Buongiorno a tutti, sono alle prese con la compilazione dell'ultimo kernel stable (piu' per curiosita' che per necessita) su una slackware64.
Da come ricordo conviene sempre partire da un .config funzionante e dare un bel "make oldconfig". Il mio config e' quello del kernel di default (huge) ma dopo aver compilato senza errori, al boot ottengo un kernel panic relativo ai filesystem (o cosi credo).
Tutte i miei dischi/partizioni sono in ext4 (o per lo meno quelli che vengono montati al boot) e il supporto e' stato abilitato; non sono ancora riuscito a trovare una spiegazione comunque.
Decido cosi di lanciarmi con un config pulito e, abbastanza a sorpresa, compila e boota senza problemi.
I problemi pero' arrivano dopo, principalmente per quanto riguarda l'interfaccia di rete che non viene rilevata.
ifconfig riporta:
Codice: Seleziona tutto
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:480 (480.0 B) TX bytes:480 (480.0 B)
sit0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Nessuna canonica eth/wlan o simili.
Per connettermi al momento sfrutto una scheda wireless pci e ho gia' abilitato il supporto a queste perfiferiche (o almeno credo..)
Idee? cos'e quest'interfaccia sit0?
Secondo quesito: utilizzo i driver proprietari ATi e con il nuovo kernel sembra che la gestione energetica sia peggiorata.. mi spiego: il sistema si avvia in modalita' testuale, con il vecchio kernel al momento dello startx per passare in modalita' grafica si sente chiaramente una variazione della velocita' di rotazione della ventola della scheda video, che penso sia data dai driver che iniziano a lavorare. Con il nuovo kernel questa differenza non la sento invece.
Cambiando kernel e' consigliabile rimuovere e reinstallare i driver? (proprietari, non open)
Qualche tool che permetta di monitorare l'hardware?
Per ora ho provato solo "sensors" gia installata di default; dopo una breve configurazione funziona ma riporta solo la temperatura della cpu. Avete qualche consiglio?
Mi conviene partire comunque dal config del kernel che uso attualmente (e funziona) e cercare di risolvere quel kernel panic o tento di sistemare quello che non va nel nuovo?
Grazie

Re: Compilazione kernel e periferiche
Inviato: mar 24 lug 2012, 16:46
da 414N
Hai riportato l'output di ifconfig o di "ifconfig -a"? Può darsi che una o più interfacce siano disattivate e non compaiano nell'output normale di ifconfig...
Il mio consiglio rimane comunque di partire da un .config riconosciuto come stabile e da lì scremare la situazione.
-sf ha scritto:
Secondo quesito: utilizzo i driver proprietari ATi e con il nuovo kernel sembra che la gestione energetica sia peggiorata.. mi spiego: il sistema si avvia in modalita' testuale, con il vecchio kernel al momento dello startx per passare in modalita' grafica si sente chiaramente una variazione della velocita' di rotazione della ventola della scheda video, che penso sia data dai driver che iniziano a lavorare. Con il nuovo kernel questa differenza non la sento invece.
Cambiando kernel e' consigliabile rimuovere e reinstallare i driver? (proprietari, non open)
Qualche tool che permetta di monitorare l'hardware?
Per ora ho provato solo "sensors" gia installata di default; dopo una breve configurazione funziona ma riporta solo la temperatura della cpu. Avete qualche consiglio?
Dopo un aggiornamento del kernel devi reinstallare i driver ATI/AMD perché questi, durante il processo di installazione, compilano un modulo per la versione del kernel corrente. Ovviamente, cambiando kernel, il modulo compilato per il kernel precedente non è più caricabile.
Re: Compilazione kernel e periferiche
Inviato: mar 24 lug 2012, 21:56
da -sf
si e' l'output di
ifconfig -a, un semplcie
ifconfig mostra solo l'interfaccia
lo.
Provero' a compilare dal config del kernel di default allora, esiste un modo per togliere il grosso delle cose che non servono? Giusto per partire con qualcosa di piu' leggero di un huge e poi andare a sistemare il resto "di fino"..
Per i driver in effetti non ci avevo pensato, provero' a reinstallarli
Grazie

Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 8:02
da 414N
Prova con un "make localmodconfig" per selezionare i moduli attivi al momento e lasciare fuori il resto.
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 11:30
da -sf
Edit: niente, con "make localmodconfig" non finisce nemmeno di compilare
ecco l'errore
Codice: Seleziona tutto
.....
CC drivers/scsi/hpsa.o
CC drivers/scsi/eata.o
CC drivers/scsi/dc395x.o
CC drivers/scsi/tmscsim.o
LD drivers/scsi/qla2xxx/qla2xxx.o
LD drivers/scsi/qla2xxx/built-in.o
CC drivers/scsi/megaraid.o
CC drivers/scsi/atp870u.o
CC drivers/scsi/gdth.o
CC drivers/scsi/initio.o
drivers/scsi/initio.c:131:29: warning: 'i91u_pci_devices' defined but not used
CC drivers/scsi/a100u2w.o
CC drivers/scsi/3w-xxxx.o
CC drivers/scsi/3w-9xxx.o
CC drivers/scsi/3w-sas.o
CC drivers/scsi/ipr.o
CC drivers/scsi/libsrp.o
CC drivers/scsi/hptiop.o
CC drivers/scsi/stex.o
CC drivers/scsi/pmcraid.o
CC drivers/scsi/st.o
LD drivers/scsi/sd_mod.o
LD drivers/scsi/sr_mod.o
LD drivers/scsi/scsi_mod.o
LD drivers/scsi/scsi_tgt.o
LD drivers/scsi/built-in.o
LD drivers/built-in.o
LD vmlinux.o
MODPOST vmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
fs/built-in.o: In function `gfs2_lock':
file.c:(.text+0x3d7b29): undefined reference to `dlm_posix_lock'
file.c:(.text+0x3d7b68): undefined reference to `dlm_posix_unlock'
file.c:(.text+0x3d7b88): undefined reference to `dlm_posix_get'
fs/built-in.o: In function `gdlm_cancel':
lock_dlm.c:(.text+0x3ea315): undefined reference to `dlm_unlock'
fs/built-in.o: In function `gdlm_lock':
lock_dlm.c:(.text+0x3ea522): undefined reference to `dlm_lock'
fs/built-in.o: In function `gdlm_unmount':
lock_dlm.c:(.text+0x3eaaae): undefined reference to `dlm_release_lockspace'
fs/built-in.o: In function `control_unlock':
lock_dlm.c:(.text+0x3eac7d): undefined reference to `dlm_unlock'
fs/built-in.o: In function `sync_lock':
lock_dlm.c:(.text+0x3eadc0): undefined reference to `dlm_lock'
fs/built-in.o: In function `gdlm_put_lock':
lock_dlm.c:(.text+0x3eb69c): undefined reference to `dlm_unlock'
fs/built-in.o: In function `gdlm_mount':
lock_dlm.c:(.text+0x3eba4d): undefined reference to `dlm_new_lockspace'
lock_dlm.c:(.text+0x3ebd09): undefined reference to `dlm_unlock'
lock_dlm.c:(.text+0x3ebd71): undefined reference to `dlm_release_lockspace'
make: *** [.tmp_vmlinux1] Error 1
Se invece uso prima l'opzione "allmodconfig" finisce di compilare correttamente ma al reboot lancia un kernel panic relativo all'impossibilita' di montare la partizione root, anche se il supporto a ext4 e' stato abilitato
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 11:36
da Ansa89
Hai controllato anche il supporto per il controller del disco?
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 11:38
da 414N
Allora ti mancherà il driver del chipset sata/pata sulla tua scheda madre.
EDIT: preceduto

Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 11:41
da -sf
Edit piu' su
Il driver del controller come lo trovo e come lo abilito?
Usando localmodconfig non dovrebbe prendere ed abilitare tutto cio' che e' in uso al momento sul sistema?
Thanks

Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 11:44
da Ansa89
-sf ha scritto:Usando localmodconfig non dovrebbe prendere ed abilitare tutto cio' che e' in uso al momento sul sistema?
Sì, ma te lo seleziona come modulo; quindi o crei un initrd, o vai ad impostare il supporto per il filesystem e il controller del disco come "built-in".
I driver sata/pata dovrebbero essere sotto "Device Drivers-->Serial ATA and Parallel ATA drivers".
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 11:50
da -sf
Ah ecco l'inghippo, provo subito e vediamo.
Che vantaggi ho a creare un initrd anziche includere tutto nel kernel?
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 11:52
da Ansa89
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 12:11
da -sf
Quindi in un initrd posso andare a matterci moduli che mi servono all'avvio ma che non sono stati inclusi nel kernel, come ad esempio il supporto a ext4?
Comunque niente da fare, se lancio solo un make localmodconfig non finisce neanche di compilare (come da errore nel post sopra) mentre se uso prima un allmodconfig compila senza problemi ma lancia un kernel panic al boot; il driver del chipset e' adesso abilitato (o almeno credo!).
Faccio ancora un tentativo partendo dal config del generic e includendo ext4 statico e vediamo un po...
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 12:13
da Ansa89
-sf ha scritto:Quindi in un initrd posso andare a matterci moduli che mi servono all'avvio ma che non sono stati inclusi nel kernel, come ad esempio il supporto a ext4?
Esatto.
Re: Compilazione kernel e periferiche
Inviato: mer 25 lug 2012, 15:18
da ilmich
aggiungo un po' di teoria alla risposta di Ansa89

il kernel è un binario esattamente come tutti gli altri che utilizziamo regolarmente e come tale ha bisogno di alcuni parametri quando viene lanciato per poter funzionare.
uno di questi parametri è l'initrd che altro non è che un micro-filesystem che il kernel sa leggere in qualunque circostanza(per dovere di cronaca aggiungo che tale supporto puo' essere rimosso dalla configurazione del kernel se si vuole) dove è possibile inserire tutto quello che si vuole far 'vedere' al kernel prima che il filesystem reale venga montato.
pertanto se il supporto al filesystem di default è compilato come modulo affinche tutto funzioni correttamente va creato l'initrd apposito.
a me personalmente nn piace tanto come soluzione perchè ti 'costringe' a fare un ulteriore passaggio quando installo nuovi kernel ma in tante altre distribuzioni viene utilizzato perchè per esempio i bootsplash carini che vediamo al posto della nuda e cruda console dovendo essere attivati il prima possibile vengono installati all'interno di questo particolare filesystem.
Re: Compilazione kernel e periferiche
Inviato: gio 26 lug 2012, 14:11
da -sf
Dei bootsplash carini mi importa poco, anzi preferisco vedere i vari messaggi sulla console che scorrono
Quindi direi che nel mio caso un initrd e', almeno per ora, inutile.
Comunque ho provato a ricompilare partendo dal config del generci, includendo staticamente il supporto ad ext4 e i driver per il controller del disco; ora finalmente boota ma impiega lo stesso tempo dell'huge a caricare (sicuramente ci sara' altro da eliminare) e sopratutto ho qualche problema nell'installare i driver ati, qualche problema relativo all'impossibilita' di compilare il modulo adatto. Penso il discorso valga anche per il modulo di virtualbox (ma non ho ancora provato).
A questo punto mi sorge un dubbio sulla procedura che uso.. io eseguo: scompatto il tar in /usr/src/versioneKernel -> make localmodconfig/oldconfig per partire dal confing dato per funzionante -> make menuconfig per rivedere il tutto -> make -jX bzImage per compilare.
Sposto il kernel in /boot -> creo una nuova entry in lilo.conf per testarlo e riavvio.
Se riesco a fare il boot allora torno nella dir di compilazione e.. -> make modules -> make modules_install.
Reboot finale.
Diverse guide fanno compilare direttamente i moduli subito dopo il kernel, alcuni pero' sostengono che sia meglio compilared i moduli per un kernel, col kernel stesso che gira.
Io non ho mai notato differenze fra i due metodi (per quel poco che ho fatto), nel senso che non mi e' mai successo che il primo riusciva dove l'altro falliva o viceversa; come mi consigliate di procedere?
In riferimento al post precedente, come mai fallisce la compilazione?
Mi riferisco a:
Codice: Seleziona tutto
.....
CC drivers/scsi/hpsa.o
CC drivers/scsi/eata.o
CC drivers/scsi/dc395x.o
CC drivers/scsi/tmscsim.o
LD drivers/scsi/qla2xxx/qla2xxx.o
LD drivers/scsi/qla2xxx/built-in.o
CC drivers/scsi/megaraid.o
CC drivers/scsi/atp870u.o
CC drivers/scsi/gdth.o
CC drivers/scsi/initio.o
drivers/scsi/initio.c:131:29: warning: 'i91u_pci_devices' defined but not used
CC drivers/scsi/a100u2w.o
CC drivers/scsi/3w-xxxx.o
CC drivers/scsi/3w-9xxx.o
CC drivers/scsi/3w-sas.o
CC drivers/scsi/ipr.o
CC drivers/scsi/libsrp.o
CC drivers/scsi/hptiop.o
CC drivers/scsi/stex.o
CC drivers/scsi/pmcraid.o
CC drivers/scsi/st.o
LD drivers/scsi/sd_mod.o
LD drivers/scsi/sr_mod.o
LD drivers/scsi/scsi_mod.o
LD drivers/scsi/scsi_tgt.o
LD drivers/scsi/built-in.o
LD drivers/built-in.o
LD vmlinux.o
MODPOST vmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
fs/built-in.o: In function `gfs2_lock':
file.c:(.text+0x3d7b29): undefined reference to `dlm_posix_lock'
file.c:(.text+0x3d7b68): undefined reference to `dlm_posix_unlock'
file.c:(.text+0x3d7b88): undefined reference to `dlm_posix_get'
fs/built-in.o: In function `gdlm_cancel':
lock_dlm.c:(.text+0x3ea315): undefined reference to `dlm_unlock'
fs/built-in.o: In function `gdlm_lock':
lock_dlm.c:(.text+0x3ea522): undefined reference to `dlm_lock'
fs/built-in.o: In function `gdlm_unmount':
lock_dlm.c:(.text+0x3eaaae): undefined reference to `dlm_release_lockspace'
fs/built-in.o: In function `control_unlock':
lock_dlm.c:(.text+0x3eac7d): undefined reference to `dlm_unlock'
fs/built-in.o: In function `sync_lock':
lock_dlm.c:(.text+0x3eadc0): undefined reference to `dlm_lock'
fs/built-in.o: In function `gdlm_put_lock':
lock_dlm.c:(.text+0x3eb69c): undefined reference to `dlm_unlock'
fs/built-in.o: In function `gdlm_mount':
lock_dlm.c:(.text+0x3eba4d): undefined reference to `dlm_new_lockspace'
lock_dlm.c:(.text+0x3ebd09): undefined reference to `dlm_unlock'
lock_dlm.c:(.text+0x3ebd71): undefined reference to `dlm_release_lockspace'
make: *** [.tmp_vmlinux1] Error 1
Partendo dal config huge, dando localmodconfig e includendo solo ext4 statico (che forse include gia da solo).
Grazie
