Après 11 mois de développement, la version FreeBSD 13.2 a été publiée. Des images d'installation ont été créées pour les architectures amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 et riscv64. Des compilations pour les systèmes de virtualisation (QCOW2, VHD, VMDK, raw) et les environnements cloud Amazon EC2, Google Compute Engine et Vagrant ont également été préparées.
Principaux changements :
- La possibilité de créer des snapshots des systèmes de fichiers UFS et FFS, sur lesquels la journalisation (soft updates) est activée, a été mise en œuvre. Un support pour la sauvegarde en arrière-plan des dumps (exécution de dump avec le drapeau « -L ») avec le contenu des systèmes de fichiers UFS montés lorsque la journalisation est activée a également été ajoutée. Les fonctionnalités qui ne sont pas disponibles lors de l'utilisation de la journalisation restent l'exécution en arrière-plan de la vérification d'intégrité à l'aide de l'outil fsck.
- Un pilote fonctionnant au niveau du noyau, le pilote wg, a été intégré pour implémenter l'interface réseau pour VPN WireGuard. Pour utiliser les algorithmes cryptographiques nécessaires au pilote, l'API de la sous-système cryptographique du noyau FreeBSD a été étendue, avec l'ajout d'un wrapper permettant d'utiliser des algorithmes non supportés par FreeBSD à partir de la bibliothèque libsodium via l'API cryptographique standard. Dans le processus de développement, une optimisation a également été effectuée pour un équilibrage uniforme de la charge des tâches de chiffrement et de déchiffrement des paquets sur les cœurs CPU, ce qui a permis de réduire les frais généraux lors du traitement des paquets WireGuard.
Une précédente tentative d'inclusion de WireGuard dans FreeBSD a été faite en 2020, mais a été interrompue par un scandale, au cours duquel le code déjà ajouté a été retiré en raison de sa mauvaise qualité, d'un travail négligé sur les tampons, de l'utilisation de faux-intérieurs au lieu de vérifications, d'une implémentation incomplète du protocole et de violations de la licence GPL. La nouvelle implémentation a été préparée conjointement par les principales équipes de développeurs de FreeBSD et de WireGuard, avec la participation de Jason Donenfeld, l'auteur de VPN WireGuard, et de John Baldwin, un développeur reconnu de FreeBSD. Avant l'acceptation du nouveau code, un examen complet des modifications a été réalisé avec le soutien de l'organisation FreeBSD Foundation.
- La prise en charge du protocole de communication Netlink (RFC 3549) a été mise en œuvre, utilisé dans Linux pour organiser l'interaction entre le noyau et les processus dans l'espace utilisateur. Le projet se limite à la prise en charge de la famille d'opérations NETLINK_ROUTE pour gérer l'état de la sous-système réseau dans le noyau, ce qui permet d'utiliser dans FreeBSD l'outil Linux ip du paquet iproute2 pour gérer les interfaces réseau, établir adresses IP, configurer le routage et manipuler les objets nexthop, qui contiennent des informations sur l'état utilisé pour transmettre le paquet à la destination souhaitée.
- Pour tous les fichiers exécutables du système de base sur les plateformes 64 bits, la randomisation de l'espace d'adresses (ASLR, Address Space Layout Randomization) est activée par défaut. Pour désactiver sélectivement l'ASLR, vous pouvez utiliser les commandes « proccontrol -m aslr -s disable » ou « elfctl -e +noaslr ».
- Dans ipfw, les tables de base (Radix table) sont utilisées pour rechercher les adresses MAC, ce qui permet de créer des tables avec des adresses MAC et de les utiliser pour filtrer le trafic. Par exemple : ipfw table 1 create type mac ipfw table 1 add 11:22:33:44:55:66/48 ipfw add skipto tablearg src-mac ‘table(1)’ ipfw add deny src-mac ‘table(1, 100)’ ipfw add deny lookup dst-mac 1
- Les modules du noyau dpdk_lpm4 et dpdk_lpm6 sont ajoutés et disponibles pour téléchargement via loader.conf, avec l'implémentation de l'algorithme de recherche de routes DIR-24-8 pour IPv4/IPv6, qui optimise les fonctions de routage pour les hôtes avec des tables de routage très grandes (des gains de vitesse de l'ordre de 25 % ont été observés dans les tests). L'utilitaire standard route peut être utilisé pour configurer les modules (une option FIB_ALGO a été ajoutée).
- L'implémentation du système de fichiers ZFS a été mise à jour vers la version OpenZFS 2.1.9. Dans le script de démarrage zfskeys, un chargement automatique des clés stockées dans le FS ZFS a été assuré. Un nouveau script RC zpoolreguid a été ajouté pour attribuer un identifiant GUID à un ou plusieurs zpool (par exemple, utile pour les environnements de virtualisation avec des données partagées).
- Dans l'hyperviseur Bhyve et le module vmm, la prise en charge de l'attachement de plus de 15 CPU virtuels au système invité a été mise en œuvre (régulée par sysctl hw.vmm.maxcpu). Dans l'utilitaire bhyve, l'émulation de l'appareil virtio-input a été mise en œuvre, permettant d'injecter des événements d'entrée clavier et souris dans le système invité.
- Dans KTLS, l'implémentation du protocole TLS fonctionnant au niveau du noyau FreeBSD, le support de l'accélération matérielle de TLS 1.3 a été ajouté en déchargeant certaines opérations liées au traitement des paquets cryptés sur la carte réseau. Auparavant, cette possibilité était accessible pour TLS 1.1 et TLS 1.2.
- Dans le script de démarrage growfs, l'ajout d'une partition d'échange est assuré lors de l'extension du système de fichiers racine, si cette partition est initialement absente (par exemple, utile lors de l'installation sur une carte SD d'une image système prête à l'emploi). Un nouveau paramètre growfs_swap_size a été ajouté dans rc.conf pour gérer la taille de l'échange.
- Dans le script de démarrage hostid, un UUID aléatoire est généré en cas d'absence du fichier /etc/hostid et d'impossibilité d'obtenir l'UUID du matériel. Un fichier /etc/machine-id a également été ajouté avec une représentation compacte de l'identifiant de l'hôte (sans tirets).
- Des variables defaultrouter_fibN et ipv6_defaultrouter_fibN ont été ajoutées dans rc.conf, permettant d'ajouter des routes par défaut dans des tables FIB différentes de la primaire.
- La bibliothèque libmd a ajouté le support des hachages SHA-512/224.
- La bibliothèque pthread a mis en œuvre le support de la sémantique des fonctions utilisées sous Linux.
- Dans kdump, le support du décodage des appels système Linux a été ajouté. Dans kdump et sysdecode, la prise en charge du traçage des appels système à la manière de Linux a été ajoutée.
- L'utilitaire killall a introduit la possibilité d'envoyer un signal aux processus liés à un terminal spécifique (par exemple, « killall -t pts/1 »).
- L'utilitaire nproc a été ajouté pour afficher le nombre de blocs de calcul disponibles pour le processus actuel.
- Dans l'utilitaire pciconf, le support du décodage des paramètres ACS (Access Control Services) a été ajouté.
- Une configuration SPLIT_KERNEL_DEBUG a été ajoutée au noyau, permettant de sauvegarder les informations de débogage pour le noyau et les modules du noyau dans des fichiers séparés.
- Dans l'ABI Linux, la mise en œuvre du mécanisme vDSO (virtual dynamic shared objects), fournissant un ensemble limité d'appels système accessibles dans l'espace utilisateur sans changement de contexte, est presque terminée. L'ABI Linux sur les systèmes ARM64 a atteint la parité avec la mise en œuvre pour l'architecture AMD64.
- Amélioration de la prise en charge du matériel. Ajout du support du monitoring des performances (hwpmc) pour les CPU Intel Alder Lake. Mise à jour du pilote iwlwifi pour les cartes sans fil Intel avec prise en charge des nouveaux chipsets et de la norme 802.11ac. Ajout du pilote rtw88 pour les cartes sans fil Realtek avec interface PCI. Les capacités de la couche linuxkpi ont été étendues pour être utilisées avec les pilotes Linux sous FreeBSD.
- La bibliothèque OpenSSL a été mise à jour vers la version 1.1.1t, LLVM/Clang vers la version 14.0.5, et le serveur et client SSH ont été mis à jour vers OpenSSH 9.2p1 (la version précédente utilisait OpenSSH 8.8p1). Les versions de bc 6.2.4, expat 2.5.0, file 5.43, less 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, et zlib 1.2.13 ont également été mises à jour.
De plus, il a été annoncé que les mots de passe à usage unique OPIE, les pilotes ce et cp, les pilotes pour les cartes avec interface ISA, les utilitaires mergemaster et minigzip, les composants ATM dans netgraph (NgATM), le service telnetd et la classe VINUM dans geom seront retirés à partir de la branche FreeBSD 14.0.
Source : opennet.ru
