
Albero sorgente del kernel Linux 4.1.15 con focus su CVE-2022-42703, una vulnerabilità use-after-free nel sottosistema netfilter, per analisi e ricerca di sfruttamento.
Rilascio del kernel Linux 4.x http://kernel.org/
Queste sono le note di rilascio per la versione 4 del kernel Linux. Leggetele attentamente, poiché spiegano di cosa si tratta, 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'aiuto di un team eterogeneo di hacker sparsi per la Rete. Mira alla conformità con POSIX e la Specifica UNIX Singola.
Ha tutte le funzionalità che ci si aspetterebbe da un Unix moderno e completo, inclusi vero multitasking, memoria virtuale, librerie condivise, caricamento su richiesta, eseguibili con copy-on-write condiviso, corretta gestione della memoria e networking multistack, inclusi IPv4 e IPv6.
È distribuito sotto la Licenza Pubblica Generale GNU - vedere il file COPYING allegato per maggiori dettagli.
SU QUALI HARDWARE FUNZIONA?
Sebbene originariamente sviluppato per PC basati su x86 a 32 bit (386 o superiore), oggi Linux funziona 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é dispongano di una unità di gestione della memoria impaginata (PMMU) e di un porting del compilatore GNU C (gcc) (parte della Collezione di Compilatori GNU, GCC). Linux è stato anche portato su diverse architetture senza PMMU, sebbene la funzionalità sia ovviamente alquanto limitata. Linux è stato anche portato su se stesso. Ora è possibile eseguire il kernel come applicazione in spazio utente - questo si chiama UserMode Linux (UML).
DOCUMENTAZIONE:
Esiste molta documentazione disponibile sia in formato elettronico su Internet che in libri, sia specifica per Linux che relativa a domande generali su UNIX. Raccomando di consultare le sottodirectory di documentazione su qualsiasi sito FTP Linux per i libri LDP (Progetto di Documentazione Linux). Questo README non vuole essere documentazione sul sistema: ci sono fonti molto migliori.
Ci sono vari file README nella sottodirectory Documentation/: questi contengono tipicamente note di installazione specifiche del kernel per alcuni driver, per esempio. Vedere Documentation/00-INDEX per un elenco di ciò che è contenuto in ogni 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 rese 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" renderanno la documentazione nel formato richiesto.
INSTALLAZIONE DEL SORGENTE DEL KERNEL:
Se installate i sorgenti completi, mettete il tarball del kernel in una directory dove avete i permessi (ad es. la vostra home directory) e decomprimetelo:
xz -cd linux-4.X.tar.xz | tar xvf -
Sostituite "X" con il numero di versione dell'ultimo kernel.
NON utilizzate l'area /usr/src/linux! Quest'area contiene un set (di solito incompleto) di header del kernel che vengono usati dai file di header delle librerie. Dovrebbero corrispondere alla libreria e non essere alterati da qualunque sia il kernel del giorno.
Potete anche aggiornare tra i rilasci 4.x tramite patch. Le patch sono distribuite in formato xz. Per installare tramite patch, ottenete tutti i file di patch più recenti, entrate nella directory principale del sorgente del kernel (linux-4.X) ed eseguite:
xz -cd ../patch-4.x.xz | patch -p1
Sostituite "x" con tutte le versioni maggiori della versione "X" del vostro albero dei sorgenti corrente, in_ordine, e dovreste essere a posto. Potreste voler rimuovere i file di backup (qualche-nome-file~ o qualche-nome-file.orig), e assicurarvi che non ci siano patch fallite (qualche-nome-file# o qualche-nome-file.rej). Se ce ne sono, io o voi abbiamo commesso un errore.
A differenza delle patch per i kernel 4.x, le patch per i kernel 4.x.y (note anche come kernel -stable) non sono incrementali ma si applicano direttamente al kernel base 4.x. Ad esempio, se il vostro kernel base è 4.0 e volete applicare la patch 4.0.3, non dovete applicare prima le patch 4.0.1 e 4.0.2. Allo stesso modo, se state eseguendo la versione del kernel 4.0.2 e volete passare alla 4.0.3, dovete invertire prima la patch 4.0.2 (cioè, patch -R) prima di applicare la patch 4.0.3. Potete leggere di più su questo in Documentation/applying-patches.txt
In alternativa, lo script patch-kernel può essere usato per automatizzare questo processo. Determina la versione corrente del kernel e applica qualsiasi patch trovata.
linux/scripts/patch-kernel linux
Il primo argomento nel comando sopra è la posizione del sorgente del kernel. Le patch vengono applicate dalla directory corrente, ma una directory alternativa può essere specificata come secondo argomento.
Assicuratevi di non avere file .o obsoleti e dipendenze in giro:
cd linux make mrproper
Ora dovreste avere i sorgenti installati correttamente.
REQUISITI SOFTWARE
Compilare ed eseguire i kernel 4.x richiede versioni aggiornate di vari pacchetti software. Consultate Documentation/Changes per i numeri di versione minima richiesti e come ottenere aggiornamenti per questi pacchetti. Attenzione: usare versioni eccessivamente vecchie di questi pacchetti può causare errori indiretti molto difficili da rintracciare, quindi non date per scontato di poter semplicemente aggiornare i pacchetti quando sorgono problemi evidenti durante la compilazione o il funzionamento.
DIRECTORY DI BUILD PER IL KERNEL:
Quando si compila il kernel, tutti i file di output saranno per default memorizzati insieme al codice sorgente del kernel. Usando l'opzione "make O=dir/output" potete specificare una posizione alternativa per i file di output (incluso .config). Esempio:
codice sorgente del kernel: /usr/src/linux-4.X
directory di build: /home/nome/build/kernel
Per configurare e compilare il kernel, usate:
cd /usr/src/linux-4.X
make O=/home/nome/build/kernel menuconfig
make O=/home/nome/build/kernel
sudo make O=/home/nome/build/kernel modules_install install
Nota bene: Se viene usata l'opzione 'O=dir/output', allora deve essere usata per tutte le invocazioni di make.
CONFIGURAZIONE DEL KERNEL:
Non saltate questo passaggio anche se state solo aggiornando una versione minore. Nuove opzioni di configurazione vengono aggiunte in ogni rilascio, e problemi strani si presenteranno se i file di configurazione non sono impostati come previsto. Se volete trasferire la vostra configurazione esistente a una nuova versione con il minimo lavoro, usate "make oldconfig", che vi chiederà solo le risposte alle nuove domande.
Comandi di configurazione alternativi sono:
"make config" Interfaccia di testo semplice.
"make menuconfig" Menu colorati basati su testo, elenchi radio e dialoghi.
"make nconfig" Menu colorati basati su testo migliorati.
"make xconfig" Strumento di configurazione basato su X windows (Qt).
"make gconfig" Strumento di configurazione basato su X windows (Gtk).
"make oldconfig" Imposta come predefinite tutte le domande basate sul contenuto del vostro file ./.config esistente e chiede informazioni sui nuovi simboli di configurazione.