[Kernel] Come aggiornarlo Clicca QUI per vedere il messaggio nel forum |
recoil |
Scrivo questo how-to perché a quanto abbiamo capito oggi ci sono in giro delle guide che trattano l'argomento in modo incompleto e frettoloso.
Questa consideriamola la versione 1, la migliorerò sicuramente in base alle vostre indicazioni
Parte 1
Come procurarsi il kernel
Parte 2
Come configurare il kernel
Parte 3
Compilazione e installazione
Come procurarsi il kernel
I kernel escono a questo indirizzo
http://www.kernel.org/ dove potete trovare i sorgenti e le patch da applicare ai sorgenti che avete già installato.
I sorgenti del kernel si trovano in /usr/src e in genere si utilizza un link simbolico per puntare ad essi. Dovete quindi scompattare i sorgenti (che trovate in formato tar.gz o tar.bz2) tramite i comandi tar o bunzip2, quindi creare il link simbolico.
Il link è /usr/src/linux, per crearlo basta fare ln -s /usr/src/directorysorgenti /usr/src/linux
Nel caso abbiate già i sorgenti del kernel potete scaricare la patch che occupano molto meno spazio quindi sono più comode da scaricare.
Le patch si trovano sempre nel sito di prima, vanno decompresse in /usr/src/linux (sempre con tar o bunzip2) quindi serve il comando
patch -p0 < nomefilepatch
Come configurare il kernel
A questo punto supponiamo che in /usr/src/linux ci siano i sorgenti aggiornati del kernel.
Da questa directory potete iniziare il processo di compilazione, non prima di aver configurato moduli e componenti del kernel.
Per farlo esistono dei tool grafici che ci vengono in aiuto.
Le opzioni che potete scegliere sono:
make menuconfig menù molto spartano, niente mouse. Sicuramente quello che da meno problemi!
make xconfig in questo c'è anche il mouse e si possono leggere, per la maggior parte delle componenti, delle piccole descrizioni
make gconfig utilizzabile con gnome, anche questo è grafico ma non aggiunge molto di più a xconfig
make kconfig questo è per kde, non l'ho mai provato ma penso sia simile a gconfig
Per il momento non mi metto a parlare di questa parte perché ci sono tantissime cose da scrivere, mi riservo un edit più avanti o un altro messaggio per parlare nel dettaglio delle varie componenti.
Sappiate solo che c'è la distinzione tra le componenti che finiscono nel kernel e i moduli, che possono essere caricati in modo indipendente. Volendo si può fare a meno dei moduli ma non mi sembra una grande idea.
Alla fine della configurazione ricordatevi di salvare (in menuconfig la voce è in fondo a tutto, negli altri si trova facilmente) in modo che, in caso di compilazioni successive, possiate risparmiarvi lo sbattimento.
Compilazione e installazione
Una volta usciti dal tool per la configurazione avrete salvato le vostre scelte ed è il momento di compilare.
Se avete una vecchia versione del kernel a questo punto è necessario il comando
make dep seguito da make clean.
Con i nuovi kernel non è più necessario, ma se avete già compilato una volta il kernel è meglio fare il make clean (non è invece necessario la prima volta).
A questo punto dovete compilare il kernel e (se presenti) i moduli
Lanciate questo comando
make && make modules && make modules_install
In questo modo compilate il kernel (make) e i moduli (make modules) installando questi ultimi (make modules_install).
Se avete un kernel 2.6 potete fare a meno del make modules quindi basta make && make modules_install.
E' meglio far eseguire i comandi uno dopo l'altro (con le &&) almeno potete andare a fare altro, dato che ci vorrà un po' per compilare kernel e moduli.
Una volta terminata l'installazione i moduli, come abbiamo detto, sono già al loro posto, bisogna solamente mettere il kernel al posto giusto.
Per farlo andate nella directory arch/i386/boot (da /usr/src/linux dove vi trovate ora).
Troverete un file chiamato bzImage, questo è il kernel appena compilato.
A questo punto copiatelo in /boot, rinominandolo in modo che si capisca di quale kernel si tratta. In genere si danno nomi che iniziano con vmlinuz, quindi la versione del kernel 2.6.6 potrebbe essere chiamata vmlinuz-2.6.6 anche se potete dare il nome che preferite. La cosa importante è quella di non sovrascrivere il kernel esistente!
Ricapitolando fate (da /usr/src/linux/arch/i386/boot)
cp bzImage /boot/vmlinuz-2.x.y
Quindi c'è un'ultima cosa da fare, dovete copiare il file /usr/src/linux/System.map nella cartella /boot
E' un file che serve più che altro per il debug del kernel ma meglio copiarlo (occupa pochissimo).
A questo punto resta da configurare il boot manager per far posto al nuovo kernel. Come vi ho detto prima NON sovrascrivete quello che esiste già, aspettate almeno di aver provato il nuovo. In caso contrario potreste ritrovarvi con un sistema inutilizzabile e con la necessità di far ricorso a un dischetto di boot o al cd di installazione. |
pgr |
Dal kernel 2.6.0 non è più necessario eseguire il comando "make modules" perchè il comando "make" dopo aver compilato il kernel
compila i drivers scelti come moduli.
Ricapitolando, per compilare il kernel (versione >= 2.6.0) basta editare:
make
make modules_install |
recoil |
Originally posted by pgr
Dal kernel 2.6.0 non è più necessario eseguire il comando "make modules" perchè il comando "make" dopo aver compilato il kernel
compila i drivers scelti come moduli.
Ricapitolando, per compilare il kernel (versione >= 2.6.0) basta editare:
make
make modules_install
hai ragione siccome c'è ancora chi compila i 2.4 avevo pensato di ometterlo ma a sto punto edito e faccio la distinzione
cmq grazie pgr per la puntualizzazione, se trovi altro dimmelo perché ho scritto la roba un po' di fretta e come dicevo va sicuramente migliorata
c'è di positivo che di sicuro non ho messo comandi per la distruzione del vostro pc :D |
DeepBlue |
Mi chiedevo: non manca un make bzImage da qualche parte?
O è sostituito da qualche altra operazione che hai elencato? |
Hamish |
Originally posted by DeepBlue
Mi chiedevo: non manca un make bzImage da qualche parte?
O è sostituito da qualche altra operazione che hai elencato?
con il 2.6.X basta il make che crea direttamente il bzImage in
/usr/src/linux/arch/..?../boot
interessanti sono anche
code: make modules
che crea singoli moduli da ricopiare a manina in /lib/modules/2.6.6/
code: make install
che copia automaticamente il system.map e il bzImage nella /boot
code: make xconfig
e' dipendente da sistemi su cui sono installate le librerie QT
code: make gconfig
utilizza al contrario di xconfig le piu' universali GTK
:) |
|
|
|