
Codice sorgente kernel Linux 4.1.15 con focus su CVE-2023-26607, che fornisce riferimento per analisi di vulnerabilità e comprensione del codice interessato.
Rilascio del kernel Linux 4.x http://kernel.org/
Queste sono le note di rilascio per la versione 4 di Linux. 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 gruppo eterogeneo di hacker sparsi per la Rete. Mira alla conformità con POSIX e con la Single UNIX Specification.
Ha tutte le funzionalità che ci si aspetta da un Unix moderno e completo, tra cui 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 la GNU General Public License - consulta il file COPYING allegato per maggiori dettagli.
SU QUALE HARDWARE FUNZIONA?
Sebbene sia stato sviluppato originariamente per PC a 32 bit basati su x86 (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 alla maggior parte delle architetture general-purpose a 32 o 64 bit, purché dispongano di una memory management unit a pagine (PMMU) e di una versione del compilatore GNU C (gcc) (parte di The GNU Compiler Collection, GCC). Linux è stato portato anche su alcune architetture senza PMMU, sebbene in quel caso le funzionalità siano ovviamente alquanto limitate. Linux è stato portato anche a sé stesso. Ora puoi eseguire il kernel come applicazione in spazio utente: questa modalità si chiama 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. Consiglierei di consultare le sottodirectory di documentazione su qualsiasi sito FTP Linux per i libri LDP (Linux Documentation Project). Questo README non vuole essere una documentazione del 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, ad esempio. Vedi Documentation/00-INDEX per un elenco di ciò che è contenuto in ogni file. Leggi il file Changes, poiché contiene informazioni sui problemi che potrebbero derivare dall'aggiornamento del tuo 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" renderizzerà la documentazione nel formato richiesto.
INSTALLAZIONE del sorgente del kernel:
Se installi i sorgenti completi, metti il tarball del kernel in una directory dove hai i permessi (es. la tua home directory) e decomprimilo:
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! Questa area contiene un set (di solito incompleto) di header del kernel che vengono usati dai file header delle librerie. Devono corrispondere alla libreria e non devono essere alterati da qualunque kernel del giorno capiti.
Puoi anche fare l'upgrade tra le release 4.x applicando le patch. Le patch sono distribuite in formato xz. Per installare tramite patch, scarica tutti i file di patch più recenti, entra nella directory di livello superiore del sorgente 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 sorgente corrente, 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 4.x di base. Ad esempio, se il tuo kernel di base è 4.0 e vuoi applicare la patch 4.0.3, non devi prima applicare le patch 4.0.1 e 4.0.2. Allo stesso modo, se stai eseguendo la versione 4.0.2 del kernel 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 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.
Assicurati di non avere file .o obsoleti e dipendenze in giro:
cd linux make mrproper
Ora 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 di questi pacchetti. Fai attenzione: usare 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 build o il funzionamento.
DIRECTORY di build per il kernel:
Quando si compila il kernel, tutti i file di output verranno per impostazione predefinita memorizzati insieme al codice sorgente del kernel. Usando l'opzione "make O=output/dir" puoi specificare un luogo alternativo per i file di output (incluso .config). Esempio:
codice sorgente del kernel: /usr/src/linux-4.X
directory di build: /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 viene usata l'opzione 'O=output/dir', deve essere usata per tutte le invocazioni di make.
CONFIGURAZIONE del kernel:
Non saltare questo passaggio anche se stai solo facendo l'upgrade di una versione minore. In ogni release vengono aggiunte nuove opzioni di configurazione e compariranno 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 lavoro, usa "make oldconfig", che ti chiederà solo le risposte alle nuove domande.
I comandi di configurazione alternativi sono:
"make config" Interfaccia di solo testo.
"make menuconfig" Menu colorati basati su testo, radiolist 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 default tutte le domande in base al contenuto del tuo file ./.config esistente e chiede informazioni sui nuovi simboli di configurazione.