
Codice sorgente del kernel Linux 4.1.15 con particolare attenzione a CVE-2023-4128, destinato all'analisi delle vulnerabilità e allo studio didattico della sicurezza del kernel.
Linux kernel release 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 di hacker poco coeso attraverso la Rete. Punta alla conformità con POSIX e Single UNIX Specification.
Ha tutte le funzionalità che ci si aspetterebbe da un Unix moderno e completo, inclusi multitasking reale, memoria virtuale, librerie condivise, caricamento demandato, eseguibili copy-on-write condivisi, una corretta gestione della memoria e networking multistack che include IPv4 e IPv6.
È distribuito sotto la GNU General Public License - consultate il file COPYING allegato per maggiori dettagli.
SU QUALE 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é abbiano una unità di gestione della memoria con paginazione (PMMU) e una versione del compilatore GNU C (gcc) (parte di The GNU Compiler Collection, GCC). Linux è stato anche portato su diverse 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 nello spazio utente - questo è chiamato UserMode Linux (UML).
DOCUMENTAZIONE:
Esiste molta documentazione disponibile sia in formato elettronico su Internet sia in libri, sia specifica per Linux sia relativa a questioni UNIX generali. Consiglio di cercare nelle sottodirectory di documentazione su qualsiasi sito FTP di 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/: questi contengono tipicamente note di installazione specifiche del kernel per alcuni driver, per esempio. Consultate Documentation/00-INDEX per un elenco di ciò che è contenuto in ogni file. Leggete il file Changes, poiché contiene informazioni sui problemi che potrebbero derivare dall'aggiornamento del vostro 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 del sorgente del kernel:
Se installate i sorgenti completi, mettete il tarball del kernel in una directory dove avete i permessi (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 usate l'area /usr/src/linux! Quest'area contiene un set (solitamente incompleto) di header del kernel che vengono usati dai file header delle librerie. Dovrebbero corrispondere alla libreria e non essere danneggiati da qualunque sia il kernel-del-giorno.
Potete anche aggiornare tra le release 4.x tramite patch. Le patch sono distribuite in formato xz. Per installare tramite patch, prendete 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" per tutte le versioni maggiori della versione "X" del vostro albero sorgente corrente, in_ordine, e tutto dovrebbe funzionare. Potreste voler rimuovere i file di backup (nome-file~ o nome-file.orig), e assicurarvi che non ci siano patch fallite (nome-file# o nome-file.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 (anche note come kernel -stable) non sono incrementali ma si applicano direttamente al kernel base 4.x. Per esempio, se il vostro kernel base è 4.0 e volete applicare la patch 4.0.3, non dovete prima applicare le patch 4.0.1 e 4.0.2. Allo stesso modo, se state usando il kernel versione 4.0.2 e volete passare a 4.0.3, dovete prima annullare 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 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.
Assicuratevi di non avere file .o obsoleti e dipendenze in giro:
cd linux make mrproper
Ora dovreste avere i sorgenti correttamente installati.
REQUISITI SOFTWARE
Compilare ed eseguire i kernel 4.x richiede versioni aggiornate di vari pacchetti software. Consultate Documentation/Changes per i numeri di versione minimi 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 si presentano problemi evidenti durante la compilazione o il funzionamento.
DIRECTORY DI BUILD per il kernel:
Quando compilate il kernel, tutti i file di output verranno di default memorizzati insieme al codice sorgente del kernel. Usando l'opzione "make O=output/dir" 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
Notate: Se viene usata l'opzione 'O=output/dir', 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 strani problemi si presenteranno se i file di configurazione non sono impostati come previsto. Se volete portare la vostra configurazione esistente a una nuova versione con il minimo sforzo, usate "make oldconfig", che vi chiederà solo le risposte per le nuove domande.
Comandi di configurazione alternativi sono:
"make config" Interfaccia di testo semplice.
"make menuconfig" Menu a colori basati su testo, radiolisti 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 basandosi sul contenuto del vostro file ./.config esistente e chiedendo informazioni sui nuovi simboli di configurazione.