
Snapshot del codice sorgente del kernel Linux 4.1.15 per analizzare e studiare CVE-2022-3564, una vulnerabilità nel sottosistema di rete del kernel.
Rilascio del kernel Linux 4.x http://kernel.org/
Queste sono le note di rilascio per Linux versione 4. Leggetele attentamente, poiché vi dicono di cosa si tratta, spiegano come installare il kernel e cosa fare se qualcosa va storto.
COS'È LINUX?
Linux è un clone del sistema operativo Unix, scritto da zero da Linus Torvalds con l'assistenza di un gruppo informale di hacker sparsi per la Rete. Mira alla conformità con POSIX e con la Single UNIX Specification.
Ha tutte le funzionalità che ci si aspetterebbe da un Unix moderno e completo, inclusi vero multitasking, memoria virtuale, librerie condivise, caricamento on-demand, eseguibili condivisi copy-on-write, una corretta gestione della memoria e networking multistack che include IPv4 e IPv6.
È distribuito sotto GNU General Public License - vedere il file COPYING allegato per maggiori dettagli.
SU QUALE HARDWARE GIRA?
Sebbene originariamente sviluppato per PC basati su x86 a 32 bit (386 o superiore), oggi Linux gira anche (almeno) sulle architetture Compaq Alpha AXP, Sun SPARC e UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, Tilera TILE, AVR32 e Renesas M32R.
Linux è facilmente portabile sulla maggior parte delle architetture generiche a 32 o 64 bit, purché abbiano una unità di gestione della memoria a pagine (PMMU) e un porting del compilatore GNU C (gcc) (parte della GNU Compiler Collection, GCC). Linux è stato inoltre portato su alcune architetture senza PMMU, sebbene in tal caso la funzionalità sia ovviamente alquanto limitata. Linux è stato anche portato su sé stesso. Ora è possibile eseguire il kernel come applicazione in spazio utente - questo viene chiamato UserMode Linux (UML).
DOCUMENTAZIONE:
C'è molta documentazione disponibile sia in forma elettronica su Internet sia in libri, sia specifica per Linux sia relativa a questioni UNIX generali. Consiglio di dare un'occhiata alle sottodirectory di documentazione su qualsiasi sito FTP Linux per i libri del LDP (Linux Documentation Project). Questo README non vuole essere una documentazione del sistema: ci sono fonti molto migliori disponibili.
Ci sono vari file README nella sottodirectory Documentation/: in genere contengono, ad esempio, note di installazione specifiche del kernel per alcuni driver. Vedere Documentation/00-INDEX per un elenco di ciò che è contenuto in ciascun file. Si prega di leggere il file Changes, poiché contiene informazioni sui problemi che possono derivare dall'aggiornamento del kernel.
La sottodirectory Documentation/DocBook/ contiene diverse guide per sviluppatori e utenti del kernel. Queste guide possono essere renderizzate in vari formati: PostScript (.ps), PDF, HTML e pagine man, tra gli altri. Dopo l'installazione, "make psdocs", "make pdfdocs", "make htmldocs" o "make mandocs" renderizzeranno la documentazione nel formato richiesto.
INSTALLAZIONE dei sorgenti del kernel:
Se si installano i sorgenti completi, mettere il tarball del kernel in una directory in cui si hanno i permessi (ad es. la propria home directory) e decomprimerlo:
xz -cd linux-4.X.tar.xz | tar xvf -
Sostituire "X" con il numero di versione dell'ultimo kernel.
NON usare l'area /usr/src/linux! Quest'area contiene un insieme (di solito incompleto) di header del kernel usati dai file header delle librerie. Devono corrispondere alla libreria, e non devono essere alterati da qualunque kernel del giorno capiti.
Si può anche effettuare un aggiornamento tra le release 4.x applicando patch. Le patch sono distribuite in formato xz. Per installare tramite patch, procurarsi tutti i file di patch più recenti, entrare nella directory di livello superiore dei sorgenti del kernel (linux-4.X) ed eseguire:
xz -cd ../patch-4.x.xz | patch -p1
Sostituire "x" per tutte le versioni successive alla versione "X" del proprio albero dei sorgenti attuale, in_ordine, e non dovrebbero esserci problemi. Potrebbe essere opportuno rimuovere i file di backup (some-file-name~ o some-file-name.orig) e assicurarsi che non ci siano patch fallite (some-file-name# o some-file-name.rej). Se ce ne sono, o io o voi abbiamo commesso un errore.
A differenza delle patch per i kernel 4.x, le patch per i kernel 4.x.y (noti anche come kernel -stable) non sono incrementali ma si applicano direttamente al kernel di base 4.x. Ad esempio, se il kernel di base è 4.0 e si vuole applicare la patch 4.0.3, non si devono prima applicare le patch 4.0.1 e 4.0.2. Analogamente, se si sta eseguendo la versione 4.0.2 del kernel e si vuole passare alla 4.0.3, si deve prima invertire la patch 4.0.2 (cioè patch -R) prima di applicare la patch 4.0.3. Si può leggere più informazioni a riguardo in Documentation/applying-patches.txt
In alternativa, si può usare lo script patch-kernel per automatizzare questo processo. Esso determina la versione corrente del kernel e applica tutte le patch trovate.
linux/scripts/patch-kernel linux
Il primo argomento del comando sopra è la posizione dei sorgenti del kernel. Le patch vengono applicate dalla directory corrente, ma si può specificare una directory alternativa come secondo argomento.
Assicurarsi di non avere file .o obsoleti e dipendenze in giro:
cd linux make mrproper
Ora i sorgenti dovrebbero essere installati correttamente.
REQUISITI SOFTWARE
La compilazione e l'esecuzione dei kernel 4.x richiede versioni aggiornate di vari pacchetti software. Consultare Documentation/Changes per i numeri di versione minimi richiesti e per come ottenere gli aggiornamenti di questi pacchetti. Attenzione: l'uso di versioni eccessivamente vecchie di questi pacchetti può causare errori indiretti molto difficili da rintracciare, quindi non dare per scontato di poter semplicemente aggiornare i pacchetti quando sorgono problemi evidenti durante la compilazione o l'esecuzione.
Directory di BUILD del kernel:
Quando si compila il kernel, tutti i file di output verranno per impostazione predefinita salvati insieme al codice sorgente del kernel. Usando l'opzione "make O=output/dir" si può specificare una posizione alternativa per i file di output (incluso .config). Esempio:
kernel source code: /usr/src/linux-4.X
build directory: /home/name/build/kernel
Per configurare e compilare il kernel, usare:
cd /usr/src/linux-4.X
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
sudo make O=/home/name/build/kernel modules_install install
Nota: se si usa l'opzione 'O=output/dir', essa deve essere usata per tutte le invocazioni di make.
CONFIGURAZIONE del kernel:
Non saltare questo passaggio anche se si sta solo aggiornando una versione minore. In ogni release vengono aggiunte nuove opzioni di configurazione e compariranno strani problemi se i file di configurazione non sono impostati come previsto. Se si vuole trasportare la configurazione esistente a una nuova versione con uno sforzo minimo, usare "make oldconfig", che chiederà solo le risposte alle nuove domande.
I comandi di configurazione alternativi sono:
"make config" Plain text interface.
"make menuconfig" Text based color menus, radiolists & dialogs.
"make nconfig" Enhanced text based color menus.
"make xconfig" X windows (Qt) based configuration tool.
"make gconfig" X windows (Gtk) based configuration tool.
"make oldconfig" Default all questions based on the contents of your existing ./.config file and asking about new config symbols.