
Albero sorgente del kernel Linux 4.1.15 con modifiche relative a CVE-2017-1000371, una vulnerabilità di escalation dei privilegi locale. Fornisce una base per analizzare e comprendere il difetto.
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 gruppo informale di hacker sparsi in 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, tra cui multitasking reale, memoria virtuale, librerie condivise, caricamento su richiesta, eseguibili condivisi copy-on-write, una corretta gestione della memoria e networking multistack che include IPv4 e IPv6.
È distribuito sotto la GNU General Public License - consultare il file COPYING allegato per maggiori dettagli.
SU QUALI HARDWARE FUNZIONA?
Sebbene originariamente sviluppato per PC basati su x86 a 32 bit (386 o superiori), 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 alla maggior parte delle architetture generiche a 32 o 64 bit purché dispongano di una unità di gestione della memoria a pagine (PMMU) e di una versione del compilatore GNU C (gcc) (parte della Collezione di Compilatori GNU, GCC). Linux è stato anche 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 è chiamato UserMode Linux (UML).
DOCUMENTAZIONE:
C'è molta documentazione disponibile sia in forma elettronica su Internet che in libri, sia specifica per Linux che riguardante domande generali su UNIX. Consiglio di esplorare le sottodirectory di documentazione su qualsiasi sito FTP Linux per i libri del LDP (Linux Documentation Project). Questo README non intende essere una documentazione del sistema: ci sono fonti molto migliori disponibili.
Ci sono vari file README nella sottodirectory Documentation/: di solito contengono note di installazione specifiche del kernel per alcuni driver, ad 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 potrebbero 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, i comandi "make psdocs", "make pdfdocs", "make htmldocs" o "make mandocs" renderanno la documentazione nel formato richiesto.
INSTALLAZIONE del sorgente 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 scompattarlo:
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 utilizzati dai file header delle librerie. Dovrebbero corrispondere alla libreria e non essere rovinati da qualunque kernel del giorno capiti.
Si può anche aggiornare tra le versioni 4.x tramite patch. Le patch sono distribuite in formato xz. Per installare tramite patch, ottenere tutti i file di patch più recenti, entrare nella directory principale dei sorgenti del kernel (linux-4.X) ed eseguire:
xz -cd ../patch-4.x.xz | patch -p1
Sostituire "x" con tutte le versioni maggiori della versione "X" del proprio albero dei sorgenti, in ordine, e si dovrebbe essere a posto. Si potrebbero voler 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 (detti anche kernel -stable) non sono incrementali ma si applicano direttamente al kernel 4.x di base. Ad esempio, se il kernel di base è 4.0 e si vuole applicare la patch 4.0.3, non bisogna prima applicare le patch 4.0.1 e 4.0.2. Allo stesso modo, se si sta eseguendo la versione 4.0.2 del kernel e si vuole passare alla 4.0.3, bisogna prima annullare la patch 4.0.2 (cioè patch -R) prima di applicare la patch 4.0.3. Ulteriori informazioni sono disponibili 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 tutte le patch trovate.
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 è possibile specificare una directory alternativa come secondo argomento.
Assicurarsi di non avere file .o e dipendenze obsolete in giro:
cd linux make mrproper
Ora si dovrebbero avere i sorgenti correttamente installati.
REQUISITI SOFTWARE
Compilare ed eseguire i kernel 4.x richiede versioni aggiornate di vari pacchetti software. Consultare Documentation/Changes per i numeri di versione minimi richiesti e 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 si presentano 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 archiviati insieme al codice sorgente del kernel. Usando l'opzione "make O=output/dir" è possibile specificare un luogo alternativo 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. Nuove opzioni di configurazione vengono aggiunte in ogni rilascio e si presenteranno problemi imprevisti se i file di configurazione non sono impostati come previsto. Se si vuole portare la propria configurazione esistente a una nuova versione con il minimo sforzo, usare "make oldconfig", che chiederà solo le risposte alle nuove domande.
I comandi di configurazione alternativi sono:
"make config" Interfaccia di testo semplice.
"make menuconfig" Menu a colori basati su testo, elenchi radio e finestre di dialogo.
"make nconfig" Menu a colori 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" Risponde a tutte le domande basate sul contenuto del file ./.config esistente e chiede informazioni sui nuovi simboli di configurazione.
"make silentoldconfig" Come sopra, ma evita di ingombrare lo schermo con domande già risposte. Inoltre aggiorna le dipendenze.