
# Albero sorgente del kernel Linux 4.1.15 con patch per CVE-2023-28772, che fornisce un riferimento per l'analisi delle vulnerabilità e la ricerca sullo sfruttamento.
Linux kernel versione 4.x http://kernel.org/
Queste sono le note di rilascio per Linux versione 4. Leggile con attenzione, poiché ti 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'assistenza di un team informale di hacker sparsi su Internet. Mira alla conformità con POSIX e con la Single UNIX Specification.
Ha tutte le funzionalità che ci si aspetterebbe da uno Unix moderno e completo, incluso il vero multitasking, la memoria virtuale, le librerie condivise, il caricamento on-demand, gli eseguibili condivisi copy-on-write, una corretta gestione della memoria e il networking multistack, inclusi IPv4 e IPv6.
È distribuito sotto la GNU General Public License - consulta il file COPYING allegato per maggiori dettagli.
SU QUALE HARDWARE GIRA?
Sebbene originariamente sviluppato per PC basati su x86 a 32 bit (386 o superiori), 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 general-purpose 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 anche portato su alcune architetture senza PMMU, sebbene in tal caso la funzionalità sia ovviamente alquanto limitata. Linux è stato inoltre portato a sé stesso: ora puoi eseguire il kernel come applicazione in spazio utente, chiamata UserMode Linux (UML).
DOCUMENTAZIONE:
C'è molta documentazione disponibile sia in formato elettronico su Internet sia in libri, sia specifica per Linux sia relativa a questioni UNIX generali. Consiglio di consultare le sottodirectory di documentazione su qualsiasi sito FTP Linux per i libri del LDP (Linux Documentation Project). Questo README non vuole essere una documentazione sul sistema: ci sono fonti molto migliori disponibili.
Nella sottodirectory Documentation/ ci sono vari file README: in genere contengono note di installazione specifiche del kernel per alcuni driver, per esempio. Consulta Documentation/00-INDEX per un elenco di ciò che è contenuto in ogni file. Leggi anche 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 generate in diversi 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 dei sorgenti del kernel:
Se installi i sorgenti completi, metti il tarball del kernel in una directory su cui hai i permessi (ad es. la tua home directory) ed estrailo:
xz -cd linux-4.X.tar.xz | tar xvf -
Sostituisci "X" con il numero di versione dell'ultimo kernel.
NON usare l'area /usr/src/linux! Quest'area contiene un set (di solito incompleto) di header del kernel usati dai file header delle librerie. Devono corrispondere alla libreria e non devono essere rovinati da qualunque kernel-del-giorno ci sia in circolazione.
Puoi anche passare da una release 4.x all'altra tramite patch. Le patch sono distribuite nel formato xz. Per installare tramite patch, procurati tutti i file di patch più recenti, entra nella directory di livello superiore dei sorgenti del kernel (linux-4.X) ed esegui:
xz -cd ../patch-4.x.xz | patch -p1
Sostituisci "x" per tutte le versioni successive alla versione "X" del tuo albero dei sorgenti attuale, in ordine, e dovresti essere a posto. Potresti voler rimuovere i file di backup (some-file-name~ o some-file-name.orig) e assicurarti che non ci siano patch fallite (some-file-name# o some-file-name.rej). Se ce ne sono, o tu o io 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 base 4.x. Per esempio, se il tuo kernel di base è 4.0 e vuoi applicare la patch 4.0.3, non devi applicare prima le patch 4.0.1 e 4.0.2. Allo stesso modo, se stai usando la versione del kernel 4.0.2 e vuoi passare alla 4.0.3, devi prima annullare la patch 4.0.2 (cioè patch -R) prima di applicare la patch 4.0.3. Puoi leggere ulteriori informazioni 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 del comando sopra è la posizione dei sorgenti del kernel. Le patch vengono applicate dalla directory corrente, ma è possibile specificare una directory alternativa come secondo argomento.
Assicurati di non avere file .o obsoleti e dipendenze in giro:
cd linux make mrproper
A questo punto dovresti avere i sorgenti installati correttamente.
REQUISITI SOFTWARE
La compilazione e l'esecuzione dei kernel 4.x richiedono versioni aggiornate di vari pacchetti software. Consulta Documentation/Changes per i numeri di versione minimi richiesti e per sapere come ottenere gli 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 il funzionamento.
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. L'uso dell'opzione "make O=output/dir" consente di 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, usa:
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 stai solo aggiornando una versione minore. In ogni release vengono aggiunte nuove opzioni di configurazione e si presenteranno problemi strani se i file di configurazione non sono impostati come previsto. Se vuoi portare la tua configurazione esistente a una nuova versione con il minimo sforzo, usa "make oldconfig", che ti chiederà solo le risposte alle nuove domande.
I comandi di configurazione alternativi sono:
"make config" Interfaccia a testo semplice.
"make menuconfig" Menù colorati basati su testo, elenchi radio e finestre di dialogo.
"make nconfig" Menù 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" Assegna un valore predefinito a tutte le domande in base al contenuto del tuo file ./.config esistente e chiede informazioni sui nuovi simboli di configurazione.