Après deux ans et demi depuis la publication de la branche 13.0, la version FreeBSD 14.0 a été formée. Des images d'installation ont été préparées pour les architectures amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 et riscv64. Des builds ont également été préparées pour les systèmes de virtualisation (QCOW2, VHD, VMDK, raw) et les environnements cloud Amazon EC2, Google Compute Engine et Vagrant. La branche FreeBSD 14 sera la dernière à supporter les plateformes 32 bits. Dans FreeBSD 15, seul le support des systèmes 64 bits restera, mais il sera toujours possible de compiler des programmes 32 bits et d'utiliser le mode COMPAT_FREEBSD32 pour exécuter des fichiers exécutables 32 bits dans un environnement 64 bits.
Principales modifications :
- Le shell par défaut pour l'utilisateur root est maintenant défini sur /bin/sh.
- Pour les dispositifs NVME, le pilote nda est utilisé par défaut sur toutes les plateformes. Pour revenir à l'ancien pilote nvd, une option « hw.nvme.use_nvd=1 » est prévue dans loader.conf.
- Une nouvelle utilitaire « fwget » a été ajoutée pour identifier le matériel nécessitant des firmwares et installer les paquets de firmwares correspondants. Actuellement, seuls les dispositifs PCI et les firmwares pour GPU Intel et AMD sont pris en charge.
- Une nouvelle utilitaire base64 a été ajoutée pour l'encodage et le décodage des données au format base64.
- L'outil tcpsso a été ajouté, permettant de définir des options de socket pour les connexions TCP existantes (par exemple, il est possible de changer le module de contrôle de congestion ou la pile TCP).
- L'agent de messagerie par défaut est maintenant dma (DragonFly Mail Agent) au lieu de sendmail. Sendmail est conservé dans la distribution de base et a été mis à jour vers la version 8.17.1.
- Dans KTLS, l'implémentation du protocole TLS fonctionnant au niveau du noyau FreeBSD, le support de l'accélération matérielle pour TLS 1.3 sur le côté récepteur a été ajouté. L'accélération est fournie en déplaçant certaines opérations liées au traitement des paquets chiffrés vers la carte réseau.
- Une directive « .include » a été ajoutée au fichier de configuration jail.conf, permettant d'inclure des fichiers supplémentaires lors du chargement de la configuration, avec la possibilité d'utiliser des masques dans les chemins. Le paramètre sysctl security.bsd.see_jail_proc a été étendu, permettant de restreindre aux utilisateurs non autorisés, dans un environnement jail séparé, l'arrêt forcé, le changement de priorité et le débogage des processus.
- Les programmes pw et bsdinstall créent désormais par défaut des utilisateurs dans le répertoire « /home », au lieu de « /usr/home ». Le lien symbolique pour « /home », pointant vers « /usr/home », n'est plus créé.
- La configuration de construction PROFILE est désactivée par défaut — les versions profilées des bibliothèques système ne sont plus fournies, il faut plutôt utiliser les outils de profilage matériels (hwpmc).
- La construction des fichiers exécutables pour les architectures 64 bits est activée en mode PIE (Executable Indépendant de la Position).
- Le hyperviseur Bhyve a été mis à jour avec la possibilité de passer l'accès au TPM (Trusted Platform Module) et au GPU (dans des environnements virtuels pour les puces AMD et Intel).
- L'implémentation du système de fichiers ZFS a été mise à jour vers la version OpenZFS 2.2. L'outil makefs a ajouté la prise en charge du système de fichiers ZFS. Il est désormais possible de créer un pool ZFS associé à un seul disque virtuel vdev.
- Le nombre de cœurs CPU pris en charge (paramètre MAXCPU) dans les systèmes basés sur l'architecture amd64 et arm64 a été augmenté de 256 à 1024.
- Dans UFS pour les configurations où le journalisation est activée (mises à jour douces), une vérification en arrière-plan du système de fichiers est autorisée, en utilisant des instantanés UFS. Des vérifications de hachage supplémentaires ont été ajoutées aux superblocs, aux cartes de groupes cylindriques et aux inode pour détecter les dommages.
- Un système de fichiers tarfs a été ajouté, qui peut être utilisé avec des archives tar compressées à l'aide de zstd.
- Des outils boottrace ont été ajoutés pour suivre les événements survenus lors du démarrage et de l'arrêt du système.
- Un paramètre de configuration du noyau FIRECRACKER a été ajouté pour permettre le démarrage de FreeBSD dans un système de virtualisation Firecracker, conçu pour exécuter des machines virtuelles avec des coûts d'exploitation minimaux. Le temps de démarrage du noyau FreeBSD 14 sous Firecracker a été réduit à 25 millisecondes, ce qui permet de démarrer des environnements FreeBSD à la demande pour mettre en œuvre une infrastructure de calcul sans serveur.
- Dans le chargeur, écrit en Lua, le support de l'exécution de fichiers lua, placés dans le répertoire loader_conf_files, a été mis en œuvre dans un environnement sandbox spécial.
- Le support de NFS a été étendu. Une nouvelle option de montage « syskrb5 » a été ajoutée pour la prise en charge de Kerberos dans NFSv 4.1/4.2, et le support de l'opération ExchangeID a également été mis en œuvre. Il est désormais possible d'exécuter nfsd, nfsuserd, mountd, gssd et rpc.tlsservd dans un environnement réseau isolé vnet.
- Dans le script growfs, la possibilité de placer la partition d'échange à la fin de la zone extensible sur le disque a été implémentée.
- Un nouveau fournisseur DTrace kinst (dtrace_kinst) a été ajouté, permettant de tracer des structures du noyau.
- Le sous-système de cryptographie du noyau a été mis à jour pour prendre en charge l'algorithme de chiffrement XChaCha20-Poly1035 AEAD, et une API a été ajoutée pour utiliser la courbe elliptique curve25519 (pour WireGuard).
- Le temps de redémarrage a été réduit. Un paramètre sysctl kern.reboot_wait_time a été ajouté pour modifier le délai avant le redémarrage effectif après l'affichage de tous les messages de diagnostic dans la console. Par défaut, le délai a été supprimé.
- Un sous-système timerfd a été ajouté au noyau, simplifiant le portage des programmes à partir de Linux.
- Un paramètre sysctl machdep.mitigations.zenbleed.enable a été ajouté pour bloquer la vulnérabilité Zenbleed sur les processeurs AMD Zen2.
- Le wpa_supplicant et hostapd ont été mis à jour pour prendre en charge le Wi-Fi 6. Le pilote iwlwifi fonctionne avec les puces Intel prenant en charge Wi-Fi 6E AX411/AX211/AX210.
- Pour le noyau sur les systèmes amd64, la prise en charge des outils AddressSanitizer et MemorySanitizer du projet LLVM a été assurée.
- Dans les scripts rc.d, l'utilisation de la méthode status est désormais autorisée, même si le nom du programme (procname) et le fichier PID ne sont pas définis dans le script.
- La vitesse de transmission de données via le port série dans le noyau, les chargeurs de démarrage et l'espace utilisateur a été augmentée par défaut de 9600 à 115200 bps. Le ton du bip est fixé par défaut à 800Hz. L'intégration avec devd pour émettre des bips via la carte sonore a été assurée. Pour la console vt, le bip est désactivé par défaut (pour l'activer, il faut exécuter les commandes «sysctl kern.vt.enable_bell=1» et «kbdcontrol -b normal»).
- Le support de l'architecture d'accélération matérielle des opérations réseau NXP DPAA2 (Data Path Acceleration Architecture Gen2) a été amélioré.
- Le pilote igc pour les contrôleurs Ethernet Intel I225, prenant en charge une vitesse de 2.5 Gbps, a été ajouté.
- La configuration net.inet.tcp.nolocaltimewait est activée par défaut, désactivant la création d'enregistrements timewait pour les connexions TCP interrompues du côté du système local.
- Le support du protocole de communication Netlink (RFC 3549) a été élargi et activé par défaut, utilisé dans Linux pour gérer l'interaction entre le noyau et les processus dans l'espace utilisateur. Certains utilitaires réseau ont été convertis pour utiliser Netlink.
- Le filtre de paquets pf assure la compatibilité avec la syntaxe et le comportement des opérations de normalisation des paquets (scrubbing) de la version pf d'OpenBSD. Dans pfsync, la possibilité d'utiliser le transport IPv6 a été mise en œuvre. Le format des paquets pfsync a été élargi pour prendre en charge les files d'attente, la normalisation des paquets et les règles route-to.
- L'interface réseau if_stf (IPv6 sur IPv4) a été ajoutée. de l'IPv6 Déploiement rapide (RFC 5969). Par défaut, le mode IPv6 nodeinfo (RFC 4620) est désactivé.
- Le paramètre sysctl net.inet.tcp.nolocaltimewait est activé par défaut, évitant ainsi la création d'entrées avec l'état timewait pour les connexions TCP interrompues localement.
- Par défaut, le mécanisme de contrôle de la congestion TCP CUBIC est activé au lieu de NewReno, ce qui a permis d'élargir l'utilisation de la bande passante disponible.
- L'envoi de paquets de diffusion à l'adresse nulle du sous-réseau est désactivé en IPv4, sauf si cette adresse est explicitement déclarée comme diffusée. Ce changement permet d'utiliser pour les hôtes des adresses se terminant par « .0 ».
- Les paramètres de OpenSSH ont été modifiés : dans scp, le protocole SFTP est utilisé par défaut au lieu de scp/rcp, la prise en charge des signatures RSA/SHA-1 est désactivée, les paramètres VerifyHostKeyDNS et X11Forwarding sont définis sur « no », la directive VersionAddendum a été supprimée, et la prise en charge des paramètres HPN a été éliminée.
- L'outil date a ajouté l'option « -z » pour la conversion des fuseaux horaires.
- L'outil diff a ajouté l'option « —color » pour visualiser les modifications par couleur.
- L'outil sleep prend désormais en charge des unités de mesure autres que les secondes (par exemple, on peut indiquer « sleep 1h 30m »).
- Les outils head et tail ont ajouté le support des options « -q » et « -h », ainsi que la possibilité de spécifier des quantités avec des suffixes dans le système international d'unités SI. L'outil head n'impose plus de limite au nombre maximal de lignes 2^31.
- L'outil systat a ajouté la commande « iolat » pour afficher les informations sur les délais d'entrée/sortie calculés par le planificateur CAM.
- La bibliothèque libncursesw a été divisée en deux bibliothèques : libtinfow et libncursesw. La prise en charge de l'utilisation de la base terminfo dans ncurses a été ajoutée, et non seulement termcap.
- Pour l'architecture aarch64 (arm64), l'option de construction COMPAT_LIB32 a été mise en œuvre et activée par défaut, permettant la construction de bibliothèques 32 bits pour les systèmes ARM64, permettant l'exécution de fichiers exécutables compilés pour la plateforme armv7.
- Amélioration du support des systèmes cloud. Des builds expérimentaux avec un système de fichiers racine ZFS et cloud-init ont été ajoutés pour AWS EC2. Des images pour les architectures arm64 et amd64 avec UFS ou ZFS sont fournies pour Azure. Un pilote pour la carte réseau virtuelle gve (Google Virtual NIC) a été ajouté.
- Ajout du support de la valeur seuil _CR3 dans le système ACPI, permettant de définir la température à laquelle le système sera mis en mode veille (S3).
- Versions des applications et bibliothèques tierces intégrées au système de base mises à jour : OpenSSH 9.5p1, OpenSSL 3.0.12 (la branche 1.1.1 était précédemment utilisée), awk 2021072, bc 6.6.0, libbsdxml 2.4.7, libfido2 1.13.0, tcpdump 4.99.4, libpcap 1.10.4, xz 5.4.3, zlib 1.3, zstd 1.5.2. L'implémentation de l'outil objdump a été remplacée par llvm-objdump. Le compilateur Clang a été mis à jour vers la branche 16.
- Nettoyage des systèmes obsolètes :
- Le support des mots de passe à usage unique OPIE a été supprimé du système de base (pour rétablir son utilisation, le port security/opie peut être installé).
- Les pilotes pour les cartes son avec interface ISA ont été supprimés.
- Les utilitaires fmtree et minigzip ont été supprimés.
- Les composants ATM dans netgraph (NgATM) ont été supprimés.
- Le processus en arrière-plan telnetd a été supprimé (le port net/freebsd-telnetd peut être utilisé).
- La classe VINUM dans geom a été supprimée.
- Les pilotes obsolètes amr, iscsi_initiator, iir, mn, mly, nlmrsa et twa ont été supprimés.
- Le paramètre VESA a été supprimé des noyaux GENERIC et MINIMAL.
- Le support des opérations cryptographiques asymétriques a été supprimé du framework cryptographique OCF (Open Cryptographic Framework) fonctionnant au niveau du noyau.
- L'outil mergemaster a été déclaré obsolète, il convient d'utiliser etcupdate à la place.
- L'outil portsnap a été supprimé (pour extraire des ports, utilisez «git clone https://git.FreeBSD.org/ports.git /usr/ports»).
- La génération de builds pour l'architecture armv6 a été arrêtée.
- Le support de l'architecture MIPS a été supprimé.
Source : opennet.ru
