
Albero sorgente kernel Linux 3.0.35 con focus su CVE-2019-10220, che fornisce riferimento per analisi di vulnerabilità e ricerca di sfruttamento.
Rilascio del kernel Linux 3.x http://kernel.org/
Queste sono le note di rilascio per Linux versione 3. Leggerle attentamente, poiché spiegano di cosa si tratta, come installare il kernel e cosa fare se qualcosa va storto.
CHE COS'È LINUX?
Linux è un clone del sistema operativo Unix, scritto da zero da Linus Torvalds con l'assistenza di un gruppo informale di hacker provenienti da tutta la Rete. Punta alla conformità con POSIX e Single UNIX Specification.
Ha tutte le funzionalità che ci si aspetterebbe da uno 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 sia stato sviluppato originariamente per PC a 32 bit basati su x86 (386 o successivi), 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 alla maggior parte delle architetture general-purpose a 32 o 64 bit, purché abbiano una memory management unit a pagine (PMMU) e una versione del compilatore GNU C (gcc) (parte della GNU Compiler Collection, GCC). Linux è stato anche portato su numerose architetture senza PMMU, sebbene in tal caso la funzionalità sia ovviamente alquanto limitata. Linux è stato anche portato a sé stesso. Ora si può eseguire il kernel come applicazione userspace: questa modalità si chiama UserMode Linux (UML).
DOCUMENTAZIONE:
Esiste molta documentazione disponibile sia in forma elettronica su Internet sia in libri, sia specifica per Linux sia relativa a questioni UNIX generali. Consiglio di cercare nei sottodirectory di documentazione su qualsiasi sito FTP Linux i libri del LDP (Linux Documentation Project). Questo README non vuole essere la documentazione del sistema: ci sono fonti molto migliori disponibili.
Ci sono vari file README nel sottodirectory Documentation/: questi contengono in genere 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.
Il sottodirectory Documentation/DocBook/ contiene diverse guide per sviluppatori e utenti del kernel. Queste guide possono essere generate 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" genereranno la documentazione nel formato richiesto.
INSTALLAZIONE del sorgente del kernel:
Se si installano i sorgenti completi, inserire l'archivio del kernel in una directory su cui si hanno i permessi (ad es. la propria home directory) e estrarlo:
gzip -cd linux-3.X.tar.gz | tar xvf -
oppure bzip2 -dc linux-3.X.tar.bz2 | tar xvf -
Sostituire "XX" 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. Essi dovrebbero corrispondere alla libreria e non essere alterati da qualunque kernel del momento capiti.
È anche possibile aggiornare tra le release 3.x tramite patch. Le patch sono distribuite nel tradizionale formato gzip e nel più recente formato bzip2. Per installare tramite patch, procurarsi tutti i file di patch più recenti, entrare nella directory di livello principale del sorgente del kernel (linux-3.x) ed eseguire:
gzip -cd ../patch-3.x.gz | patch -p1
oppure bzip2 -dc ../patch-3.x.bz2 | patch -p1
(ripetere xx per tutte le versioni successive a quella del proprio albero dei sorgenti corrente, in ordine) e tutto dovrebbe funzionare. Si può voler rimuovere i file di backup (xxx~ o xxx.orig), e assicurarsi che non ci siano patch fallite (xxx# o xxx.rej). Se ci sono, o voi o io abbiamo commesso un errore.
A differenza delle patch per i kernel 3.x, le patch per i kernel 3.x.y (note anche come kernel -stable) non sono incrementali ma si applicano direttamente al kernel base 3.x. Si prega di leggere Documentation/applying-patches.txt per maggiori informazioni.
In alternativa, lo script patch-kernel può essere usato per automatizzare questo processo. Determina la versione corrente del kernel e applica tutte le patch trovate.
linux/scripts/patch-kernel linux
Il primo argomento nel comando precedente è la posizione del sorgente del kernel. Le patch vengono applicate dalla directory corrente, ma è possibile specificare una directory alternativa come secondo argomento.
Se si aggiorna tra release usando le patch della serie stabile (ad esempio, patch-3.x.y), notare che queste "dot-releases" non sono incrementali e devono essere applicate all'albero base 3.x. Per esempio, se il kernel base è 3.0 e si vuole applicare la patch 3.0.3, non si deve e anzi non bisogna assolutamente applicare prima le patch 3.0.1 e 3.0.2. Allo stesso modo, se si sta eseguendo la versione 3.0.2 del kernel e si vuole passare alla 3.0.3, bisogna prima annullare la patch 3.0.2 (cioè patch -R) prima di applicare la patch 3.0.3. Si può leggere altro su questo in Documentation/applying-patches.txt
Assicurarsi di non avere file .o obsoleti e dipendenze in giro:
cd linux
make mrproper
A questo punto i sorgenti dovrebbero essere installati correttamente.
REQUISITI SOFTWARE
La compilazione e l'esecuzione dei kernel 3.x richiedono versioni aggiornate di vari pacchetti software. Consultare Documentation/Changes per i numeri di versione minimi richiesti e per come ottenere aggiornamenti per 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 per il kernel:
Quando si compila il kernel, tutti i file di output saranno per impostazione predefinita memorizzati insieme al codice sorgente del kernel. Usando l'opzione "make O=output/dir" è possibile specificare una posizione alternativa per i file di output (incluso .config). Esempio: codice sorgente del kernel: /usr/src/linux-3.N directory di build: /home/name/build/kernel
Per configurare e compilare il kernel usare: cd /usr/src/linux-3.N make O=/home/name/build/kernel menuconfig make O=/home/name/build/kernel sudo make O=/home/name/build/kernel modules_install install
Si prega di notare: se si usa l'opzione 'O=output/dir', essa deve essere usata per tutte le invocazioni di make.
CONFIGURAZIONE del kernel:
Non si salti questo passaggio anche se si sta solo aggiornando una versione minore. In ogni release vengono aggiunte nuove opzioni di configurazione, e se i file di configurazione non sono impostati come previsto compariranno strani problemi. Se si vuole portare la propria configurazione esistente a una nuova versione con il minimo lavoro, usare "make oldconfig", che chiederà solo le risposte alle nuove domande.