Torna indietro   Hardware Upgrade Forum > Software > Linux, Unix, OS alternativi

Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2012, 18:23   #1
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
[Linux Kernel]Informazione su ricompilazione kernel con moduli esistenti

Devo compilare un kernel con delle patch che però deve poter girare su un sistema già precostituito.

Ossia voglio cambiare solo il file del kernel e non anche tutti i binari dei moduli.

Ho preso i sorgenti del kernel (già specifici per quel sistema) e fatto delle modifiche al .config aggiungendo delle cose e togliendone delle altre, ed in più ho applicato delle patch (es. BFQ)
Il kernel compilato apparentemente sembra funzionare, ma in alcune situazioni dumpa ed alcuni driver non vanno più (es. tun.ko).

Cosa sbaglio, non sono espertissimo di compilazione kernel ?
Devo per forza cambiare tutti i moduli installando anche quelli che escono dalla mia compilazione ?

Sarebbe scomodissimo da fare e poi di alcuni moduli (che non fanno parte del kernel tree) non ho i sorgenti ma solo i binari pre-build
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2012, 23:18   #2
eaman
Senior Member
 
L'Avatar di eaman
 
Iscritto dal: Feb 2002
Messaggi: 2511
Quote:
Originariamente inviato da FabryHw Guarda i messaggi
Cosa sbaglio, non sono espertissimo di compilazione kernel ?
Devo per forza cambiare tutti i moduli installando anche quelli che escono dalla mia compilazione ?

Sarebbe scomodissimo da fare e poi di alcuni moduli (che non fanno parte del kernel tree) non ho i sorgenti ma solo i binari pre-build
Di tanto in tanto capita di dover compilare dei moduli contro un kernel pre esistente, ma voler cambiare il kernel e pretendere di mantenere i moduli di un kernel precedente mi sembra un po' avventato.

Dipende: sei uno alle prime compilazioni che non ha le idee chiare o sei uno con un sistema tipo industriale con dell'hardware dedicato per cui non puo' cambiare i moduli?
eaman è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2012, 23:50   #3
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Diciamo che si tratta di un progetto OpenSource (non mio) di cui per il 95% dei moduli ci sono i sorgenti (perché moduli standard nel kernel tree) e per alcuni moduli (driver di hw custom) ci sono solo i binari dei moduli.

Se si compila tutto con il .config di default funziona tutto, però io volevo aggiungere e togliere delle funzionalità al kernel quindi ho modificato il .config, aggiunto delle patch al kernel e ricompilato.

Mi aspettavo che il nuovo kernel potesse funzionare con i moduli già presenti sull'installazione (dopotutto sono stessa versione e non sono toccati dalle modifiche), però sembra che invece il nuovo kernel in alcune funzionalità dumpi.

Cambiare i moduli sarebbe doppiamente scomodo, sia perché dovrei sostituire tutti i moduli presenti nell'installazione, sia perché allora dovrei anche fare un repository pubblico per tutti gli altri moduli opzionali (che escono dalla compilazione ma che non sono installati di default), altrimenti alla prima installazione di un modulo opzionale si avrebbe di nuovo un binario vecchio.
E poi rimane il fatto che non potrei ricompilare i driver custom.

Quindi cercavo di capire come operare per fare il kernel con le mie modifiche ma mantenendo la compatibilità con i binari presenti sull'installazione.

Ultima modifica di FabryHw : 30-12-2012 alle 23:52.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 01:04   #4
eaman
Senior Member
 
L'Avatar di eaman
 
Iscritto dal: Feb 2002
Messaggi: 2511
L'idea di un kernel modulare e' che sia possibile aggiungere dei moduli mantenendo lo stesso kernel, tu vuoi fare il contrario.

Se il kernel e' compilato con la feature x o y di conseguenza i moduli si potranno adattare a usare x o y, ma se tu vuoi tenere fermi i moduli che sono conseguenti al kernel e cambiare il kernel allora con una sola modifica al kernel puoi avere 100 moduli che non vanno.

Dovreste avere una qualche API nel kernel per la gestione dei moduli binari, un po' come fa intel con i firmware ipw*.

Poi non per farmi i fatti tuoi ma o il progetto e' opensource o ha i moduli binari: di' piuttosto che state cercando di integrare dei driver proprietari con software libero pre esistente.
eaman è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 01:54   #5
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da eaman Guarda i messaggi
Poi non per farmi i fatti tuoi ma o il progetto e' opensource o ha i moduli binari: di' piuttosto che state cercando di integrare dei driver proprietari con software libero pre esistente.
Ma non è assolutamente vero, basta che guardi Nokia N900 per fare un esempio semplice.
Il sistema operativo è quasi totalmente opensource, ma i driver per l'hw di Nokia sono closed source e forniti solo come binari.
Tu puoi farti tutti i tuoi kernel custom che vuoi, solo che non puoi cambiare versione del kernel (altrimenti è quasi sicuro che i moduli non andrebbero più) e devi cmq fare in modo che il tuo kernel giri con i binari forniti da Nokia.

Nel mio caso non è un Nokia N900, ma la situazione è simile.
Il produttore del sistema ha rilasciato tutti i sorgenti, tranne quelli dei driver per alcuni parti dell'Hw per evitare che l'intero sistema (un firmware) sia usato su altri hw simili ma non prodotti da loro.
Io volevo solo customizzare il kernel, per aggiungere features interessanti per me e per altri.

Cmq proverò a reintegrare le 2 funzioni che ho soppresso (che però non sono legate ai moduli che crashano) per vedere se è quella mancanza a dare l'instabililtà.

Ultima modifica di FabryHw : 31-12-2012 alle 02:01.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 03:39   #6
eaman
Senior Member
 
L'Avatar di eaman
 
Iscritto dal: Feb 2002
Messaggi: 2511
Quote:
Originariamente inviato da FabryHw Guarda i messaggi
Il sistema operativo è quasi totalmente opensource, ma i driver per l'hw di Nokia sono closed source e forniti solo come binari.

Il produttore del sistema ha rilasciato tutti i sorgenti, tranne quelli dei driver per alcuni parti dell'Hw per evitare che l'intero sistema (un firmware) sia usato su altri hw simili ma non prodotti da loro.
- http://www.gnu.org/philosophy/free-sw.html

Poi che non diventi un flame, io ti aiuterei volentieri ma se uno dei produttori non rilascia i sorgenti in modo che gli altri non possano avvantaggiarsi dei contributi a me la cosa sembra ben definita.
eaman è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 09:48   #7
sacarde
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 9516
non ho capito se esegui anche:

make modules

make modules_install
sacarde è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 14:25   #8
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Il problema che ti trovi ad affrontare è in effetti assai spinoso.

Siccome linux non garantisce la stabilità di api e abi per il kernel, è praticamente obbligatorio ricompilare i moduli quando si crea un nuovo kernel.

Puoi però settare, durante la compilazione, il kernel affinchè non verifichi le informazioni di versione dei moduli, ma lo fai a tuo rischio e pericolo.

Riguardo le società che distribuiscono moduli closed, o ne producono vari per ogni versione del kernel o usano del gluecode opensource che verrà ricompilato ad ogni ricompilazione del kernel integrando o affiancando un pezzo di codice binario closed source ( i blob binari in pratica ).

L'avere solo un modulo binario implica in parecchi casi l'impossibilità ad usarlo con versioni differenti del kernel.
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 16:33   #9
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da eaman Guarda i messaggi
- http://www.gnu.org/philosophy/free-sw.html

Poi che non diventi un flame, io ti aiuterei volentieri ma se uno dei produttori non rilascia i sorgenti in modo che gli altri non possano avvantaggiarsi dei contributi a me la cosa sembra ben definita.
In alcuni casi però ci sono contratti di NDA che impediscono di farlo.

E poi è così per la maggior parte dei Soc in giro, infatti mi pare che anche il famoso Raspberry PI che dovrebbe essere tutto OpenSource (pure gli schemi dell'HW) ha driver video solo come blob binario, perché la fondazione non ha il permesso di Broadcom di divulgare i sorgenti (e magari non li ha neanche lei stessa).

In alcuni casi potrebbe essere la società X che decide di regalare parte del proprio sviluppo ma trattiene volontariamente parte del codice per garantirsi almeno un "Ok fai quello che vuoi con il software da noi sviluppato ma almeno fallo sul ns HW".
Dopotutto se fai business oggi se divulghi tutto, tempo 10gg c'è un clone cinese con il tuo software ad un terzo del tuo prezzo e tu vai fuori business in brevissimo tempo.

In altri casi invece la società Y potrebbe non essere in grado di divulgare tutto perché ha usato Soc di produttori che ti fanno firmare contratti di NDA ed in alcuni casi non ti danno manco i sorgenti ma ti fanno loro i moduli binari da usare.

Insomma io non ci vedrei tante critiche da fare, ne mi farei paladino a priori del "only free software"
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 16:36   #10
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da sacarde Guarda i messaggi
non ho capito se esegui anche:

make modules

make modules_install
No io i moduli che poi non vanno, ce li avrei anche tutti (li ricompilo tutti ogni volta) anche se non li ho provati per vedere se risolvono il crash.
Solo che vorrei una soluzione per evitare di doverli usare (e quindi poi distribuire agli altri, rendendo tutto scomodo).
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 16:42   #11
sacarde
Senior Member
 
Iscritto dal: Apr 2004
Messaggi: 9516
make modules_install

te li installa..... prima di eseguirlo salvati i moduli binari, che poi devi riaggiornare
sacarde è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 16:46   #12
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da pabloski Guarda i messaggi
Il problema che ti trovi ad affrontare è in effetti assai spinoso.

Siccome linux non garantisce la stabilità di api e abi per il kernel, è praticamente obbligatorio ricompilare i moduli quando si crea un nuovo kernel.

Puoi però settare, durante la compilazione, il kernel affinchè non verifichi le informazioni di versione dei moduli, ma lo fai a tuo rischio e pericolo.
La versione del kernel però non è cambiata.

Insomma stai dicendo che se io integro, per esempio, EXT4 nel kernel (scegliendolo nel .config dove prima era spento) tutti gli altri moduli già esistenti diventano incompatibili o parzialmente incompatibili ?
Quindi ogni volta faccio una modifica al kernel, mi tocca mettere in piedi un repository alternativo (perché mica posso scrivere in quello ufficiale) in cui mettere tutti i moduli ricompilati ?
Scomodissimo da ridistribuire ad altri.

E poi se fosse così allora potrebbe anche smettere di funzionare il driver video (non disponibile come sorgenti) anche solo perché magari ho aggiunto al kernel il modulo NetConsole per avere un debug senza cavo seriale.
Utile ...
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 17:41   #13
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da FabryHw Guarda i messaggi
La versione del kernel però non è cambiata.

Insomma stai dicendo che se io integro, per esempio, EXT4 nel kernel (scegliendolo nel .config dove prima era spento) tutti gli altri moduli già esistenti diventano incompatibili o parzialmente incompatibili ?
accade cambiando versione del kernel ovviamente, se è la medesima non hai problemi

Quote:
Originariamente inviato da FabryHw Guarda i messaggi
E poi se fosse così allora potrebbe anche smettere di funzionare il driver video (non disponibile come sorgenti) anche solo perché magari ho aggiunto al kernel il modulo NetConsole per avere un debug senza cavo seriale.
Utile ...
ovviamente non è così suscettibile, anzi l'importante è che non vi sia un'api breakage tra le varie versioni del kernel

l'uso di informazioni di versioning fu inserito proprio perchè tra una versione e l'altra del kernel è probabilissimo che cambiamenti all'api siano stati fatti e quindi alcuni moduli potrebbero non funzionare

l'esistenza di moduli solo binari è un problema in quest'ultimo caso, ma se si continua ad usare la medesima versione del kernel ( ovviamente non si può fare in eterno ) non ci sono problemi
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 18:15   #14
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da sacarde Guarda i messaggi
make modules_install

te li installa..... prima di eseguirlo salvati i moduli binari, che poi devi riaggiornare
Non è così semplice, il kernel viene fatto su un altro sistema e usando un sistema di build (bitbake).
Alla fine hai un nuovo file del kernel, una immagine cramfs del firmware (con già vari moduli installati, tra cui quelli forniti senza sorgenti), e tanti pacchetti da mettere in un repository con tutti i moduli del kernel dichiarati come modulo opzionale (non ho verificato ma dovrebbero esserci anche quelli installati nell'immagine).
FabryHw è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2012, 18:25   #15
FabryHw
Bannato
 
Iscritto dal: Apr 2006
Messaggi: 5857
Quote:
Originariamente inviato da pabloski Guarda i messaggi
accade cambiando versione del kernel ovviamente, se è la medesima non hai problemi
Invece sembra che li ho.

Io ho preso il sistema di build, modificato il file di config del kernel per:
  • Aggiungere NetConsole
  • Aggiungere il supporto EXT4
  • Togliere il supporto EXT2 ed EXT3, per ridurre le dimensioni del kernel (ho un limite max in cui devo stare)
  • Aggiungere il supporto CGROUP
  • Aggiungere BFQ via patch al kernel

e ho ricompilato tutto.

Il nuovo kernel (sostituito al vecchio tenendo i moduli del vecchio) sembra funzionare bene finché non si cerca di usare un driver WiFi o il driver tun.ko (openvpn).
In quel caso il modulo dumpa con per esempio:
Codice:
[ 4283.940000] CPU 0 Unable to handle kernel paging request at virtual address 00000014, epc == c9cca9dc, ra == c9cca9c0
[ 4283.950000] Oops[#1]:
[ 4283.950000] Cpu 0
[ 4283.950000] $ 0   : 00000000 00000001 94948400 00000000
[ 4283.950000] $ 4   : 00000000 00000001 9687a580 900f6eb8
[ 4283.950000] $ 8   : 00000998 00000997 00000000 962b8f98
[ 4283.950000] $12   : 000f0000 00000218 00000c90 962b0148
[ 4283.950000] $16   : 9539d640 000000c8 9539d640 905e0000
[ 4283.950000] $20   : 905e0000 9636dda0 c9ccd620 00000001
[ 4283.950000] $24   : 00000000 9007e47c
[ 4283.950000] $28   : 96b42000 96b43cb8 00000000 c9cca9c0
[ 4283.950000] Hi    : 00000005
[ 4283.950000] Lo    : 0505050a
[ 4283.950000] epc   : c9cca9dc tun_chr_open+0x44/0x64 [tun]
[ 4283.950000]     Tainted: P           O
[ 4283.950000] ra    : c9cca9c0 tun_chr_open+0x28/0x64 [tun]
[ 4283.950000] Status: 10009c03    KERNEL EXL IE
[ 4283.950000] Cause : 30800008
...
e mi chiedevo come risolvere (senza dover ridistribuire tutti i moduli).

Ho già provato a togliere CGROUP e NetConsole ma dumpa lo stesso.
Mi rimane da provare con rimettere EXT2 ed EXT3 (ma in quel caso non sono sicuro di stare dentro le dim. max).

Tra l'altro non dampa sempre, esempio ci sono volte che il WiFi per un po' di volte di fila funziona senza problemi e poi ad un ulteriore utilizzo invece va in dump.
Con il kernel compilato senza modifiche invece sembra funzionare tutto ed a lungo.
FabryHw è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Zero combustibili fossili e controllo qu...
Corsair NAUTILUS 360 RS LCD: raffreddame...
Nuovo record nel mondo dei computer quan...
Sony e Universal combatteranno l'IA con....
Il Chips Act europeo attuale è un...
OnePlus 15: debutto globale con design '...
Amazon Prime: addio alla prova gratuita ...
Windows 11 25H2: guida passo-passo per l...
ECOVACS Deebot Mini sotto i 300€, robot ...
USA chiedono a Taiwan di produrre chip i...
Abbiamo provato Nothing Ear (3), gli aur...
Skoda 110 R elettrica: la storica coupé ...
Snapdragon X2 Elite Extreme: i benchmark...
Electronic Arts (EA) acquisita per 55 mi...
Dopo 30 anni, un modder aggiorna la prim...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v