debian

Cosa c'è di speciale in GNU/Linux 3.2.0

Sto fissando l'uscita di:

% file -b /lib/x86_64-linux-gnu/*.so | grep ", for"  | colrm 1 130 | sort -u
=5018237bbf012b4094027fd0b96fc22a24496ea4, for GNU/Linux 3.2.0, not stripped
9f21d, for GNU/Linux 3.2.0, stripped
bee51, for GNU/Linux 3.2.0, stripped
, for GNU/Linux 3.2.0, stripped
sha1]=2e5abcee94f3bcbed7bba094f341070a2585a2ba, for GNU/Linux 3.2.0, stripped

Cos'ha di speciale GNU/Linux 3.2.0? Questo è su un sistema Debian/bullseye (amd64).


In altre parole: quale API/funzionalità è stata introdotta in GNU/Linux 3.2.0 (modello di threading, funzioni di sicurezza...) che è così importante? L'impostazione esplicita della versione richiesta impedirà all'utente di utilizzare alcuni valori LD_ASSUME_KERNEL , quindi suppongo che ci sia una buona ragione per rifiutare vecchi valori come LD_ASSUME_KERNEL=2.4.19 (ad esempio).

In passato,la libreria GNU C aveva la sua versione minima del kernel periodicamente modificata,il che tipicamente permetteva una serie di semplificazioni.La libreria C contiene molto codice per gestire le variazioni tra le versioni del kernel,per esempio nuove chiamate di sistema usate preferibilmente quando possibile.Aumentare la versione minima del kernel significa che il codice che gestisce le vecchie variazioni può essere abbandonato.

3.2.0 è significativo solo in quanto è l'ultima versione del kernel per la quale la libreria GNU C ha attraversato questo processo. È stato avviato da Joseph Myers nel gennaio 2016 , quando 2.6.32 (la precedente versione minima del kernel) ha raggiunto la fine del suo ciclo di vita. 3.2 era l'allora più vecchio kernel supportato.

Il bump stesso è stato implementato in due commit, prima per tutte le architetture non x86 a febbraio 2016 e poi per le architetture x86 a maggio 2017 . (Il ritardo era correlato a problemi di supporto di OpenVZ.) C'erano molte altre patch di follow-up per rimuovere il codice non più necessario o semplificare il codice, ad esempio questa semplificazione di recvmmsg .

Questo non significa che la libreria GNU C non supporti le funzionalità aggiunte al kernel Linux dalla 3.2.0; lo fa, in vari modi. Alcune funzionalità sono supportate come miglioramenti ( es . clone3 ), altre sono semplicemente rese disponibili ( es . close_range ), altre sono rese disponibili con fallback di compatibilità ( cioè il lavoro svolto dalla nuova chiamata di sistema viene svolto dalla libreria se la chiamata di sistema non è disponibile).

Puoi anche creare la libreria C con un requisito per una determinata versione del kernel, con l' opzione di configurazione --enable-kernel .