FreeBSD 11.0

55
15
nov.
2016
FreeBSD

Après un cycle de bêta démarré le 8 juillet 2016, trois versions candidates et une sortie retardée le 28 septembre 2016 à cause d’une faille d’OpenSSL, FreeBSD 11.0-RELEASE est sorti le 10 octobre 2016.

Il est à noter que ce cycle de publication a nécessité une version candidate supplémentaire due à des régressions sur la partie réseau.

Logo et slogan de FreeBSD

En bref

FreeBSD 11.0 est une version majeure du système, néanmoins elle casse peu de compatibilité. Cette version apporte son lot de pilotes, modules et correctifs, notamment dans les domaines du réseau et de la sécurité, ainsi que l’exposition de nouvelles bibliothèques et API. Les progrès de bhyve, la prise en charge de Xen et d’Hyper-V mettent la virtualisation à l’honneur. Enfin, les efforts portés sur les architectures ARM et l’intégration de cartes d’acquisition poursuivent l’ouverture du système vers le monde de l’informatique embarquée.

Sommaire

Points clefs

  • OpenSSH 7.2p2 est proposé en version de base, désactivant par défaut la génération de clef DSA et retirant la version 1 du protocole SSH ; n’oubliez pas de mettre à jour vos clefs avant toute mise à jour ;
  • ajout de la prise en charge des cartes Wi‐Fi 802.11n ;
  • par défaut, l’outil ifconfig(8) fixe le domaine légal à FCC ; aussi, les cartes nouvellement créées ont moins de chance de violer les règles spécifiques à votre pays : pensez à ajouter create_args_wlan0="country FR" dans votre configuration ;
  • l’outil svnlite(1) est proposé en version 1.9.4 ;
  • la bibliothèque libblacklist(3), venue de NetBSD, a été intégrée dans le système de base ;
  • ajout d’une pile graphique pour l’hyperviseur bhyve(8) ;
  • une plus grande prise en charge de périphériques réseau sans fil.

Disponibilité

Une nouvelle architecture est disponible, AArch64 (pour ARMv8), alors qu’une autre, IA64, n’est plus maintenue. FreeBSD 11.0-RELEASE est donc désormais disponible sur les architectures AMD64, x86, PowerPC, PowerPC64 (ppc64), SPARC64, MIPS, MIPS64, ARMv6 (4 et 5) et AArch64.

Installation

Vous pouvez installer un système à partir des images (CD, DVD, memstick, ARM SD) que vous trouverez sur ce site ou sur celui‐ci, pour ceux qui utilisent des machines virtuelles.

Les plates‐formes de virtualisation les plus célèbres comme EC2 d’Amazon, GCloud de Google et Azure de Microsoft vous proposent d’installer des instances de FreeBSD. Plus généralement, de nombreux hébergeurs, vous proposent ce système sur un serveur dédié ou VPS.

Installateur

L’outil d’installation, bsdinstall, prend en charge le système de fichiers ZFS en standard, de même que l’outil de partitionnement sade.

De nouvelles options de sécurité sont proposées :

  • cacher les processus aux autres utilisateurs : security.bsd.see_other_uids=0 ;
  • cacher les processus aux autres groupes : security.bsd.see_other_gids ;
  • interdire la lecture des messages du noyau aux simples utilisateurs : security.bsd.unprivileged_read_msgbuf ;
  • désactiver le débogage aux simples utilisateurs : security.bsd.unprivileged_proc_debug ;
  • attribuer un identifiant de processus (PID) calculé au hasard, à la création de processus : kern.randompid=xx ;
  • protection contre les dépassements de tampons : security.bsd.stack_guard_page ;
  • nettoyer le répertoire tmp au démarrage : clear_tmp_enable ;
  • désactiver la consultation de journaux à distance : syslogd_flags="-ss" ;
  • désactiver tous les services sendmail :sendmail_enable="NONE".

Mise à jour

Attention, les utilisateurs d’EC2 sont invités à lire les errata avant de mettre à jour. Pour mettre à jour un système existant, lancez les commandes suivantes, sans omettre d’écraser le fichier bspatch pour corriger une faille de sécurité :

# : > /usr/bin/bspatch 
# freebsd-update upgrade -r 11.0-RELEASE 
# freebsd-update install 
# reboot
<redémarrage> 
# freebsd-update install 
<mise à jour des ports>
# freebsd-update install 

Pour mettre à jour les ports :

  • paquets binaires: pkg-static upgrade -f ;
  • portmaster : portmaster -Raf ;
  • synth : synth upgrade-system ;
  • si vous utilisez poudriere, créez une nouvelle jail en 11.0-RELEASE ou utilisez la commande de mise à jour de la jail de construction suivante : poudriere jail -u -j myjail -t 11.0-RELEASE.

Configuration

L’harmonisation des fichiers et répertoires de configuration progresse avec :

Il s’agit de définir les configurations d’un démon par un fichier unique /etc/{demon}.conf et/ou un ensemble de fichiers dans le répertoire /etc/{demon}.conf.d/ ; ceux‐ci étant étendus à ${LOCALBASE} pour vos configurations privées, comme celles des ports. Ainsi, le déploiement de vos configurations est simplifié.

L’option MK_ARM_EABI a été retirée de src.conf.

L’option WITH_SYSTEM_COMPILER a été introduite et activée par défaut. Elle permet, lors de la construction du système depuis les sources (i.e. make buildworld), d’utiliser le compilateur du système hôte si sa version est compatible, sans avoir à d’abord construire une version du compilateur.

La suite d’outils NTP a été mise à jour, dont le format du fichier /etc/ntp/leap-second. Le script d’initialisation dispose désormais d’un nouvel argument fetch qui permet de mettre à jour ce fichier. Le script periodic, activé par daily_ntpd_leapfile_enable et daily_ntpd_avoid_congestion pour éviter trop de requêtes simultanées, vient compléter le tableau pour permettre la mise à jour automatique de ce fichier.

L'outil service comprend deux nouvelles directives describe et extracommands qui permettent respectivement de donner une description du démon et une liste de commandes non standards:

# service pf describe
Packet Filter
# service nginx extracommands
reload configtest upgrade gracefulstop
# service ntpd extracommands
fetch

Le démon de routage multi‐diffusion (multicast) mrouted, retiré de la base, doit maintenant être installé depuis son port.

/etc/ttys comprend un nouveau drapeau, onifconsole, pour n’activer le terminal que s’il s’agit d’une console ; ainsi qu’une nouvelle classe 3wire, identique aux classes standards, mais sans champ baudrate. Dans le cadre d’une architecture ARM, les terminaux ttyu1 à ttyu3 sont activés par défaut.

La gestion des opérations asynchrones aio est intégrée par défaut.

De même, RACCT et RCTL, liés au contrôleur de ressources rctl, se retrouvent par défaut dans GENERIC. Vous pouvez les activer avec kern.racct.enable=1. rctl permet désormais de limiter les accès au système de fichiers en lecture et/ou en écriture, en bande passante et/ou quantité d’entrées‐sorties par seconde.

La configuration des touches spéciales, kern.vt.spclkeys du pilote vt est remplacée par un ensemble de clefs kern.vt.kbd_*. lindev, qui amenait /dev/full, est remplacé par full.

Attention, les modules chargés sont maintenant prioritairement trouvés dans /boot/modules puis /boot/kernel.

Noyau, bibliothèques et API

Outre les modules et configurations destinés à intégrer et améliorer la prise en charge des systèmes ARM, de nombreux apports sont à noter.

Un nouvel outil numactl permet d’appliquer une politique particulière sur un fil d’exécution (thread) ou un processus , d’affinité processeur et/ou de gestion de mémoire NUMA.

La bibliothèque libxo est intégrée dans la base ; celle‐ci permet de proposer les sorties des commandes en HTML/XML et JSON. De nombreuses commandes telles que netstat ont été adaptées à libxo.

Une bibliothèque et un démon issu de NetBSD, blacklistd va permettre d’ajouter facilement des entrées à bloquer dans votre pare‐feu, à partir des connexions rejetées par vos démons réseau. Pour l’instant, si ipfw et pf sont gérés, les services suivants ont été adaptés pour permettre les notifications à blacklistd : fingerd, ftpd, rlogind et rshd.

Poussée par nginx et Netflix, l’implémentation de la routine sendfile devient asynchrone. De fait, une application ne bloquera plus sur cet appel. Ce qui permet aujourd’hui à Netflix d’envoyer du bois plusieurs dizaines de Gio/s.

La fonction procctl() a été améliorée pour intégrer une API écrite en collaboration avec Dragonfly BSD. Elle permet de contrôler et de réattribuer les processus orphelins, pour en devenir littéralement la « faucheuse ». Elle est, entre autres, utilisée par l’outil protect qui permet de préserver un ou plusieurs processus de la destruction en cas de défaut d’espace d’échange de mémoire (swap).

Il est désormais possible de gérer des cartes d’entrées‐sorties grâce à l’ajout de la bibliothèque gpio.

casper, une bibliothèque permettant à des applications tournant dans un bac à sable (sandbox) avec capsicum, d’accéder de manière sécurisée à des ressources qui leur sont normalement inaccessibles, est intégrée dans la base. Elle est, entre autres, utilisée dans ping et tcpdump.

CloudABI, une autre plate‐forme d’isolation de privilèges, a été importée et est disponible pour AMD64 et ARM64.

Attention ! La configuration CUBIEBOARD2 a été renommée en A20, à utiliser pour les Banana Pi, par exemple.

Jails

Désormais, vous pouvez monter les systèmes de fichiers liés à la compatibilité Linux, linprocfs et linsysfs, dans une jail. De même, vous pouvez y régler les paramètres système kern.osrelease et kern.osreldate.

Pour filtrer leur sortie, les commandes suivantes intègrent le commutateur -J :

  • ps ;
  • top, de plus le nouveau commutateur -j ajoutera un champ d’identification de jail.

Précisez « 0 » pour ne lister que les processus de l’hôte racine.

jexec comprend le commutateur -l pour remplacer jail exec.clean. De plus, cette commande lancera un shell si aucune autre commande n’est précisée.

Les bogues liés aux interfaces gif et gre ont été corrigés.

Disques et systèmes de fichiers

Le programme d’amorçage loader vous permet d’entrer une phrase de passe pour geli à l’amorçage. Vous pouvez donc chiffrer entièrement vos disques. Ajoutez geom_eli_passphrase_prompt="YES" au fichier loader.conf.

Vous pouvez donner une signature EFI SECURE BOOT grâce à uefisign. L’outil fstyp détecte zfs et geli.

Le chargeur EFI est dorénavant capable d’utiliser le système de fichiers bzipfs.

L’outil de création d’image disque, mkimg propose trois nouveaux commutateurs pour indiquer ses possibilités”:

  • --version, la version ;
  • --formats, les formats d’image possibles ;
  • --schemes, les schémas de partitions compatibles, qui incluent désormais :
    • EFI MBR,
    • NTFS en GPT et MBR,
    • la création de partitions vides,
    • -c, pour définir la taille de l’image.

La commande gpart comprend les schémas de partitionnement, disklabel64, apple-boot, apple-hfs, apple-ufs et lenovofix pour pallier une incompatibilité sur les portables Lenovo.

La commande sesutil permet de piloter les boîtiers SCSI.

Réseau

Vous êtes invités à consulter la longue liste de pilotes et cartes nouvellement gérés ou améliorés pour en savoir plus.

La résolution de nom décrite dans /etc/resolv.conf ne sera relue que si la date de modification du fichier change.

Packet filter

L’algorithme de hachage cryptographique passe de Jenkins à Murmur3, ce qui accroît les performances de 3 % en termes de paquets par seconde. La règle scrub fragment crop|drop-ovl est implicitement convertie en scrub fragment reassemble.

Les protocoles IPX et AppleTalk ne sont plus pris en charge.

La pile TCP a été modifiée pour répondre à la « Packetization Layer Path MTU Discovery » (RFC 4821), qui consiste à calculer la taille maximale d’un paquet (MTU), malgré les trous noirs. Cette fonctionnalité est pilotable par les clefs situées sous `net.inet.tcp.pmtud_blackhole_*.

La configuration de l’ECN accepte trois valeurs pour la clef net.inet.tcp.ecn.enable :

  • 0, pas de notification ;
  • 1, activation sur connexions entrantes et sortantes ;
  • 2, activation sur connexions entrantes seulement.

Hyperviseurs

Le superviseur maison bhyve prend de l’assurance. De nouvelles architectures et de nouveaux pilotes de virtualisation sont au menu, parmi lesquels :

  • le pilote d’entropie virtio_random ;
  • prise en charge des « unmapped IO » ;
  • le « Posted Interrupt Processing » est activé par défaut ;
  • il est possible d’obtenir une console virtuelle via un tty ;
  • ajout de UEFI-GOP, Unified Extensible Firmware Interface Graphics Output, permettant d’obtenir une session graphique pour les machines virtuelles (accessible via VNC).

De nombreux changements concernant Xen :

  • ajout du mode PVH (domU) ;
  • suppression du mode PV (domU, rendu obsolète par PVH) ;
  • ajout du dom0, FreeBSD pouvant ainsi être utilisé en tant que contrôleur de domaine Xen.

Enfin, quelques pilotes pour Hyper-V ont été mis à jour.

En vrac

L’outil de diagnostic PCI, pciconf, permet d’interroger les périphériques par leur nom plutôt que par leur numéro, par le commutateur -l. De plus, les informations VPD sont ajoutées. Si vous avez installé la base de données PCI depuis le port misc/pciid, elle sera lue en remplacement de celle du système de base.

La compatibilité Linux est portée à la version 2.6.18, évaluée dans la clef compat.linux.osrelease.

Contributeurs

Cette nouvelle version a pu être peaufinée grâce au soutien de nombreux contributeurs, mais également de quelques entités qu’il est important de citer, parmi lesquelles :

  • la Fondation FreeBSD ;
  • ABT Systems, Ltd ;
  • AFRL ;
  • Chelsio Communications ;
  • Citrix Systems R & D ;
  • ClusterHQ ;
  • DARPA ;
  • Dell, Inc ;
  • EMC / Isilon Storage Division ;
  • Gandi.net ;
  • Intel Corporation ;
  • iXsystems ;
  • Juniper Networks, Inc ;
  • Limelight Networks ;
  • LSI ;
  • Microsoft Open Source Technology Center ;
  • MIT Computer Science & Artificial Intelligence Laboratory ;
  • Multiplay ;
  • Netflix ;
  • Netgate ;
  • Nginx, Inc ;
  • Norse Corporation ;
  • Sandvine, Inc ;
  • ScaleEngine, Inc ;
  • Solarflare Communications, Inc ;
  • Spectra Logic ;
  • Yandex LLC.

Aller plus loin

  • # Bhyve et le besoin en CPU récent

    Posté par  . Évalué à 3.

    Quand je vois bhyve, je suis tout de suite enthousiasmé. Puis après je vois qu'il requiert des instructions CPU particulières et… snif, j'ai que de vieux proco.

    J'aimerai savoir s'il est prévu d'ajouter le code manquant pour que ça tourne ailleurs que sur du matériel très récent. Une idée ?

    • [^] # Re: Bhyve et le besoin en CPU récent

      Posté par  (site web personnel) . Évalué à 10.

      Non il n'est pas prévu de rajouter le support de CPU plus anciens à ma connaissance. Notons que l'on parle de CPU minima pour intel étant les Nehalem aka des CPUs de 2008!

      • [^] # Re: Bhyve et le besoin en CPU récent

        Posté par  . Évalué à 3.

        Attention que chez Intel, beaucoup de processeurs d'après 2008 n'ont pas eu d'instruction de virtualisation dans l'entrée/milieu de gamme. Maintenant, je crois que tous l'ont.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Bhyve et le besoin en CPU récent

      Posté par  (site web personnel) . Évalué à 5.

      Cette page indique la prise en charge de pas mal de CPU Intel et AMD.

      Seule exigence, le CPU doit comprendre l'instruction POPCNT:

      grep Features /var/run/dmesg.boot | grep POPCNT
      

      Comme le dit justement bapt, le premier Intel à le prendre en charge est Nehalem.

      • [^] # Re: Bhyve et le besoin en CPU récent

        Posté par  (site web personnel) . Évalué à 5.

        Seule exigence, le CPU doit comprendre l'instruction POPCNT:

        Je me suis mal exprimé. Ce n'est pas cette instruction en soit qui est recherchée
        - son remplaçant est prévu au cas où -
        mais elle va de paire avec la techno de virtualisation EPT, notée VMX je crois dans les features, mais qui pourrait n'être que désactivée dans le BIOS.


        Autosatisfaction récursive ?

  • # Impressionnant

    Posté par  . Évalué à 4. Dernière modification le 16 novembre 2016 à 16:37.

    Du temps s’est écoulé depuis mon premier essai sur la 6.0 … Je redécouvre la FreeBSD depuis peu, et suis favorablement impressionné par les améliorations apportées depuis : pkgng, ZFS dont je commence à peine à découvrir les possibilités, légèreté et fluidité de l’ensemble, la documentation aussi bien léchée que celle de du wiki d’Arch, bref que du bonheur !

    • [^] # Re: Impressionnant

      Posté par  . Évalué à 2.

      Je suis un fan d'Archlinux … mais j'utilise une Fedora sur mon laptop pour sa très bonne intégration de Gnome. Sur mon serveur perso j'ai voulu tester une Fedora Server à la place de mon Arch. Je suis très déçu par la trop grande fréquence de mise à jour noyau avec parfois des régressions, et SeLinux est un cauchemar au quotidien. J'ai essayé docker aussi pour mes services web, je n'ai pas aimé l’expérience : c'est le bordel, trop d'outils, trop de fonctionnalités, trop de couches par dessus les couches.

      Bref j'ai envie de la stabilité d'une Debian Stable pour la base du système, de la souplesse d'une Arch pour mes applications, et de l'isolation solide pour mes services exposés à l'internet.

      Je me lance donc dans FreeBSD dans une VM pour le moment. Ca me plait beaucoup, beaucoup.
      Un gros bémol: le support des GPU intel Skylake se fait attendre (j'en ai besoin pour faire tourner Kodi au poil avec de la full HD).

      A suivre.

      • [^] # Re: Impressionnant

        Posté par  . Évalué à 2.

        J’utilise Arch depuis plus de 3 ans, et c’est probablement la
        distro qui m’a causé le moins de souci … il y a bien sûr quelques
        précautions à prendre, comme installer les noyaux linux et linux-lts,
        toujours faire une mise à jour dans tmux au cas où X planterait (ça
        ne m’est arrivé qu’une seule fois), bien vérifier l’actu sur le site, etc.

        Ceci étant dit, la dualité base stable et ports à jour de la FreeBSD
        est un véritable atout. Quand on y réfléchit, une application qui
        plante, ça peut souvent se dépanner sans trop tarder via un bon shell et
        un accès à la documentation web. Par contre, un OS qui se fige où ne
        démarre pas est nettement plus embétant : mode rescue, ou bien trouver
        le live-CD qui va bien, comprendre pourquoi, savoir si le système est
        récupérable ou pas, bref le genre de situation qu’il est préfèrable d’éviter.

        Et puis, quand je vois la fluidité de la free sur une ancienne machine,
        j’ose à peine imaginer le résultat sur une récente avec SSD. Ça
        doit décoiffer.

      • [^] # Re: Impressionnant

        Posté par  (site web personnel) . Évalué à 4.

        Un gros bémol: le support des GPU intel Skylake se fait attendre

        Si j'en crois cette page, la prise en charge sous Linux de ce GPU n'est pas franchement stable.

        • [^] # Re: Impressionnant

          Posté par  . Évalué à 1. Dernière modification le 22 novembre 2016 à 11:19.

          Merci pour l'info.

          Je suis un peu perdu dans la nomenclature : Broadwell, Haswell, Skylake, …
          J'ai une intel HD 5000 sur mon intel NUC 5i3RYH. Il me semble que c'est du Broadwell.
          Mais ça marche très bien sous Archlinux avec xf86-video-intel. Pour être précis mon seul besoin graphique est de faire tourner Kodi/XBMC avec des vidéos en HD 1080P.

          Du coup grâce à ton commentaire, je me demande si le problème n'est pas juste la 3D et que dans ce cas Kodi/Video 1080P marcherait très bien sous FreeBSD avec ma carte vidéo. Je vais essayer avec un live USB.

          • [^] # Re: Impressionnant

            Posté par  (site web personnel) . Évalué à 2.

            Je suis un peu perdu dans la nomenclature : Broadwell, Haswell, Skylake, …
            J'ai une intel HD 5000 sur mon intel NUC 5i3RYH. Il me semble que c'est du Broadwell.

            Si je m'en tiens au 5 qui introduit la référence, c'est du Broadwell ( 5ème génération).

            Mais ça marche très bien sous Archlinux avec xf86-video-intel

            Vous devriez utiliser les pilotes livrés avec la 11, i915 et i915kms, plutôt que le port. Je ne saurais dire quel mode est le plus conseillé.

            FreeBSD suit le pilote linux. Cette page indique l'état d'avancement des pilotes graphiques.
            Malheureusement, Broadwell n'est pas officiellement pris en charge.


            Il faut dire qu'ils ne sont pas très nombreux dans l'équipe.

          • [^] # Re: Impressionnant

            Posté par  (site web personnel) . Évalué à 2.

            Mais ça marche très bien sous Archlinux avec xf86-video-intel

            Dans ce cas, il faut charger les modules i915_port ou i915kms_port ( et drm2_port, mais ça se fait automatiquement je crois) pour éviter de charger les pilotes livrés avec la base.

  • # Coquilles

    Posté par  (site web personnel) . Évalué à 3.

    points clefs

    Le lien vers la page de man de bhyve (8) est cassé à la fin du paragraphe.
    https://www.freebsd.org/cgi/man.cgi?query=bhyve&sektion=8&manpath=FreeBSD+11.0-RELEASE

    Configuration, rctl

    Vous pouvez lez activer

    s/lez/les

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.