Les actus du 15/06/2025

🐧 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 :

  1. 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).
  2. 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).
  3. 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.
  4. 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.

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 :

  1. Lire l’image
  2. Monter ses couches (overlayfs, etc.)
  3. Configurer l’isolation (namespaces, cgroups, etc.)
  4. 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 :

  1. Un hĂŽte FreeBSD (ou un noyau FreeBSD, mĂȘme dans une VM).
  2. 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 (ou ctr 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 :

  1. un binaire setuid root ;
  2. Ă  l’intĂ©rieur, une suite d’appels (seteuid(), setegid(), setgroups(), etc.) dans un ordre prĂ©cis (il faut en gĂ©nĂ©ral appeler setuid() en dernier pour ne pas perdre les privilĂšges avant d’avoir rĂ©glĂ© tous les autres IDs) ;
  3. 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.

Partagez cet article !