Après deux ans depuis la publication de la branche 14.0, la version FreeBSD 15.0 a été formée. Les versions d'installation ont été préparées pour les architectures amd64, aarch64, armv7, powerpc64, powerpc64le et riscv64. De plus, des versions pour les systèmes de virtualisation (QCOW2, VHD, VMDK, raw) et les environnements cloud Amazon EC2, Google Compute Engine et Vagrant sont fournies.
À partir de la branche FreeBSD 15, la durée de maintenance des branches majeures après la formation de la première version (15.0) est réduite de 5 à 4 ans, et de nouvelles branches majeures seront formées tous les deux ans. Les versions intermédiaires (15.1, 15.2, 15.3) seront développées dans le cadre d'un cycle de développement fixe, prévoyant la publication de nouvelles versions dans une même branche environ tous les 6 mois, plutôt qu'une fois par an comme cela a été le cas jusqu'à présent. Tenant compte de la maintenance simultanée de deux branches majeures différentes, une nouvelle version intermédiaire sera publiée tous les 3 mois (15.4, 16.1, 15.5, 16.2, etc.), à l'exception de la préparation des premières versions de nouvelles branches majeures, pour lesquelles il y aura une pause de 6 mois avant les nouvelles versions (par exemple, la version 15.3 sera formée en juin 2027, 16.0 en décembre 2027, 15.4 en mars 2028, 16.1 en juin 2028).
Les principaux changements dans FreeBSD 15.0 (dans la note de version officielle, en plus des changements spécifiques à la version 15.0, de nombreuses fonctionnalités déjà ajoutées dans les branches 14.1, 14.2 et 14.3 sont mentionnées) :
- La possibilité d'utiliser le gestionnaire de paquets pkg pour installer et mettre à jour les composants du système de base a été fournie. Les paquets pkgbase peuvent être fournis sur le support d'installation pour une installation hors ligne ou téléchargés depuis le dépôt pkg.freebsd.org. Dans la configuration pkg (/etc/pkg/FreeBSD.conf), le dépôt FreeBSD-base n'est pas inclus par défaut. L'installateur bsdinstall propose deux options d'installation : traditionnelle et utilisant des paquets (pkgbase). Le support du mode traditionnel, où le système de base est considéré comme un environnement monolithique, mis à jour à l'aide de l'outil freebsd-update, devrait être supprimé dans la branche FreeBSD 16. La nouvelle méthode, qui implique l'installation du système de base en tant qu'ensemble de paquets à partir du dépôt FreeBSD-base, est proposée par défaut dans les versions pour machines virtuelles et les images pour les environnements cloud, mais est pour l'instant considérée comme expérimentale pour les systèmes normaux.
- Le support de la construction de FreeBSD a été ajouté dans des environnements non privilégiés, ne nécessitant pas les droits root. Sans les droits root, il est également possible de créer des images ISO d'installation et des images système pour des machines virtuelles. Au cours du processus de construction, les droits root étaient nécessaires pour créer des fichiers de périphériques, définir des droits d'accès et monter des systèmes de fichiers supplémentaires (par exemple, lors de la création d'images disque).
- Le support des constructions reproductibles a été mis en œuvre, permettant de s'assurer que les fichiers binaires distribués sont issus du code source fourni et ne contiennent pas de modifications cachées. Les constructions reproductibles garantissent l'identité des fichiers binaires générés à partir du code source dans différents environnements de construction.
- La création d'images d'installation et de constructions de paquets binaires pour les architectures 32 bits i386, armv6 et powerpc a été arrêtée. Parmi les plateformes 32 bits, seule armv7 reste disponible. La possibilité de construire des programmes 32 bits et d'utiliser le mode COMPAT_FREEBSD32 pour exécuter des fichiers exécutables 32 bits dans un environnement basé sur un noyau 64 bits sera maintenue au moins jusqu'à la fin du cycle de vie de la branche FreeBSD 16.
- Des appels systèmes ont été ajoutés avec la mise en œuvre du mécanisme inotify pour suivre les changements dans les systèmes de fichiers.
- Le support des attributs de fichiers nommés (attributs étendus à la manière de Solaris) a été ajouté, qui seront maintenus comme un mécanisme alternatif pour la gestion des attributs étendus, disponible pour ZFS et NFSv4. Les différences par rapport aux méthodes traditionnelles pour FreeBSD et Linux en matière d'attributs étendus se résument à la représentation des attributs dans un répertoire de service, non visible dans l'espace de noms principal du système de fichiers et associée au fichier. L'interaction avec les attributs se fait comme avec des fichiers ordinaires, par exemple, pour déterminer la liste des attributs, la fonction readdir() peut être utilisée.
- Le module mac_do a été déclaré prêt à l'emploi, permettant de définir des politiques autorisant les utilisateurs non privilégiés à modifier les identifiants des processus. Pour exécuter des commandes sous un autre utilisateur, un utilitaire mdo similaire à l'utilitaire su a été préparé, mais ne nécessite pas de suid root.
- L'état des pilotes DRM i915 et amdgpu est synchronisé avec le noyau Linux 6.9. Les pilotes sans fil rtw88 (Realtek 802.11n/ac), rtw89 (Realtek 802.11ax) et iwlwifi (Intel 02.11a/b/g/n/ac/ax/be) sont synchronisés avec le noyau Linux 6.17.
- L'implémentation du protocole TLS côté noyau (KTLS) est activée par défaut.
- L'utilitaire sndctl a été ajouté pour gérer les paramètres des cartes son.
- L'utilitaire mididump a été ajouté pour le dump des événements MIDI 1.0 en temps réel.
- Un nouveau backend réseau « slirp » a été ajouté au hyperviseur bhyve, utilisant la bibliothèque libslirp avec une implémentation de la pile réseau en espace utilisateur. Le backend « slirp » permet d'accéder au réseau de la machine invitée depuis l'environnement hôte sans configuration réseau distincte du côté hôte.
- L'implémentation de Kerberos dans la version principale de FreeBSD a été remplacée de Heimdal Kerberos à MIT Kerberos. Pour revenir à Heimdal Kerberos lors de la construction, l'option WITHOUT_MITKRB5 peut être utilisée. Dans FreeBSD 16, le support pour la construction de Heimdal Kerberos sera supprimé.
- Le comportement des appels système setgroups, getgroups et initgroups concernant le traitement des groupes d'utilisateurs a été rapproché des autres plateformes (la différence d'implémentation dans FreeBSD était de stocker l'identifiant de groupe effectif des processus dans le premier élément du tableau de la liste des groupes).
- Dans les paramètres du gestionnaire de paquets pkg, un nouveau dépôt FreeBSD-kmods est activé par défaut, contenant des paquets avec des modules du noyau compilés pour des branches de versions spécifiques 15.x-RELEASE, plutôt que la branche 15-STABLE mise à jour en continu. Le dépôt FreeBSD-kmods résout le problème d'installation des pilotes dépendants des interfaces non stables du noyau (par exemple, les pilotes graphiques). Les dépôts « FreeBSD » et « FreeBSD-kmods » précédemment présents dans /etc/pkg/FreeBSD.conf ont été renommés en « FreeBSD-ports » et « FreeBSD-ports-kmods ».
- NFS a ajouté le support de l'opération CLONE, définie dans la spécification NFSv4.2, permettant la copie rapide de fichiers par clonage de blocs sur le serveur. Ce mode fonctionne actuellement uniquement lors de l'exportation de partitions ZFS via NFS.
- Sur les systèmes amd64, il est désormais possible d'utiliser plus de 4 To de RAM.
- Le pilote ufshci a été ajouté pour prendre en charge les contrôleurs de stockage avec interface UFSHCI (Universal Flash Storage Host Controller Interface).
- Sysctl net.link.bridge.member_ifaddrs est défini par défaut à 0, c'est-à-dire que des interfaces peuvent être ajoutées aux ponts réseau sans. adresses IP.
- La fiabilité du fonctionnement des systèmes de fichiers UFS, contenant plus de 2 000 000 000 d'inodes, a été améliorée. Dans la mise en œuvre du système de fichiers UFS1, le problème de l'année 2038 a été résolu (les dates jusqu'en 2106 peuvent être utilisées).
- Une option de sockets réseau SO_SPLICE a été ajoutée pour combiner les connexions TCP (similaire à un proxy fonctionnant sans copier les données dans l'espace utilisateur).
- Dans l'utilitaire grep, le suivi des liens symboliques est désactivé par défaut lors de la recherche récursive.
- Un module de noyau nvmft a été ajouté pour prendre en charge les contrôleurs NVMe over Fabric et l'utilitaire nvmecontrol pour se connecter à un contrôleur externe NVMe over Fabric.
- L'utilitaire date a ajouté la prise en charge de l'affichage du temps avec une précision nanoseconde, par exemple, « date -Ins » affichera « 2024-04-22T12:20:28,763742224+02:00 ».
- Dans jail, la prise en charge de l'option zfs.dataset a été ajoutée pour intégrer dans l'environnement jail isolé une partition, un snapshot ou un clone ZFS. La commande jail a ajouté la prise en charge des paramètres « meta » et « env », permettant de lier des métadonnées ou de transmettre des variables d'environnement. Il est également possible de s'adresser aux environnements jail par des descripteurs de jail, avec des fonctions jail_set et jail_get, ainsi que des appels système jail_attach_jd et jail_remove_jd. Des filtres kevent peuvent être utilisés pour suivre les opérations de création, de suppression, de modification et d'attachement de Jail.
- Dans l'utilitaire newsyslog, un paramètre a été implémenté pour définir la méthode de compression par défaut utilisée (bzip2, xz, zstd, gzip), éliminant ainsi la nécessité d'indiquer des drapeaux distincts (J, X, Y, Z) dans chaque ligne de newsyslog.conf.
- Dans la bibliothèque standard C, de nombreuses fonctions pour le traitement des chaînes et de la mémoire bénéficient d'optimisations basées sur des instructions SIMD.
- Dans la police Gallant, utilisée dans les terminaux virtuels, plus de 4300 nouveaux glyphes ont été ajoutés, y compris des glyphes avec des caractères cyrilliques et des symboles mathématiques.
- Dans tty, le drapeau IUTF8 est activé par défaut, ce qui permet la suppression correcte des caractères UTF-8 lorsque la touche Backspace est pressée.
- L'utilitaire dialog, utilisé dans le configurateur bsdconfig et l'installateur bsdinstall, a été remplacé par bsddialog.
- L'outil adduser, utilisé dans bsdinstall, permet de créer un dataset ZFS distinct (partition, snapshot ou clone) pour le répertoire personnel de l'utilisateur, si un dataset ZFS est déjà utilisé pour le répertoire parent. La possibilité d'utiliser le chiffrement des répertoires personnels par le biais de ZFS a également été ajoutée. Pour gérer l'activation de ces fonctionnalités, des paramètres « Zcreate » et « Zencrypt » ont été ajoutés dans adduser.conf.
- La formation d'images de conteneurs et d'images système compatibles OCI pour Oracle Cloud a été assurée.
- Un nouveau type d'image « small » pour les environnements cloud compatibles avec AWS EC2 a été ajouté. Contrairement aux images de base, celles-ci excluent les données de débogage, les tests, les bibliothèques 32 bits, le débogueur LLDB, l'agent Amazon SSM et AWS CLI. Le chargement des images « base » pour EC2 a été accéléré de 76 %.
- Par défaut, la configuration net.inet.tcp.nolocaltimewait a été désactivée et déclarée obsolète, c'est-à-dire qu'il a été rétabli la création par défaut des enregistrements TIME_WAIT pour les connexions TCP interrompues du côté du système local. Pour configurer la durée de présence d'une connexion dans l'état TIME_WAIT, un nouveau sysctl net.inet.tcp.msl_local a été ajouté.
- Par défaut, la prise en charge de la création de connexions réseau à localhost avec INADDR_ANY a été désactivée. Pour rétablir cette prise en charge, vous pouvez définir le sysctl net.inet.ip.connect_inaddr_wild à la valeur 1.
- Le gestionnaire de volumes logiques gvinum, utilisé pour les RAID logiciels, a été supprimé. Le développement de Gvinum a été arrêté il y a environ 15 ans, bien que le code comporte un certain nombre de problèmes connus qui n'ont jamais été corrigés. Il est recommandé d'utiliser gconcat, gmirror, gstripe, graid ou zfs à la place de gvinum.
- Le pilote agp (Accelerated Graphics Port), nécessaire pour le fonctionnement de nombreux pilotes pour les anciennes cartes graphiques, est programmé pour être supprimé dans FreeBSD 16. Les pilotes suivants ont également été déclarés obsolètes et sont prévus pour suppression : fdc (IBM PC Floppy Disk Controller), firewire (bus série IEEE1394), le (AMD Am7900 LANCE et Am79C9xx Ethernet) et upgt (USB 802.11g).
- La fonction readdir_r a été déclarée obsolète.
- La prise en charge du transport UDP a été interrompue dans le serveur SNMP bsnmpd.
- La génération de clés hôtes RSA pour SSH et EC2 AMI a été interrompue. Le support DSA a été retiré d'OpenSSH. La base de données publickey, liée à l'algorithme DES, a été supprimée.
- Les outils ftpd et shar ont été supprimés du système de base, et il est recommandé d'utiliser les ports ftp/freebsd-ftpd et sysutils/freebsd-shar à la place.
- L'outil fdisk a été déclaré obsolète et il est recommandé d'utiliser gpart à la place.
- Dans la catégorie des pilotes obsolètes, le pilote syscons a été transféré, qui n'est pas compatible avec UEFI, ne prend pas en charge l'UTF-8 et est lié au verrouillage global.
- Les versions suivantes ont été mises à jour : LLVM 19.1.7, OpenSSH 10.0p2, OpenSSL 3.5.4, OpenZFS 2.4.0rc4, Lua 5.4.8, jemalloc 5.3.0, Awk 20250804 (avec support UTF-8), bc 7.1.0, unicode 16.0.0, ncurses 6.5, libarchive 3.8.2, tcpdump 4.99.5, unbound 1.24.1, less 679, file 5.46, GoogleTest 1.15.2.
Source : opennet.ru
