Compilazione kernel e periferiche

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

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware64 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 Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o 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.
Avatar utente
-sf
Linux 2.x
Linux 2.x
Messaggi: 209
Iscritto il: ven 15 lug 2011, 1:20
Slackware: 13.37
Kernel: 2.6.37.6-smp
Desktop: KDE

Compilazione kernel e periferiche

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

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Compilazione kernel e periferiche

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

Avatar utente
-sf
Linux 2.x
Linux 2.x
Messaggi: 209
Iscritto il: ven 15 lug 2011, 1:20
Slackware: 13.37
Kernel: 2.6.37.6-smp
Desktop: KDE

Re: Compilazione kernel e periferiche

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

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Compilazione kernel e periferiche

Messaggio da 414N »

Prova con un "make localmodconfig" per selezionare i moduli attivi al momento e lasciare fuori il resto.

Avatar utente
-sf
Linux 2.x
Linux 2.x
Messaggi: 209
Iscritto il: ven 15 lug 2011, 1:20
Slackware: 13.37
Kernel: 2.6.37.6-smp
Desktop: KDE

Re: Compilazione kernel e periferiche

Messaggio 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
Ultima modifica di -sf il mer 25 lug 2012, 11:39, modificato 1 volta in totale.

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Compilazione kernel e periferiche

Messaggio da Ansa89 »

Hai controllato anche il supporto per il controller del disco?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Compilazione kernel e periferiche

Messaggio da 414N »

Allora ti mancherà il driver del chipset sata/pata sulla tua scheda madre.
EDIT: preceduto :p

Avatar utente
-sf
Linux 2.x
Linux 2.x
Messaggi: 209
Iscritto il: ven 15 lug 2011, 1:20
Slackware: 13.37
Kernel: 2.6.37.6-smp
Desktop: KDE

Re: Compilazione kernel e periferiche

Messaggio da -sf »

Edit piu' su :D

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 :)

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Compilazione kernel e periferiche

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

Avatar utente
-sf
Linux 2.x
Linux 2.x
Messaggi: 209
Iscritto il: ven 15 lug 2011, 1:20
Slackware: 13.37
Kernel: 2.6.37.6-smp
Desktop: KDE

Re: Compilazione kernel e periferiche

Messaggio da -sf »

Ah ecco l'inghippo, provo subito e vediamo.
Che vantaggi ho a creare un initrd anziche includere tutto nel kernel?

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Compilazione kernel e periferiche

Messaggio da Ansa89 »


Avatar utente
-sf
Linux 2.x
Linux 2.x
Messaggi: 209
Iscritto il: ven 15 lug 2011, 1:20
Slackware: 13.37
Kernel: 2.6.37.6-smp
Desktop: KDE

Re: Compilazione kernel e periferiche

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

Avatar utente
Ansa89
Iper Master
Iper Master
Messaggi: 2703
Iscritto il: mer 29 ago 2007, 17:57
Nome Cognome: Stefano Ansaloni
Slackware: 14.2 64bit
Kernel: 4.9.61
Desktop: XFCE 4.12
Località: Modena

Re: Compilazione kernel e periferiche

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

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: Compilazione kernel e periferiche

Messaggio 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.
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
-sf
Linux 2.x
Linux 2.x
Messaggi: 209
Iscritto il: ven 15 lug 2011, 1:20
Slackware: 13.37
Kernel: 2.6.37.6-smp
Desktop: KDE

Re: Compilazione kernel e periferiche

Messaggio da -sf »

Dei bootsplash carini mi importa poco, anzi preferisco vedere i vari messaggi sulla console che scorrono :D
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 :)

Rispondi