đ§ Noyau Linux
EOL de la 6.14
La branche Linux 6.14 , publiĂ©e initialement le 24 mars 2025 , nâĂ©tant pas un noyau Ă support long terme (LTS), a atteint son End of Life (EOL) lors de la mise en ligne du point release 6.14.11 le 10 juin 2025. Ă partir de cette date, plus aucune correction ni mise Ă jour de sĂ©curitĂ© ne sera effectuĂ©e pour cette sĂ©rie (kernel.org).
Le noyau 6.14.11 a été publié par Greg Kroah-Hartman, responsable de la maintenance des branches stables, marquant officiellement la fin de vie de la série 6.14. Dans son annonce, il incite vivement les utilisateurs à passer à la série 6.15 , plus récente et toujours maintenue, afin de bénéficier des derniers correctifs de stabilité et de sécurité (lxer.com).
Parmi les réactions de la communauté :
- Tux Machines souligne lâimportance de migrer dĂšs que possible vers Linux 6.15 , rappelant que toute machine conservant la branche 6.14 restera vulnĂ©rable aux failles dĂ©couvertes aprĂšs la date dâEOL (news.tuxmachines.org).
- Phoronix profite de la sortie concomitante de Linux 6.15.2 pour décrire les améliorations de performance et les correctifs critiques, encourageant la mise à niveau immédiate des systÚmes de production (phoronix.com).
Liens utiles :
- Annonce officielle du noyau 6.14.11 [EOL] sur The Linux Kernel Archives (kernel.org)
- Article LXer : « Linux Kernel 6.14 Reaches End of Life, Itâs Time to Upgrade ⊠» (lxer.com)
- Article Tux Machines : « Linux Kernel 6.14 Reaches End of Life ⊠» (news.tuxmachines.org)
- News Phoronix : « Linux 6.15.2 Released » (liée à la migration recommandée) (phoronix.com)
Ăvolution de la branche 6.15
La branche Linux 6.15 a été officialisée par Linus Torvalds le 25 mai 2025 , aprÚs une période de tests comprenant huit versions candidates. Cette nouvelle mouture apportait notamment :
- Un premier aperçu du pilote Rust Nova pour GPU NVIDIA GSP, successeur de Nouveau (omgubuntu.co.uk, lkml.org)
- Des gains massifs de performances sur exFAT (suppression dâun fichier de 80 Go en ~1,6 s contre > 4 minutes auparavant) (gbhackers.com)
- De nombreuses évolutions réseau (zero-copy receive via io_uring, nouvelle option TCP_RTO_MAX_MS)
- Des amĂ©liorations du support ARM/RISC-V et de pilotes (Apple Touch Bar, Xbox Turtle Beach, Ethernet Killer E5000âŠ)
Linux 6.15.1 â 4 juin 2025
Moins dâune dizaine de jours aprĂšs la sortie de la branche 6.15, Greg Kroah-Hartman a publiĂ© la version 6.15.1 pour corriger principalement un problĂšme critique impactant certains portables Ă©quipĂ©s de GPU Qualcomm Snapdragon X1 : ceux-ci souffraient de surchauffe excessive , risquant dâendommager le matĂ©riel ou de provoquer des arrĂȘts intempestifs.
- Annonce officielle (message de Greg Kroah-Hartman) :
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.15.y (lwn.net)
- Article de réaction (Phoronix) : « Linux 6.15.1 Ships With Fix To Prevent Snapdragon X1 GPUs From Severely Overheating » (phoronix.com)
Linux 6.15.2 â 10 juin 2025
Quelques jours plus tard, la version 6.15.2 est sortie pour rĂ©soudre un rĂ©gression de consommation dâĂ©nergie au repos dĂ©couverte sur certains systĂšmes : les Ă©tats dâinactivitĂ© du CPU ne se dĂ©clenchaient plus correctement, entraĂźnant une consommation bien supĂ©rieure Ă la normale et rĂ©duisant lâautonomie sur portables ou systĂšmes embarquĂ©s.
- Annonce officielle (message de Greg Kroah-Hartman) :
Archive-link: https://lwn.net/Articles/1024715/ (lwn.net)
- Article de rĂ©action (Phoronix) : « Linux 6.15.2 Fixes « Quite DramaticallyâŠPotentially Dangerous » Idle Power Regression » (phoronix.com)
Conclusion :
La branche 6.15, riche en nouveautés, a rapidement nécessité deux point releases pour corriger des régressions matérielles critiques. Tous les utilisateurs de 6.15 sont vivement invités à passer à la version 6.15.2 pour bénéficier de ces correctifs de stabilité et de sécurité.
La future 6.16
Voici un aperçu des principales nouveautés attendues dans la série Linux 6.16 , actuellement en cours de stabilisation avant sa sortie finale prévue vers la fin juillet 2025.
Performances et systĂšmes de fichiers
- Optimisations dâEXT4 et Bcachefs
Linux 6.16 introduit des améliorations majeures sur EXT4 (support des « large folios » pour des écritures plus rapides et commits atomiques) ainsi que des évolutions notables dans Bcachefs, visant à augmenter les débits et réduire la latence sur gros volumes de données (phoronix.com, serverhost.com).
- XFS et EROFS
LâĂ©criture atomique multi-blocs pour XFS permet dĂ©sormais dâassurer lâintĂ©gritĂ© des mĂ©tadonnĂ©es, tandis quâEROFS profite des accĂ©lĂ©raÂtions matĂ©rielles Intel QAT pour amĂ©liorer les performances de dĂ©compression DEFLATE (serverhost.com).
Support matériel élargi
- Cartes graphiques NVIDIA Hopper/Blackwell
Le pilote Nouveau prend enfin en charge les architectures GPU Hopper et Blackwell, offrant une prise en charge open source plus complÚte des cartes récentes (phoronix.com, serverhost.com).
- Technologies Intel APX et ACR
PrĂ©paration Ă la nouvelle architecture Intel APX (Advanced Performance Extensions) ainsi quâau mĂ©canisme Auto Counter Reload, permettant un comptage matĂ©riel plus prĂ©cis pour lâanalyse de performances (phoronix.com, serverhost.com).
- CXL RAS
La branche 6.16 intÚgre pour la premiÚre fois les fonctionnalités RAS de CXL (Patrol Scrub, Error Check Scrub, Memory Sparing), renforçant la fiabilité mémoire sur plateformes prenant en charge CXL (phoronix.com).
- RISC-V SBI Firmware Features
Ajout du support de lâextension Firmware Features (FWFT) de lâinterface SBI pour RISC-V, ouvrant la voie Ă une meilleure interaction avec le firmware et aux futures Ă©volutions de la plate-forme (phoronix.com).
Nouveaux services et outils
- Service systemd pour cpupower
Un nouveau service systemd permet de gĂ©rer automatiquement les frĂ©quences CPU via cpupower, simplifiant lâadministration des politiques dâĂ©conomie dâĂ©nergie et de performance (serverhost.com).
- Comptage des lockups par sysfs
Les locks durs et doux (hard/soft lockups) sont désormais exposés via des compteurs sysfs, facilitant le diagnostic et la supervision des blocages systÚme (phoronix.com).
Renforcement de la sécurité et Rust
- Clés chiffrées hardware-wrapped pour fscrypt
Intégration du support des clés protégées matériellement (hardware-wrapped) dans fscrypt, augmentant la sécurité du chiffrement de données (serverhost.com).
- Extensions Rust
De nouvelles abstractions Rust sont introduites dans le cĆur du noyau (gestion de listes, boucles locksafeâŠ), poursuivant la montĂ©e en puissance de Rust comme langage de dĂ©veloppement de modules (phoronix.com).
Conclusion
Le cycle de merge window pour 6.16 Ă©tant fermĂ© depuis le 8 juin (RC1), la pĂ©riode Ă venir sera dĂ©diĂ©e aux tests et Ă la correction des derniers bugs. Les sept Ă huit Release Candidates hebdomadaires qui suivront prĂ©pareront la version stable, attendue fin juillet ou dĂ©but aoĂ»t 2025. NâhĂ©sitez pas Ă tester la RC1 pour remonter dâĂ©ventuels problĂšmes avant la publication finale.
Rappel des publications des noyaux
Voici un rappel du cycle de publication du noyau Linux, avec la durée de support associée à chaque type de branche :
1. Branches non-LTS (Mainline)
- Merge Window (2 semaines)
ImmĂ©diatement aprĂšs chaque sortie stable, la « fenĂȘtre de fusion » ouvre pendant 2 semaines pour intĂ©grer toutes les nouvelles fonctionnalitĂ©s et gros patches.
- Release Candidates (6 â 8 semaines)
Chaque semaine, une Release Candidate (rc1, rc2, âŠ) est publiĂ©e pour corriger les bugs remontĂ©s. En gĂ©nĂ©ral, on compte 6 Ă 8 RCs , soit 1,5 Ă 2 mois de stabilisation.
- Version stable
AprĂšs la derniĂšre RC, Linus Torvalds tague la version stable (par ex. 6.16).
- Support post-release
Cette branche « non-LTS » reçoit ensuite quelques point-releases correctives (X.Y.1, X.Y.2âŠ) durant environ 1 Ă 2 mois , jusquâĂ ce que la suivante (merge window) prenne le relais.
Impact pour les distributions « cutting edge »
Elles peuvent adopter la derniÚre version stable dÚs sa sortie, mais doivent assurer un suivi trÚs régulier des regressions et maintenir un cycle de tests continu.
2. Branches LTS (Long-Term Support)
Certaines versions majeures sont désignées LTS par la Linux Foundation et Greg Kroah-Hartman :
Version LTS | Date de sortie | Fin de support officiel |
---|---|---|
6.1 | 11 dĂ©c. 2022 | 31 dĂ©c. 2027 (â 5 ans) (endoflife.date) |
5.15 | 31 oct. 2021 | 31 oct. 2026 (5 ans) (endoflife.date) |
5.10 | 13 déc. 2020 | 31 déc. 2026 (6 ans) (endoflife.date) |
5.4 | 25 nov. 2019 | 31 déc. 2025 (6 ans) (endoflife.date) |
- Durée typique : 2 à 6 ans selon la version et la demande.
- Backports uniquement : seules les corrections de sécurité et de stabilité sont acceptées.
- Point-releases rĂ©guliĂšres : environ tous les 2â4 mois, un patch-release (X.Y.Z) est publiĂ© pour intĂ©grer les derniĂšres corrections upstream.
Impact pour les distributions stables (Debian Stable, RHEL, Ubuntu LTSâŠ)
Elles privilégient les noyaux LTS pour garantir une stabilité multi-annuelle et limiter le nombre de tests fonctionnels.
3. Branches SLTS (Super-Long-Term Support)
Le Civil Infrastructure Platform (CIP) prolonge certaines LTS en SLTS :
- Versions concernées : 4.4-cip, 4.19-cip, 5.10-cip, 6.1-cip (et bientÎt 6.12-cip).
- DurĂ©e de support : jusquâĂ 10 ans (voire plus, thĂ©oriquement jusquâĂ 15 ans selon les besoins industriels) (wiki.linuxfoundation.org).
- Objectif : rĂ©pondre aux cycles de vie trĂšs longs (25 â 50 ans) des infrastructures critiques.
Impact pour les éditeurs industriels
Permet de sâappuyer sur un noyau stable sur une dĂ©cennie, sans avoir Ă internaliser tous les backports.
SynthĂšse de lâimpact pour les distributions
Type de branche | Fréquence de sortie | Durée de support | Charge de maintenance |
---|---|---|---|
Mainline | â 3 mois (stable) | â 2 mois | TrĂšs Ă©levĂ©e |
LTS | â 2 ans (sĂ©lection) | 2 â 6 ans | ModĂ©rĂ©e |
SLTS/CIP | Selon LTS + CIP | JusquâĂ 10 ans | Faible (backports) |
Chaque distribution choisit le bon compromis entre accÚs aux nouveautés , stabilité et charge de tests , en fonction de son modÚle (rolling vs release, usage industriel vs grand public, etc.).
DCO : révolution performance OpenVPN
Sources:
https://docs.netgate.com/pfsense/en/latest/vpn/openvpn/dco.html
https://blog.openvpn.net/openvpn-data-channel-offload/
https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg21065.html
https://patchwork.kernel.org/project/netdevbpf/patch/20220803153152.11189-1-antonio@openvpn.net/
Le pilote DCO (Data Channel Offload) qui vient dâĂȘtre intĂ©grĂ© au noyau Linux reprĂ©sente une avancĂ©e majeure pour les performances OpenVPN, avec des gains de dĂ©bit jusquâĂ 8 fois supĂ©rieurs grĂące Ă lâĂ©limination des commutations coĂ»teuses entre espaces utilisateur et noyau. Cette innovation architecturale divise OpenVPN en deux plans : le plan de contrĂŽle reste en espace utilisateur pour la sĂ©curitĂ©, tandis que le plan de donnĂ©es migre vers lâespace noyau pour les performances. AcceptĂ© officiellement dans le noyau Linux 6.16 en avril 2025 aprĂšs des annĂ©es de dĂ©veloppement, DCO transforme OpenVPN dâune solution purement userspace vers une implĂ©mentation hybride noyau/utilisateur qui conserve la sĂ©curitĂ© tout en maximisant lâefficacitĂ©.
Définition et signification de DCO
DCO signifie « Data Channel Offload » (DĂ©chargement du Canal de DonnĂ©es), un module noyau Linux qui dĂ©place le traitement des donnĂ©es OpenVPN de lâespace utilisateur vers lâespace noyau. Cette architecture rĂ©volutionnaire sĂ©pare les fonctions OpenVPN en deux plans distincts :
Le plan de contrĂŽle demeure en espace utilisateur pour gĂ©rer les aspects sĂ©curitaires critiques : handshake TLS, nĂ©gociation SSL/TLS (y compris TLS 1.3), authentification des pairs, Ă©change de clĂ©s, gestion de configuration et traitement des erreurs. Le plan de donnĂ©es migre vers lâespace noyau pour optimiser les performances : chiffrement/dĂ©chiffrement des paquets, transmission et routage, intĂ©gration avec lâaccĂ©lĂ©ration matĂ©rielle, et traitement multi-threadĂ©.
Cette sĂ©paration permet Ă DCO de conserver le modĂšle de sĂ©curitĂ© Ă©prouvĂ© dâOpenVPN tout en Ă©liminant le goulot dâĂ©tranglement principal qui limitait les performances : les commutations de contexte rĂ©pĂ©tĂ©es entre espaces noyau et utilisateur pour chaque paquet de donnĂ©es.
Intégration récente au noyau Linux
LâintĂ©gration de DCO au noyau Linux sâest dĂ©roulĂ©e sur plusieurs annĂ©es avec un processus de dĂ©veloppement rigoureux. Le dĂ©veloppement initial a commencĂ© en 2020 sous la direction dâAntonio Quartulli dâOpenVPN Inc., crĂ©ant dâabord un module externe ovpn-dco
maintenu sur GitHub.
La premiĂšre soumission RFC aux listes de diffusion du noyau Linux (LKML) a eu lieu en juillet 2022, dĂ©clenchant un processus dâexamen intensif de la communautĂ© noyau. AprĂšs plus de 25 rĂ©visions de patches et des annĂ©es dâitĂ©rations, le pilote DCO a Ă©tĂ© officiellement acceptĂ© le 17 avril 2025 pour inclusion dans le noyau Linux 6.16.
Cette intĂ©gration mainline Ă©limine le besoin dâinstaller des modules externes et garantit une disponibilitĂ© automatique dans les futures distributions Linux. LâimplĂ©mentation officielle utilise le nom de module ovpn
(remplaçant ovpn-dco
) et bénéficie de mises à jour de sécurité automatiques via les patches noyau.
Avantages techniques et performances
Les gains de performance de DCO sont spectaculaires. Les tests officiels sur un processeur AMD ThreadRipper 3970x montrent des améliorations dramatiques : OpenVPN traditionnel atteignait 370 Mbps, DCO cÎté client seulement permet ~1 110 Mbps (amélioration de 3x), tandis que DCO des deux cÎtés atteint ~2 950 Mbps (amélioration de 8x).
Ces performances proviennent de plusieurs optimisations techniques clĂ©s. LâĂ©limination des commutations de contexte supprime le coĂ»t CPU Ă©levĂ© des transferts rĂ©pĂ©tĂ©s entre espaces noyau et utilisateur. Le traitement multi-threadĂ© permet le chiffrement parallĂšle sur plusieurs cĆurs CPU, contrastant avec lâapproche mono-thread traditionnelle.
LâintĂ©gration avec lâaccĂ©lĂ©ration matĂ©rielle exploite directement les API crypto noyau et les capacitĂ©s dâaccĂ©lĂ©ration : Intel QAT pour les performances maximales AES-256-GCM, IPsec-MB pour de bonnes performances multi-algorithmes, AES-NI pour lâaccĂ©lĂ©ration matĂ©rielle de base, et un fallback logiciel qui offre encore des gains significatifs.
Les opĂ©rations zĂ©ro-copie minimisent les copies mĂ©moire, le traitement par lots process plusieurs paquets ensemble, et lâutilisation dâinstructions SIMD exploite les capacitĂ©s vectorielles CPU pour optimiser davantage les performances.
Fonctionnement technique détaillé
Lâarchitecture DCO implĂ©mente une intĂ©gration sophistiquĂ©e avec les sous-systĂšmes de rĂ©seau Linux. Le module crĂ©e des interfaces rĂ©seau virtuelles de type ovpn
qui implémentent les opérations netdev standard et supportent IPv4 et IPv6.
Le chemin de rĂ©ception (RX) des paquets suit un pipeline optimisĂ© : rĂ©ception des paquets chiffrĂ©s par la pile rĂ©seau, dĂ©multiplexage socket pour router vers la bonne interface ovpn, dĂ©chiffrement via lâAPI crypto noyau, validation et authentification de lâintĂ©gritĂ© des paquets, puis routage vers lâinterface rĂ©seau appropriĂ©e.
Le chemin de transmission (TX) inverse le processus : rĂ©ception des paquets depuis lâinterface virtuelle, chiffrement avec les clĂ©s spĂ©cifiques au pair, encapsulation avec les en-tĂȘtes protocole OpenVPN, puis transmission via socket UDP/TCP vers le pair distant.
DCO utilise une API Netlink gĂ©nĂ©rique pour la communication espace utilisateur, permettant la crĂ©ation/destruction dâinterfaces, la gestion des pairs (ajout/suppression/Ă©numĂ©ration), les opĂ©rations de clĂ©s (ajout/suppression/rotation), et les requĂȘtes statistiques. Cette API garantit une intĂ©gration propre avec lâĂ©cosystĂšme Linux existant.
Limitations et considérations actuelles
Malgré ses avantages, DCO présente des limitations importantes à considérer. Le support chiffrement est restreint aux algorithmes AEAD uniquement : AES-256-GCM, AES-128-GCM, et ChaCha20-Poly1305. Le protocole transport est limité à UDP uniquement, sans support TCP.
Les configurations rĂ©seau ne peuvent pas utiliser de rĂ©seaux tunnel /30 ou infĂ©rieurs, et le routage interne OpenVPN (iroute) nâest pas supportĂ©. Les fonctionnalitĂ©s de compression sont dĂ©sactivĂ©es avec DCO, et le support bridging est limitĂ©.
DCO nĂ©cessite OpenVPN 2.6.0 ou ultĂ©rieur et fonctionne uniquement avec des tunnels basĂ©s TLS. Lâinstallation requiert les en-tĂȘtes noyau Linux, et certaines fonctionnalitĂ©s OpenVPN legacy ne sont pas compatibles. Le suivi dâutilisation donnĂ©es per-peer nâest pas prĂ©cis, et les systĂšmes secure boot nĂ©cessitent une configuration additionnelle.
Adoption industrielle et perspectives
Lâadoption de DCO sâaccĂ©lĂšre significativement dans lâindustrie. OpenVPN Inc. lâa intĂ©grĂ© dans OpenVPN 2.6.0+ et Access Server 2.12.0+. Netgate/pfSense propose DCO dans pfSense Plus 22.05+, et Microsoft Windows dispose dâun pilote DCO pour Windows 10 20H1+.
Les dĂ©ploiements en production incluent CloudConnexa dâOpenVPN et plusieurs fournisseurs VPN majeurs. LâintĂ©gration mainline dans Linux 6.16 garantit une disponibilitĂ© automatique future dans toutes les distributions Linux modernes.
Les perspectives dâavenir sont prometteuses : Ă©limination complĂšte des modules externes, mises Ă jour sĂ©curitĂ© automatiques, support Ă©tendu pour pĂ©riphĂ©riques embarquĂ©s, et dĂ©veloppement continu pour compatibilitĂ© fonctionnalitĂ©s additionnelles.
Conclusion
Le pilote DCO reprĂ©sente une Ă©volution architecturale majeure qui transforme OpenVPN dâune application purement userspace vers une implĂ©mentation hybride noyau/utilisateur sophistiquĂ©e. En dĂ©plaçant le plan de donnĂ©es critique pour les performances vers lâespace noyau tout en prĂ©servant le plan de contrĂŽle sĂ©curitaire en espace utilisateur, DCO atteint des amĂ©liorations de performance dramatiques sans compromettre le modĂšle de sĂ©curitĂ© dâOpenVPN.
Cette innovation positionne OpenVPN comme une solution VPN haute performance compĂ©titive, particuliĂšrement adaptĂ©e aux environnements entreprise nĂ©cessitant dĂ©bit Ă©levĂ© et efficacitĂ©. LâintĂ©gration mainline dans Linux 6.16 valide lâapproche technique et assure une disponibilitĂ© et un support long terme, faisant de DCO un choix attractif pour les dĂ©ploiements VPN modernes exigeants.
FreeBSD 14.3 est de sortie
FreeBSD cĂ©lĂšbre le 10 juin 2025 la sortie de sa version 14.3, quatriĂšme mise Ă jour de maintenance de la branche stable 14. FidĂšle Ă sa philosophie « Engineering OS », cette release nâa rien dâune rĂ©volution : elle affine et consolide les fondations posĂ©es par FreeBSD 14.0 en novembre 2023, tout en prĂ©parant la voie vers FreeBSD 15, attendu fin 2025.
Un hĂ©ritage de stabilitĂ© et dâinnovation
Depuis ses origines, en novembre 1993, FreeBSD sâest imposĂ© comme un systĂšme dâexploitation performant et fiable. La version 9.0, parue en janvier 2012, marque le premier grand tournant moderne en remplaçant GNU GCC par Clang/LLVM, une dĂ©cision qui libĂšre le projet des contraintes de licence et amĂ©liore la qualitĂ© du code . Deux ans plus tard, FreeBSD 10.0 introduit bhyve , son hyperviseur de type 1, et achĂšve la transition vers des outils sous licence BSD (gcc, gdb, BIND remplacĂ©s par Clang/LLVM, LLDB et Unbound), posant les bases dâune virtualisation lĂ©gĂšre et fiable .
En avril 2021, la branche 13 enrichit encore le noyau : isolation accrue des pilotes rĂ©seau, support natif de WireGuard et renforcement de la pile ARM 64 bits, utilisĂ©s notamment sur Raspberry Pi et AWS . Puis, en novembre 2023, FreeBSD 14.0 franchit un nouveau cap : le systĂšme de fichiers OpenZFS 2.2, la prise en charge du TPM et du GPU passthrough dans bhyve, la gestion de jusquâĂ 1024 cĆurs CPU et la possibilitĂ© dâexĂ©cuter fsck UFS en tĂąche de fond viennent renforcer la robustesse et la flexibilitĂ© de lâOS .
FreeBSD 14.3 : raffinement et modernisation
La version 14.3, disponible dĂšs maintenant, agrĂ©mente la branche 14 de mises Ă jour ciblĂ©es. Parmi les nouveautĂ©s phares, on note dâabord un support Wi-Fi modernisĂ© : le pilote Intel iwlwifi gĂšre enfin le mode 802.11ac/ax (Wi-Fi 5/6 et certaines puces Wi-Fi 7), fruit dâun effort soutenu de la FreeBSD Foundation et dâun enrichissement du LinuxKPI. Les drivers Realtek rtw88 et rtw89 importĂ©s depuis Linux viennent corriger diverses fuites mĂ©moire et problĂšmes dâassociation, comblant un retard notable face Ă Linux .
Le LinuxKPI (Linux Kernel Programming Interface) est une couche de compatibilitĂ© qui permet de porter des pilotes Linux (notamment les drivers Wi-Fi, GPU, etc.) dans lâenvironnement FreeBSD avec un minimum de modifications :
- Principe
- Ensemble de fichiers dâenâtĂȘte C (
.h
) et de stubs qui rĂ©interprĂštent les appels dâAPI Linux (les « KPI ») vers les fonctions Ă©quivalentes de FreeBSD. - Lâobjectif est que le code source original du pilote Linux puisse ĂȘtre compilĂ© et exĂ©cutĂ© quasiment « tel quel » sous FreeBSD (cdaemon.com).
- Ensemble de fichiers dâenâtĂȘte C (
- Usage courant
- drm-kmod (pilotes graphiques Intel/AMD) sâappuie sur LinuxKPI pour porter le code DRM de Linux, avec quelques ajustements spĂ©cifiques FreeBSD.
- Les pilotes Wi-Fi modernes (iwlwifi, rtw88, rtw89) utilisent LinuxKPI pour gérer les interfaces 802.11ac/ax sans repartir de zéro (freebsdfoundation.org).
- Avantages
- Gain de temps : pas besoin de réécrire entiÚrement les pilotes Linux sous FreeBSD.
- Mises à jour plus rapides : adopter les correctifs et nouvelles fonctionnalités des drivers Linux en grande partie.
- Limites et perspectives
- Couverture incomplĂšte : certaines interfaces Linux nâĂ©tant pas mappĂ©es, il peut manquer des fonctionnalitĂ©s (ex.
debugfs
) ou apparaĂźtre des rĂ©gressions de performance. - Travail de « clean room » nĂ©cessaire pour réécrire sous licence BSD le code GPL des parties non compatibles, afin dâĂ©viter tout problĂšme de licence.
- Couverture incomplĂšte : certaines interfaces Linux nâĂ©tant pas mappĂ©es, il peut manquer des fonctionnalitĂ©s (ex.
En rĂ©sumĂ©, LinuxKPI est la brique technique qui fait de FreeBSD une plateforme capable dâhĂ©berger rapidement les pilotes Linux, tout en conservant la cohĂ©rence et la fiabilitĂ© du noyau FreeBSD.
Pour répondre aux pratiques de déploiement actuelles, FreeBSD 14.3 publie également des images officielles au format OCI , disponibles sur Docker Hub et GitHub Packages. Elles permettent de tester et déployer FreeBSD dans un conteneur sans passer par une machine virtuelle complÚte .
1. OCI, câest un format, pas un moteur dâexĂ©cution
LâOCI dĂ©finit uniquement :
- Un format dâimages (couches, mĂ©tadonnĂ©es)
- Une API de bas-niveau pour démarrer un conteneur (le runtime)
Mais il nâimpose pas le noyau utilisĂ© : Linux, FreeBSD, Windows⊠(en.wikipedia.org).
En pratique, un runtime OCI (comme runc
sur Linux) va :
- Lire lâimage
- Monter ses couches (overlayfs, etc.)
- Configurer lâisolation (namespaces, cgroups, etc.)
- Lancer le processus dans le conteneur
Sur FreeBSD, les mécanismes équivalents existent (jails, VNET, flags de sécurité), mais le runtime Linux (runc
) ne fonctionnera pas directement.
2. Docker « standard » ne tourne pas nativement sur FreeBSD
- Le Docker Engine officiel (daemon +
dockerd
) est conçu pour Linux et sâappuie lourdement sur les namespaces et cgroups du noyau Linux. - Il nâexiste pas de port officiel de Docker Engine sur FreeBSD.
Vous ne pouvez donc pas dĂ©marrer un conteneur FreeBSD (ou mĂȘme Linux) avec le Docker Engine « out-of-the-box » sous FreeBSD.
3. Pour exécuter une image OCI FreeBSD
Il faut :
- Un hĂŽte FreeBSD (ou un noyau FreeBSD, mĂȘme dans une VM).
- Un runtime OCI adapté à FreeBSD , capable de transformer une image OCI en jail FreeBSD.
Quelques options expérimentales :
- runj : proof-of-concept dâun runtime OCI pour jails FreeBSD (samuel.karp.dev, freshports.org).
- containerd + nerdctl sur FreeBSD, avec
containerd-shim-runj-v1
pour dĂ©lĂ©guer lâexĂ©cution Ă runj (wiki.freebsd.org).
Exemple sommaire de mise en place :
pkg install runj containerd nerdctl
service containerd start
# Pull de l'image FreeBSD
nerdctl pull freebsd:14.3
# Exécution en tant que jail via runj
nerdctl run --rm freebsd:14.3 uname -a
4. Pourquoi Docker Hub et GitHub ?
Publier sur Docker Hub/GitHub Container Registry facilite lâaccĂšs :
- Vous pouvez faire un
docker pull freebsd:14.3
(ouctr images pull ghcr.io/freebsd/14.3
) depuis nâimporte quel poste⊠- âŠmais pour en tirer parti, câest votre runtime (sur FreeBSD) ou une VM FreeBSD qui doit prendre le relais.
En revanche, tenter de lancer docker run freebsd:14.3
sur un hÎte Linux échouera : le noyau Linux ne peut pas directement exécuter un binaire FreeBSD.
Au cĆur du noyau, un nouvel appel systĂšme setcred()
offre dĂ©sormais la possibilitĂ© de dĂ©finir en une seule opĂ©ration lâensemble des identitĂ©s dâun processus (UID/GID rĂ©els, effectifs et Ă©tiquetage MAC), renforçant la granularitĂ© du contrĂŽle Mac Policy. La gestion des jails sâenrichit elle aussi : on peut dĂ©sormais configurer des paramĂštres sysctl Ă distance pour une jail enfant (donc sans avoir besoin de sây connecter en ssh ou console) et utiliser un nĆud « mac » commun pour ses rĂ©glages MAC,
- MAC ici signifie Mandatory Access Control , câest-Ă -dire les mĂ©canismes de contrĂŽle dâaccĂšs obligatoires (modules comme
mac_biba
,mac_mls
,mac_portacl
, etc.). - Chaque jail pouvait dĂ©jĂ ĂȘtre associĂ©e Ă un ou plusieurs labels MAC, mais avec la granularitĂ© limitĂ©e au moment de la crĂ©ation.
- NĆud âmacâ commun : on dispose maintenant dâun seul point de configuration (une arborescence sysctl ou un pseudo-systĂšme de fichiers dans
/sys
signalant âmacâ) qui regroupe tous les rĂ©glages MAC applicables Ă la jail enfant. - Cela permet de consulter et modifier en un mĂȘme endroit lâintĂ©gralitĂ© des politiques MAC (par exemple : quels processus ou quels fichiers la jail peut accĂ©der) sans avoir Ă jongler avec plusieurs interfaces ou rĂ©pertoires.
tandis que VNET gagne des tunables rĂ©seau spĂ©cifiques Ă chaque jail dĂšs lâamorçage .
-
VNET : câest la fonctionnalitĂ© de FreeBSD qui donne Ă chaque jail son propre pile rĂ©seau virtuelle (interfaces, routage, pare-feu, etc.), isolĂ©e du reste de lâhĂŽte et des autres jails.
-
Tunables rĂ©seau : variables de configuration du sous-systĂšme rĂ©seau (tailles de buffer, queues, comportements de congestion, etc.) quâon peut rĂ©gler au dĂ©marrage du noyau via
/boot/loader.conf
ou dynamiquement via sysctl. -
SpĂ©cifiques Ă chaque jail dĂšs lâamorçage signifie quâau moment oĂč la jail est lancĂ©e, on peut lui appliquer directement des valeurs de tunables rĂ©seau diffĂ©rentes de celles de lâhĂŽte ou dâautres jails, sans nĂ©cessiter de rĂ©glages manuels aprĂšs coup.
-
ConcrÚtement, on pourrait écrire dans la configuration de la jail :
ini CopierModifier vnet = new; vnet.interface = epair0b; vnet.sysctl.net.inet.tcp.sendbuf_max = 262144; vnet.sysctl.net.ip.forwarding = 1;
et ces paramĂštres seront pris en compte automatiquement au boot de la jail.
La stack OpenZFS passe en version 2.2.7, intégrant les derniÚres optimisations de compression LZ4 et des correctifs de performance, et le bootloader UEFI voit sa compatibilité avec les tables SMBIOS 64 bits consolidée pour les machines récentes .
Sécurité et performances consolidées
Le chantier sĂ©curitĂ© englobe lâintĂ©gration de tous les advisories depuis la 14.2 : correctifs dans OpenSSH, NFS, ktrace, et mise Ă jour dâOpenSSL 3.0.16 avec un bundle de certificats racine rafraĂźchi. Le firewall pf propose un nouveau tunable, net.pf.default_to_drop
, pour basculer en « default deny » sans recompilation du noyau . CÎté userland, les utilitaires sont actualisés : xz 5.8.1, expat 2.7.1, less 668 et LLVM/Clang 19.1.7 viennent optimiser le quotidien des administrateurs.
Réactions et impact
Lâaccueil de FreeBSD 14.3 est largement positif. Sur Reddit, la communautĂ© salue unanimement le support Wi-Fi amĂ©liorĂ©, mĂȘme si quelques retours sur des cas limites subsistent . Un utilisateur illustre bien lâamour-haine entretenu avec FreeBSD : « Jâai rĂ©installĂ© la 14.2 puis fait la mise Ă jour vers 14.3 : lĂ le Wi-Fi marche⊠et câest le driver graphique qui lĂąche ! »
https://www.reddit.com/r/freebsd/comments/1l7l23z/freebsd_143release_announcement/#:~:text=Instalei e o Wi,caso de amor e Ăłdio
Sur le plan Ă©cosystĂ©mique, pfSense et OPNsense profiteront directement des correctifs et de la meilleure prise en charge des chipsets Intel i225/i226 pour leurs appliances. Quant Ă TrueNAS Core, iXsystems a dĂ©jĂ orientĂ© ses dĂ©veloppements vers TrueNAS Scale (Linux), mais la 14.3 amĂ©liore la prise en charge du 100 GbE et corrige plusieurs bugs NFS qui pourraient bĂ©nĂ©ficier aux dĂ©ploiements FreeBSD. De son cĂŽtĂ©, Netflix , utilisateur historique pour son CDN Open Connect, dĂ©ploie gĂ©nĂ©ralement les commits FreeBSD en 5â15 semaines, atteignant jusquâĂ 90 Gb/s de trafic TLS par serveur avec seulement 55 % de CPU, dĂ©monstration de la robustesse de lâOS .
FreeBSD 14.3 nâest pas une rĂ©volution, mais une Ă©tape solide qui renforce les atouts dâun systĂšme dĂ©jĂ rĂ©putĂ© pour sa fiabilitĂ© et sa performance. Elle prĂ©pare le terrain pour FreeBSD 15, qui marquera la fin du support des plateformes 32 bits et inaugurera la prochaine Ăšre de lâingĂ©nierie systĂšme BSD.
Nouvel appel systĂšme FreeBSD 14.3
Le nouvel appel systĂšme setcred()
introduit dans FreeBSD 14.3 nâest pas un mĂ©canisme de crĂ©ation de nouveaux processus, mais un moyen atomique de modifier en une seule fois lâensemble des credentials (UID rĂ©el, effectif et sauvĂ© ; GID rĂ©el, effectif et sauvĂ© ; groupes supplĂ©mentaires ; et mĂȘme le label MAC) du processus courant.
1. Pourquoi pas les appels traditionnels ?
Historiquement, pour changer dâidentitĂ© (par exemple passer dâun UID 0 Ă un UID non privilĂ©giĂ©) on utilisait :
- un binaire setuid root ;
- Ă lâintĂ©rieur, une suite dâappels (
seteuid()
,setegid()
,setgroups()
, etc.) dans un ordre précis (il faut en général appelersetuid()
en dernier pour ne pas perdre les privilĂšges avant dâavoir rĂ©glĂ© tous les autres IDs) ; - un fork/exec si lâon veut lancer un autre programme sous cette nouvelle identitĂ©.
Ce âmontage en plusieurs Ă©tapesâ a deux inconvĂ©nients principaux :
- fenĂȘtre dâexposition : entre les appels, le processus peut temporairement avoir des droits intermĂ©diaires (ni root, ni lâutilisateur cible), ce qui ouvre une surface dâattaque pour un Ă©ventuel exploit.
- manque de contrĂŽle fin : le noyau ne peut pas appliquer de politique MAC (« Mandatory Access Control ») en connaissant Ă la fois lâensemble des anciens et nouveaux credentials, puisquâil voit chaque appel sĂ©parĂ©ment. (man.freebsd.org)
2. Que fait setcred()
?
- AtomicitĂ© : tous les champs de credentials passent de lâancien Ă©tat au nouvel Ă©tat dans un mĂȘme appel. Il nây a pas de moment oĂč le processus est dans un Ă©tat âintermĂ©diaireâ potentiellement dangereux.
- Hooks MAC : le framework MAC (en particulier le module mac_do(4)) peut regarder avant et aprĂšs lâappel pour dĂ©cider si la transition est lĂ©gitime, selon des rĂšgles administrateur. Par ex., on peut autoriser le passage de root Ă un UID prĂ©cis avec certains groupes, mais interdire tout autre mĂ©lange (lists.freebsd.org).
- Pas besoin de nouveaux processus : contrairement Ă un fork/exec, le mĂȘme PID change simplement ses credentials. Utile dans des dĂ©mons qui doivent temporairement âsâabaisserâ en privilĂšges pour effectuer une tĂąche, puis remonter (ou vice-versa) sans recrĂ©er de processus.
3. Exemple dâusage simplifiĂ©
#include <sys/syscall.h>
#include <unistd.h>
#include <err.h>
#include <sys/types.h>
#include <sys/ucred.h>
struct setcred {
uid_t uid;
uid_t ruid;
uid_t svuid;
gid_t gid;
gid_t rgid;
gid_t svgid;
int ngroups;
gid_t *groups;
/* optionnel : MAC label */
void *mac_label;
};
int
main(int argc, char **argv)
{
struct setcred sc;
gid_t grplist[] = {100, 101};
sc.uid = 1000; /* nouvel effective UID */
sc.ruid = 1000; /* real UID */
sc.svuid = 1000; /* saved UID */
sc.gid = 1000;
sc.rgid = 1000;
sc.svgid = 1000;
sc.ngroups = 2;
sc.groups = grplist;
sc.mac_label = NULL; /* pas de changement de label */
if (syscall(SYS_setcred, SETCREDF_UID|SETCREDF_GID|SETCREDF_GROUPS,
&sc, sizeof(sc)) < 0)
err(1, "setcred");
/* Ă partir dâici, le processus est passĂ© en UID/GID 1000 atomiquement */
/* ... */
return 0;
}
Ici, le flag passé en premier argument (une combinaison de SETCREDF_UID
, SETCREDF_GID
, SETCREDF_GROUPS
, etc.) indique quels champs de struct setcred
doivent ĂȘtre pris en compte.
4. Bénéfices concrets
Caractéristique | Ancien mode (setuid +binaires) |
Avec setcred() |
---|---|---|
Atomicité | Non (en plusieurs appels) | Oui (tout dans un seul appel) |
Surface dâattaque | FenĂȘtre entre appels | Nulle pour la transition |
Politique MAC | Impossible de voir transition globale | Possible via hooks MAC/do |
Création de process | Souvent fork+exec | Pas nécessaire |
En résumé
LâintĂ©rĂȘt de setcred()
nâest pas de crĂ©er un nouveau processus, mais de transformer en toute sĂ©curitĂ© et atomiquement les credentials dâun processus existant, tout en sâintĂ©grant Ă la couche MAC de FreeBSD pour un contrĂŽle fin des transitions.