Lo scorso 23 Settembre con questo messaggio apparso sulla mailing list ufficiale del kernel linux, Linux Torvalds annuncia l'uscita del kernel 2.4.10:
Subject: Linux-2.4.10
From: Linus Torvalds <torvalds@transmeta.com>
Date: 2001-09-23 18:54:13
Ok, I released a real 2.4.10, let the fun begin..
This is an uncomfortably large changeset, largely
because I was away in Finland twice during the
2.4.9->2.4.10 development, and partly of course
because I've tried to aggressively sync up
especially with Alan.
In addition to the VM changes that have gotten so
much attention there are architecture updates,
various major filesystem updates (jffs2 and NTFS),
ACPI updates, and tons of driver merges. And, of
course, the min()/max() changes.
Give it hell,
Linus
Facendo seguire il contenuto del changelog con le maggiori modifiche apportate nelle varie pre (15 in tutto) dal 2.4.9 fino alla 2.4.10.
Le maggiori novità introdotte in questa versione del kernel riguardano la gestione della Virtual Memory Andrea Arcangeli grandissimo passo in avanti
Le reazioni all'interno degli sviluppatori Linux sembrano essere contrastanti. Anche Alan Cox Rik van Riel
Quello che ha portato Arcangeli a riscrivere gran parte dell'algoritmo di implementazione della Virtual Memory (pubblicando dapprima la patch page aging
Il nuovo kernel infatti sembra soffrire particolarmente in determinate condizioni di estremo carico, che porta a generare errori in fase di allocazione del tipo:
__alloc_pages: 0-order allocation failed (gfp=0x1d2/0) from c0129a3e
provvedendo successivamente a "killare" alcuni processi. Ciò è dovuto a una cattiva implementazione nella funziona shrink_caches() /usr/src/linux/mm/vmscan.c cat /dev/hda > /dev/null
Come già detto il kernel ufficiale e quello di Alan Cox hanno utilizzato 2 tipi diversi di implementazione della VM, rendendo possibile un confronto tra i due, cosa che, secondo me, permetterà di poter fare dei contronti sul tipo di sviluppo seguito e sulla qualità delle due differenti gestioni.
Altre modifiche
A proposito di ReiserFS
Ed è una notizia abbastanza recente quella che annuncia la decisione di Red Hat
Senza dilungarmi ulteriormente su argomenti troppo tecnici che potrebbero essere oggetto di una trattazione futura più specifica e approfondita, ricordo che il vantaggio maggiore che si ha con l'utilizzo di un filesystem journaled
Per quel che riguarda la compilazione e l'installazione del nuovo kernel, essa non comporta grossi problemi, basta attenersi alla classiche istruzioni (per maggiori dettagli potete consultare l'articolo: Come ricompilare il Kernel Linux
1) scaricare la nuova patch immagine
lnxbox1:/usr/src# wget ftp://ftp.kernel.org/[...]/linux-2.4.10.tar.gz
Oppure a seconda se abbiamo già installato i sorgenti del kernel 2.4.9 (a tal proposito ricordo che la patch per il kernel 2.4.10 si può applicare solo sui sorgenti del 2.4.9, che se non avete dovrete provvere ad installare con lo stesso metodo):
lnxbox1:/usr/src# wget ftp://ftp.kernel.org/[...]/patch-2.4.10.bz2
(diamo per scontato di essere loggati come utente root e di essere nella directory /usr/src)
2) patchare il kernel, o installare direttamente la versione completa (linux-2.4.10.tar.gz o linux-2.4.10.tar.bz2). Esempio:
lnxbox1:/usr/src# tar xfvz linux-2.4.10.tar.gz
se non abbiamo nessuna versione dei sorgenti del kernel 2.4.9 già installata.
Disponiamo già i sorgenti decompressi in /usr/src/linux possiamo tranquillamente applicare la patch con:
lnxbox1:/usr/src# bzip2 -dc patch-2.4.10.bz2 | patch -p0
A questo punto potremo procedere alla ricompilazione vera e propria del nostro nuovo kernel. Se abbiamo già ricompilato il kernel e volessimo mantenere la configurazione precendete (prima di compilare il kernel dovremo dare un make mrproper che provvederà, tra le altre cose, a cancellare il nostro file di configurazione) potremo:
3) copiare il file /usr/src/linux/.config in una directory a nostro piacere (per esempio in /root) con:
lnxbox1:/usr/src# cp linux/.config /root
4) spostarci nella directory linux e dare come comando make mrproper:
lnxbox1:/usr/src# cd linux lnxbox1:/usr/src/linux# make mrproper
5) ricopiare il file .config originario nella directory /usr/src/linux:
lnxbox1:/usr/src/linux# cp /root/.config .
6) eseguire make oldconfig
lnxbox1:/usr/src/linux# make oldconfig
7) eseguire make menuconfig, (oppure make config o make xconfig) per ritoccare eventualmenente il nostro file di configurazione e successivamente salvare:
lnxbox1:/usr/src/linux# make menuconfig
8) eseguire make dep, make bzImage, make modules e make modules_install
lnxbox1:/usr/src/linux# make dep && make bzImage && make modules && make modules_install
9) copiare il file appena creato /usr/src/linux/arch/i386/boot/bzImage in /boot/XYZ, sostituendo XYZ con il nome dell'immagine a cui fa riferimento il file lilo.conf con more /etc/lilo.conf (in particolare fate attenzione alla riga contenente image=/boot/XYZ):
lnxbox1:/usr/src/linux# cp arch/i386/boot/bzImage /boot/XYZ
10) eseguire LILO:
lnxbox1:/usr/src/linux# lilo
Per ogni maggiore delucidazione è sempre possibile (nonchè raccomandabile, la prudenza in questi casi non è mai troppa) rileggere l'articolo:Come ricompilare il kernel linux
A presto e buona compilazione!