vi scrivo da vero ignorante in materia..
Ho installato Ubuntu sul mio pc(già da un po di tempo) e vorrei cominciare ad aggiornare il Kernel e magari compilarlo (spiegatemi pure la differenza).
Al momento la versione del mio Kernel è la seguente: 2.6.20-16 (Ubuntu)
Ho cercato di capire come aggiornarla ma purtroppo senza esito, (mi sento un vero demente quando leggo le guide su linux).
Da dove comincio?
Cosa devo scaricare innanzitutto?
ci sono delle versioni del kernel più adatte a Ubuntu?se si dove le trovo?
Ho bisogno che mi diciate anche i comandi perchè leggendo una guida si trova scritta una cosa , leggendone un'altra altre ancora..mi creano solo confusione...
Chi è così paziente da seguirmi passo passo?
Grazie mille a tutti in anticipo...
Compilare un kernel è una cosa abbastanza istruttiva, e consiste nel prendere i sorgenti, configurare tutte le numerose opzioni del kernel e per l'appunto "compilarlo" ovvero trasformare quell'insieme di files .c e .h in un unico file eseguibile che verrà lanciato all'avvio del sistema.
Questo lo si fa o sul kernel che si ha già (per ampliarne le possibilità o aumentarne le prestazioni) o su un nuovo kernel.
In ogni caso ricordati che per oigni kernel esistono sul disco numerosi files, che dipendono dal kernel stesso.
Cosa vuol dire? Vuol dire che se hai un kernel ad esmpio 2.6.22 e lo ricompili, modificherai TUTTI i files (e i drivers e i moduli) per QUEL kernel.
Se invece parti da zero col kernel 2.6.20 il 2.6.22 rimarrà FUNZIONANTE, e non rischi di fare casini.
Allora, le basi sono avere sul sistema il compilatore (GCC), la catena di compilazione (le varie glibc, glibcpp e bash).
Servono anche i sorgenti del kernel :D
Da Ubuntu credo tu trovi i sorgenti del kernel già ottimizzato per Ubuntu nei repositories e installandoli ti installi già tutto l'occorrente ;)
Ricorda che più kernel possono convivere sulla stessa macchina e che i kernel "ufficiali" si chiamano Vanilla-sources, mentre poi quasi tutte le distro li patchano per migliorarli ed adattarli ai loro scopi.
I sorgenti risiedono solitamente in /usr/src/$kernel e per compilare un kernel basta andare in tale locazione e dare (come root)
Codice:
make menuconfig
Così facendo accederai a un pratico menu grafico per configurare le opzioni e i driver come preferisci.
Molte features possono essere compilate come Moduli, ovvero "pezzi di codice che vengono caricati su richiesta dal kernel stesso" premendo M, altri direttamente nel kernel premendo Y.
Ricorda che è NECESSARIO che nel kernel sia presente il supporto al tuo controller del disco principale (ad esempio dell'ICH su Intel) compilato NEL KERNEL e non come modulo, perchè altrimenti capiterai nel famoso Kernel panic!
Una volta finito dai sempre come root
Codice:
make && make modules_install
e il tuo kernel sarà compilato.
Finito il processo, dovrai copiare il kernel da /usr/src/$kernel/arch/$architettura/bzImage in /boot e aggiungerlo a /boot/grub/grub.conf
Se ti serve una mano anche qui posso dirti come fare :)
Se prima di eseguire menuconfig vuoi che siano caricate le impostazioni del kernel in uso puoi dare sempre da root
Codice:
make oldconfig
e poi
Codice:
make menuconfig
E vedrai in menuconfig tutte le impostazioni già sistemate come nel kernel attualmente caricato ;)
La cosa sembra difficile ma se usi un kernel differente da quello che hai installato non corri alcun rischio, e magari una votla fatto riuscirai a avere un kernel molto più snello e veloce ;)
Se ti posso essere d'aiuto più specificatamente fammi sapere ;)
P.S: Ti consiglio di scaricare un kernel maggiore del 2.6.20 tipo 2.6.22 (ultimo "stabile" :D: ) e poi campilarlo usando prima oldconfig e poi menuconfig, in modo da avere già una guida sulle cose da includere.
Inizia a escludere cose che sai per certo non servirti (come il bus PCMCIA su un desktop) e poi piano piano a levare sempre più roba ;)
E adesso aspetterò domani per avere nostalgia
signora libertà signorina anarchia
così preziosa come il vino così gratis come la tristezza, con la tua nuvola di dubbi e di bellezza.
scofield non metto in dubbio le vostre capacità..ma le mie purtroppo :D
ho fatto l'aggiornamento alla versione 7.10 ,ora il kernel è passato alla versione 2.6.22-14.
ho visto però che esiste anche una patch 2.6.23.12, come la applico?
comunque non son riuscito a fare le cose indicatemi da lomion..
non conosco praticamente niente di linux, comandi, link dai quali scaricare ciò che mi serve , insomma brancolo nel buio
scofield non metto in dubbio le vostre capacità..ma le mie purtroppo :D
ho fatto l'aggiornamento alla versione 7.10 ,ora il kernel è passato alla versione 2.6.22-14.
ho visto però che esiste anche una patch 2.6.23.12, come la applico?
comunque non son riuscito a fare le cose indicatemi da lomion..
non conosco praticamente niente di linux, comandi, link dai quali scaricare ciò che mi serve , insomma brancolo nel buio
Ciao!
Allora i passi da fare sono i seguenti (in breve):
1- procurarsi dei sorgenti del nuovo kernel
2- configurare il nuovo kernel
3- compilarlo e installare i moduli (che puoi pensare come "driver" per farla semplicissima)
4- impostare grub per bootare col nuovo kernel.
Facciamo passo passo Per procurarti i sorgenti del kernel e tutti i programmi che ti servono in Ubuntu devi installare dei pacchetti che ti elenco qui sotto:
Una volta dato questo comando hai tutto quello che ti serve per compilare il kernel nuovo ;)
Ora manca solo il sorgetne del kernel nuovo da compilare. Dis olito si consiglia di usare quello della tua distribuzione oppure il kernel "ufficiale" detto vanilla che puoi scaricare da [Solo gli utenti registrati possono vedere questo collegamento. ].
Diciamo che vuoi installare l'ultimo kernel di Ubuntu e procediamo a installare il pacchetto dei sorgenti:
Codice:
sudo apt-get install linux-source
Ecco fatto.
Il prossimo passo sarà decomprimere il pacchetto dei sorgenti in /usr/src/linux-$VERSIONE_SCARICATA e aggiungerti come utente in grado di accedere a /usr/src (in Ubuntu solo il gruppo src può scedere ai sorgenti se non ricordo male).
Fatto questo portati in /usr/src/linux-$VERSIONE_SCARICATA e dai
Codice:
sudo make oldconfig
Questo farà si che il nuovo kernel prenderà le impostazioni dall'attuale e ti chiederà conferma solo per le nuove voci di configurazioni (ad esempio drivers aggiunti nella nuova release).
Fatto qeusto dovremmo "tunare" il nuovo kernel eliminando roba inutile prima di compilarlo, ma direi che per ora abbiamo già molto da fare :D Quindi prima di entrare nel processo di riconfigurazione del kernel (che è abbastanza divertente e critico al tempo stesso :D: ) direi che puoi farmi sapere se per caso hai problemi a fare queste operazioni.
P.S: Se il pacchetto del kernel linux-sources è quello che hai attualmente installato (2.6.22) hai già l'ultimo kernel disponibile.
Ricorda che i kernel pari sono quelli stabili, quelli dispari gli instabili (2.6.22 è stabile, 2.6.23 no), tuttavia anche gli instabili in realtà sono testati prima di essere rilasciati quindi non dovresti avere problemi a usarne (io stesso sto usando il kernel 2.6.23 senza problemi ;) )
E adesso aspetterò domani per avere nostalgia
signora libertà signorina anarchia
così preziosa come il vino così gratis come la tristezza, con la tua nuvola di dubbi e di bellezza.
appena dò l'ultimo comando mi restituisce:
make: *** No rule to make target `oldconfig'. Stop.
???errore o è normale che sia così perchè non ci sono "regole"...
mah :D
:D Qualche intoppo capita sempre.
Allora controlla che prima di dare make oldconfig tu sia in /usr/src/linux-$VERSIONE e se anche così non va, allora puoi ottenere la configurazione attuale del kernel tramite un semplice comando aggiuntivo:
t
Infatti la configurazione del kernel attualmente in uso è presente (compressa) in formato testo nell'archivio config.gz (naturalmente non è un file presente sul disco fisso, quanto un'interfaccia che il kernel può mettere a disposizione se abilitato a farlo). Il comando sopra copia la configurazione corrente nel file (nascosto) .config della cartella del tuo kernel nuovo.
A questo punto un nuovo "sudo make oldconfig" dovrebbe andare ;)
E adesso aspetterò domani per avere nostalgia
signora libertà signorina anarchia
così preziosa come il vino così gratis come la tristezza, con la tua nuvola di dubbi e di bellezza.
ok fatto, ora però è partita la configurazione del kernel..
sono arrivato a questo punto e già non so se mettere Y o N(anche se ci sono i valori "consigliati " non mi sono fidato :D)
Codice:
* Linux Kernel Configuration
*
*
* General setup
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [N/y/?] (NEW) y
Local version - append to kernel release (LOCALVERSION) [] (NEW)
Automatically append version information to the version string (LOCALVERSION_AUTO) [Y/n/?] (NEW) y
Support for paging of anonymous memory (swap) (SWAP) [Y/n/?] (NEW) y
System V IPC (SYSVIPC) [N/y/?]
che è sto SYSVIPC ?
nella prima domanda ho messo Y invece di N , sbagliato?
che casino sta cosa...
dovrò farlo 100 volte per ricordarmi :D
Allora, oldconfig prende la vecchia configurazione e la "copia" nella nuova, però ti chiederà di rispondere a mano a alcune cose che sono state inserite nel nuovo kernel e che non c'erano prima (e che quindi non ci sono nella config vecchia)
Se hai dubbi vale sempre il "non so cosa fare? sceglo il consigliato" ;)
Ad ogni modo non importa realmente cosa rispondi perchè prima di compilare il tutto passiamo a configurare finemente le voci del kernel.
In pratica prendiamo la configurazione "ufficiale" di Ubuntu e vediamo id levare cose inutili ;)
Allora il prossimo passo è, sempre stando in /usr/src/linux-$VERSIONE, dai un bel
Codice:
sudo make menuconfig
E ti apparirà il configuratore "semigrafico" del kernel con già impostati i parametri della vecchia configurazione.
Navigando attraverso i menu potrai abilitare, disabilitare, creare moduli per ogni aspetto del kernel.
Dunque ricordati che ti puoi muovere nelle varie opzioni e puoi includere nel kernel delle cose, oppure talune (quelle con < > al posto di [ ] ) possono essere compilate come moduli, ovvero come componenti "aggiuntivi" caricati solo in caso di necessità.
Devi trovare un buon compromesso tra moduli e kernel, perchè ad esempio una cosa sfruttata molto sarà meglio includerla (mewno overhead) mentre le cose usate raramente (ad esempio i sensori o la PCMCIA su un portatile) potrai farle come modulo.
VANTAGGI DEL KERNEL "OMNICOMPRENSIVO": Veloce e rispositivo
VANTAGGI DEL KERNEL "MODULARE": stabile e più piccolo in ram
ricorda anche che se una voce non sai cosa sia puoi premere 'h' per avere una rapida guida con anche i consigli di default.
Alcune cose (come il driver del controlle dei dischi) DEVI INCLUDERLE e non farle come modulo pena il famigerato Kernel Panic ;)
Alcune cose utili da configurare per chi inizia per la prima volta sono ad esempio:
Codice:
Processor type and features --->
Processor family ($TUO_PROCESSORE)
ad esempio io ho "Intel Core 2/newer Xeon".
Altra cosa carina:
Codice:
Device drivers --->
Se vuoi puoi eliminare ad esempio PCMCIA se non la usi o Firewire ;)
Se invece vuoi andare avanti senza modificare le impostazioni del kernel e lasciare le generiche, puoi dare tranquillamente ESC ESC e continuiamo a vedere come compilare il kernel e farlo partire.
Ti consiglio di provare un poco a smanettare, anche perchè AMMESSO CHE TU STIA USANDO I SORGENTI DI UN KERNEL DIVERSO DA QUELLO IN USO, non puoi fare danni al kernel "originale"... Quindi puoi pasticciare pure, al massimo beccherai un Kernel Panic, ma si sistema tranquillamente :)
Se hai dubbi su alcune voci scrivi pure qui :D
P.S: Le voci sono proprio tante, ma se non vuoi fare una cosa troppo "raffinata" puoi semplicemente andare a sggiungere/togliere cose da "Device drivers" che sono i drivers, quindi puoi levare molta roba senza problemi (hardware che non hai nel pc) :D
E adesso aspetterò domani per avere nostalgia
signora libertà signorina anarchia
così preziosa come il vino così gratis come la tristezza, con la tua nuvola di dubbi e di bellezza.
* Linux Kernel Configuration
*
*
* General setup
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [N/y/?] (NEW) y
Local version - append to kernel release (LOCALVERSION) [] (NEW)
Automatically append version information to the version string (LOCALVERSION_AUTO) [Y/n/?] (NEW) y
Support for paging of anonymous memory (swap) (SWAP) [Y/n/?] (NEW) y
System V IPC (SYSVIPC)
che è sto SYSVIPC ?
nella prima domanda ho messo Y invece di N , sbagliato?
che casino sta cosa...
dovrò farlo 100 volte per ricordarmi :D
Allora la prima richiesta è se inserire o meno nel kernel driver sperimentali, hai fatto bene a dare Y.
La seconda hai fatto bene a lasciarla vuota, serve per "personalizzare" il nome del kernel (ad esempio se mettevi "windows" il kernel si sarebbe chiamato ad esempio linux-2.6.23-Ubuntu-windows)
Nella terza hai confermato l'inclusione del "nome personalizzato", va bene tanto non l'hai insrerito ;)
La penultima è per l'uso dello swap, ottima la scelta di Y.
Il sistem V IPC serve per abilitare nel kernel la compatibilità con lo "standard" IPC, diciamo che serve per motivi di compatibilità con applicazioni sviluppate su altre piattaforme (spero nessuno mi spari per averla messa giù così ) comunque anche qui Y ;)
Se hai interrotto puoi riprendere semplicemente dando di nuovo sudo make oldconfig, oppure partire direttamente da sudo make menuconfig, visto che la gran parte delle impostazioni è già stata copiata dalla vecchia configurazione alla nuova, il resto verrà usato il valore di default :D
E adesso aspetterò domani per avere nostalgia
signora libertà signorina anarchia
così preziosa come il vino così gratis come la tristezza, con la tua nuvola di dubbi e di bellezza.
grazie mille sei gentilissimo e paziente ma...
cacchio ma è tutto in inglese
impiego due mesi a capire dove sto mettendo le mani...
devo sfoderare tutta la pazienza che è in me...
ho trovato due guide che spiegano passo passo ogni singola voce...
ero arrivato quasi a metà...ma per copiare una riga che non trovavo nella guida e cercarla su google, indovina cosa ho fatto?
ebbene si, un ctrl-c (dita di mer*a) , invece che ctrl-alt-c, quindi è uscito dalla configurazione e ora devo riprendere da capo...
sparatemi vi prego...
(ma chiedere conferma prima di uscire no ehhh? ma porccccc)
Cavolo mi spiace molto :( Comunque ho visto di peggio tipo io che dopo aver passato 15 minuti a configurare tutti esco e non gli dico di salvare
In effetti come ti ho detto il kernel contiene talmente tanti drivers e opzioni che sapere sempre tutto quello che vai a toiccare è impossibile.
Come consiglio per iniziare mi sento di dirti di non esagerare a eliminare cose, meglio prima eliminare un po di roba che palesemente non vuoi e provare se boota e va tutto ,poi magari rifar il procedimento (e stavolta non c'è più bisogno di make oldconfig :D ) e snellirlo sempre più...
Moltissime cose poi sono tecniche e probabilmente non ti interessa sapere a che servono, quindi puoi tranquillamente lasciare alcune voci così come sono ;)
Comunque il grande dello snellimento lo fai tra i drivers se hai voglia magari posta la tua configurazione hardware, almeno se hai dubbi o se magari hai hardware un po "particolare" vediamo di cercare come sistemarlo ben bene
E adesso aspetterò domani per avere nostalgia
signora libertà signorina anarchia
così preziosa come il vino così gratis come la tristezza, con la tua nuvola di dubbi e di bellezza.
buahahahah hardware particolare?
ho una manovella sul lato destro del pc, come si configura nel kernel? :D
ho un vecchissimo PIII 1Ghz 512 SDRAM, una sorta di scheda video della ati(rage 128 mi pare[mi vergogno come na mer*a] ).
Insomma ho un pc meno performante di un qualsiasi mezzo muletto di oggi :D.
Sono arrivato a Device Driver e sto per sclerare..
comunque sto seguendo i consigli di queste guide: [Solo gli utenti registrati possono vedere questo collegamento. ] [Solo gli utenti registrati possono vedere questo collegamento. ]