Publié le: 2012-11-02

OpenBSD 5.2

6 mois exactement après la sortie de la 5.1 qui nous apportait de jolies nouveautés concernant IPv6 et le firewalling, un nouveau release d’OpenBSD est arrivé aujourd’hui.

Petit à petit les différents servicent améliorent leur support IPv6, ainsi que les performances associées. Les rthreads font leur apparition dans cette nouvelle version et pourraient bien changer complètement le rapport de performances des pthreads en déportant la partie user (uthreads) vers le kernel, permettant du multithread multi coeur/processeur.

Vous trouverez ci-dessous la liste principale des changements répertoriés par l’équipe OpenBSD (source), et la liste détaillée chronologique ici.

Pour télécharger l’ISO amd64 d’OpenBSD 5.2 c’est ici.

Ceci est une liste partielle des nouvelles fonctionnalités présentes dans OpenBSD 5.2. Pour une liste complète, voir le journal des changements qui ont mené à la création de la version 5.2.

  • support pthreads(3):

    • Le changement le plus significatif de cette version est le remplacement de uthreads (niveau utilisateur) par rthreads (niveau kernel), permettant aux programmes multithreads d’utiliser plusieurs CPUs/coeurs.
    • Utilisation de PTHREAD_MUTEX_STRICT_NP comme type mutex par défaut.
    • pthread spinlock et routines barrières ajoutés.
    • Fonctions pthread_mutex_timedlock(3) et sem_timedwait(3) ajoutées.
    • Fonction pthread_condattr_setclock(3) ajoutée.
    • Débogage multi-thread à chaud ajouté à gdb(1).
    • Gestion pour les totaux rusage et interval timers améliorée dans les processus threadés.
    • La rlimit RLIMIT_NPROC a été changée pour compter les processus au lieu des threads.
    • Race conditions corrigées dans la création de thread, et dans fork(2) et open(2) dans un processus threadé.
    • Gestion des processus threadés améliorée dans ps(1), top(1), et fstat(1).
    • Verrouillage autour de dlopen() changé pour être récursif, de telle façon que les opérations dl*() des gestionnaires atexit() ne bloquent pas.
    • Quelques corrections de l’attribut pthread et de la gestion d’erreur et d’annulation de mutex.
  • Support matériel amélioré:

    • Support de l’hibernation ajouté sur la plate-forme i386. Fonctionne actuellement sur les disques pciide(4) et wd(4).
    • Support pour touchpads basés sur ALPS amélioré dans les drivers X.Org wsmouse(4) et synaptics(4).
    • Amélioration des performances avec les NICs Intel 10Gb Ethernet dans ix(4).
    • Support pour les périphériques basés sur i350 ajouté dans em(4).
    • Support du contrôle de flux ajouté dans bnx(4).
    • Support de la surveillance hardware et de HPET ajouté pour tcpcib(4) (Intel Atom E600), comme dans les systèmes embarqués x86.
    • urndis(4) supporte des périphériques Android supplémentaires.
    • Support pour Winbond W83627UHG ajouté à wbsio(4).
    • Support pour le contrôleur SMBus AMD CS5536 ajouté dans glxpcib(4) et celui de NVIDIA MCP89 dans nviic(4).
    • Support pour les périphériques basés sur AX88772B ajouté à axe(4).
    • Support pour les périphériques basés sur MCS7832 ajouté à mos(4).
    • Support pour Roland UM-ONE ajouté à umidi(4).
    • Support du chipset AMD Hudson-2 ajouté à azalia(4) et piixpm(4).
    • Support pour les cartes série cardbus NetMos NM9820 ajouté à com(4).
    • Support pour Huawei Mobile E303 ajouté à umsm(4).
    • Le port sgi supporte maintenant les familles R4000 Indigo (IP20), Indy (IP22), R4000 Indigo2 (IP24) et POWER Indigo2 R10000 (IP28).
  • Améliorations dans la pile réseau générique:

    • Fenêtre initiale TCP augmentée à 14600 octets, comme proposé dans draft-ietf-tcpm-initcwnd.
    • Gestion du nettoyage des sockaddrs dans les cas d’utilisations dégénérées.
    • Gestion d’erreur et de cas limites améliorée lors du passage de descripteurs de fichiers.
    • Gestion des socketbuffer améliorée pour les sockets AF_UNIX.
    • Un leak de descripteur de fichier a été corrigé dans la transmission de message.
    • Gestion d’erreur améliorée dans le raccordement de socket.
    • Les adresses privées IPv6 apparaissent désormais aux côtés des adresses SLAAC.
    • Le support des numéros de séquence élargis a été ajouté à la pile IPsec ainsi qu’à iked(8).
    • Bridger deux réseaux IPv4 sur un lien IPv6 avec gif(4) est maintenant possible.
  • Démons de routage et autres améliorations du réseau en userland:

    • sndiod(1), bgpd(8), dvmrpd(8), ftp-proxy(8), iked(8), iscsid(8), ldapd(8), ldpd(8), nsd(8), ospf6d(8), ospfd(8), relayd(8), ripd(8), snmpd(8), spamd(8), sshd(8), tcpbench(1) et tmux(1) limitent désormais leurs taux d’acceptation de nouvelles connexions lors de l’épuisement descripteur de fichier.
    • Syntaxes destination/prefixlen de route(8) ajoutées pour les routes IPv6.
    • Support du packet dumping ASCII ajouté dans tcpdump(8).
    • Meilleur support des protocoles etherip et BGP dans tcpdump(8).
    • isakmpd(8) et tcpdump(8) reconnaissent désormais les groupes DH additionnels Internet Key Exchange. (NdT: originalement “additional Internet Key Exchange DH groups”)
    • Diverses améliorations dans iked(8) incluant le support des retransmissions.
    • Les durées de vies de SA de ipsecctl(8) peuvent être spécifiées dans son fichier ipsec.conf(5).
    • tftpd(8) a été réécrit comme un démon persistant, non bloquant.
    • Le client tftp(1) supporte maintenant l’IPv6.
    • snmpd(8) supporte maintenant PF-MIB, UCD-DISKIO-MIB, et des OIDs additionnels dans HOST-RESOURCES-MIB.
    • bgpd(8) est plus robuste face aux instabilités réseau.
    • Code de décision de route de bgpd(8) ajusté pour couvrir les vérifications nécessaires aux réflexions de routes.
    • Diverses corrections pour améliorer la gestion de rapport d’erreur dans bgpd(8), incluant le support de RFC 6608.
    • Dans des buts de débogage, bgpctl(8) peut générer des dumps MRT dans bgpd(8).
    • Distribution des routes VPN MPLS réparée dans bgpd(8).
    • L’option “selected” a été ajoutée à la commande “show rib” de bgpctl(8) pour afficher uniquement les routes sélectionnées.
    • ospfd(8) supporte désormais correctement les types LSA_TYPE_AREA_OPAQ et LSA_TYPE_AS_OPAQ.
    • relayd(8) est à présent capable de gérer les transactions de plus de 2GO.
    • Diverses corrections de bogues et de conformité aux standards HTTP dans relayd(8).
    • rtadvd(8) peut maintenant prévenir les serveurs DNS et chercher les chemins dans les avertissements de routeurs.
    • rtadvd(8) peut maintenant envoyer des avertissements aux routeurs sans information de préfixe en utilisant l’option noifprefix.
    • Le client ftp(1) autorise maintenant l’adresse IP source de la connexion à être spécifiée.
    • ypldap(8) gère désormais de plus larges dossiers et est plus tolérant lors de la gestion des groupes.
    • Support pour AF_INET6 ajouté à inet_net_pton(3) et inet_net_ntop(3).
  • Améliorations de pf(4):

    • pf(4) ignore/garde désormais les 2 bits les plus petits du tos-header (utilisé pour les notifications explicites de congestion).
    • Plus de 16 interfaces pflog(4) autorisées.
    • pf(4) supporte désormais l’équilibrage de charge pondérée des derniers états.
    • Les options prio et tos font maintenant partie des blocs “set { }”. Voir pf.conf(5).
    • Possibilité de mettre le tos sur les paquets IPv6.
    • Meilleure gestion de la rétrogradation dans pfsync(4) pour éviter les basculements sans avoir une table d’état complète.
    • Affichage des ancres à caractères spéciaux corrigé dans pfctl(8).
  • Améliorations diverses:

    • nginx(8), (serveur HTTP, reverse proxy et mail proxy) ajouté.
    • SQLite 3.7.13 ajouté (un moteur de base de données autonome).
    • libpcap a été mis à jour avec quelques fonctions importantes de l’API libpcap-1.2.0 de tcpdump.org, sans le désordre.
    • SSLv2 désactivé dans OpenSSL.
    • libtool(1) est désormais inclus dans le système de base. Beaucoup de travail reste à faire.
    • lint(1) supprimé.
    • Le driver RAIDframe raid(4) et son utilitaire correspondant (raidctl(8)) ont été supprimés. RAIDframe a été remplacé par softraid(4).
    • posix_spawn(3) ajouté.
    • mbsnrtowcs(3) et wcsnrtombs(3) ajoutés.
    • getdelim(3) et getline(3) ajoutés.
    • Un plus grand nombre de variables de configuration pour sysconf(3) et pathconf(2).
    • dirfd(3) est maintenant une fonction, et non une macro.
    • posix_memalign(3) supporte les alignements larges arbitraires.
    • Performance de realloc(3) améliorée.
    • ld.so(1) reconnaît le flag DF_1_NOOPEN et refuse de dlopen(3) les objets partagés linkés avec “-z nodlopen”.
    • Conformités et/ou propretés des fichiers headers améliorées, particulièrement pour <dirent.h>, <time.h>, <sys/time.h>, <limits.h>, <arpa/inet.h>, <netinet/in.h>, and <sys/param.h>.
    • Allocateur mémoire uvm kernel amélioré.
    • Support ajouté pour pouvoir utiliser AMT afin d’avoir une console via ethernet (c.f le package amtterm).
    • Support amélioré pour les systèmes amd64 avec des extensions mémoire.
    • Améliorations de compat_linux(8): corrections de TLS-vs-clone futex, support ajouté de statfs64(), tgkill(), gettid(), SOCK_CLOEXEC, et SOCK_NONBLOCK.
    • Améliorations de kdump(1), dont la capacité de montrer les IDs de thread et le dumping des arguments et résultats de timespec, timeval, sigaction, rlimit, sigset, clockid, et fdset.
    • Diverses améliorations dans smtpd(8): meilleure fiabilité, nouveau client MTA, nouveau planificateur et queue améliorée, syntaxe de smtpd.conf(5) améliorée, meilleure conformité RFC et d’autres changement cosmétiques…
    • L’éditeur mg(1) (proche de emacs) supporte désormais la fonctionnalité cscope. Aussi, les fichiers backups peuvent maintenant être sauvegardés dans le dossier home d’un utilisateur en addition du répertoire de travail actuel.
    • Opération de kvm_getfile2() (donc de fstat(1) et de pstat(8)) réparée pour les crash dumps du kernel.
    • Raccourcis clavier (style emacs) et manipulation de grandes chaînes améliorés dans ksh(1).
    • halt(8) désactive “suspend-on-lid-close” pour que vous ne mettiez pas accidentellement votre système en veille au lieu de l’éteindre.
    • Améliorations dans make(1): destinations .CHEAP et .EXPENSIVE ajoutées et bogues corrigés. (NdT: traduction bancale)
    • Le package libusb est capable d’accéder à des périphériques non-ugen(4) pour quelques opérations, permettant par exemple de programmer des YubiKeys avec un kernel standard.
    • Diverses améliorations dans tmux(1): une nouvelle arborescence pour sélectionner les sessions ou les fenêtres, de nouvelles commandes move-pane et renumber-windows, un historique de mises en page, et les formats personnalisés (-F) ont été étendus et sont maintenant acceptés par plus de commandes.
    • fsck_msdos(8) fonctionne désormais avec les périphériques dont les secteurs ne sont pas de 512 octets.
    • quotacheck(8) fonctionne maintenant avec les fichiers fstab(5) à base de DUID.
    • De nombreuses améliorations mineures dans fdisk(8), dont une augmentation des tests de validations et une meilleure taille de partitionnement sur les larges disques.
    • dhclient(8) rejette désormais les valeurs NULLs dans les données d’options, et en général analyse les données avec plus de paranoïa.
    • Diverses améliorations dans la gestion du démarrage et du timeout dans dhclient(8).
    • disklabel(8) fait un meilleur job lors du calcul de la mémoire physique durant l’auto-allocation de partition sur les périphériques dont les secteurs ne sont pas de 512 octets.
    • Les erreurs SCSI sont désormais correctement propagées dans l’userland. e.g. mount(2) reporte maintenant des erreurs spécifiques comme par exemple le fait d’essayer de monter un système de fichier RW (lecture+écriture) sur un média RO (lecture uniquement).
    • Gestion des médias FAT améliorée: reconnaît automatiquement les médias même si la signature 0x55aa n’est pas présente et empêche l’écriture d’un disklabel OpenBSD par-dessus les structures de données FAT.
    • L’implémentation du système de fichier FAT MS-DOS a significativement augmenté en vitesse d’écriture pour les gros fichiers (plus de 2x en vitesse).
  • OpenSSH 6.1:

    • Nouvelles fonctionnalités:
      • sshd(8): Cette release active le pre-auth sandboxing par défaut pour les nouvelles installations, en mettant UsePrivilegeSeparation=sandbox dans sshd_config.
      • sshd-keygen(1): Options ajoutées pour spécifier le numéro de ligne de départ et le nombre de lignes à traiter lors de la sélection des candidats de modules, ce qui permet le traitement parallèle des différentes parties du fichier de candidature de modules. (NdT: traduction bancale)
      • sshd(8): La directive de correspondance supporte désormais la correspondance de l’adresse local (d’écoute) et du port sur lequel la connexion a été reçue via les closes LocalAddress et LocalPort.
      • sshd(8): Directive de correspondance dans sshd_config étendue pour permettre de configurer AcceptEnv et {Allow,Deny}{Users,Groups}.
      • Support pour RFC6594 SSHFP DNS records pour les types de clé ECDSA ajouté. (NdT: traduction bancale)
      • sshd-keygen(1): Autorise la conversion des clés RSA1 à PEM et PKCS8.
      • sshd(8): Autorise la directive PermitOpen dans sshd_config pour accepter l’argument “none” afin de refuser toutes les requêtes de redirection de port.
      • sshd(8): Supporte désormais l’argument “none” pour AuthorizedPrincipalsFile.
      • sshd-keyscan(1): Recherche les clés ECDSA par défaut. (bz#1971)
      • sshd(8): “VersionAddendum” ajouté dans sshd_config afin de permettre aux opérateurs de serveur d’ajouter du texte arbitraire à la bannière du protocole SSH serveur.
    • Les bogues importants qui suivent ont été corrigés dans cette release:
      • sshd(8) et ssh(1): Ne pas rester dans accept() dans des situations d’épuisement de descripteurs de fichiers. À la place: marche arrière pendant un certain temps.
      • sshd(8) et ssh(1): Les MACs hmac-sha2-256-96 et hmac-sha2-512-96 ont été enlevées car elles ne sont plus dans les spécifications. (bz#2023)
      • sshd(8): Les longs commentaires sont mieux gérés dans les fichiers de configuration. (bz#2025)
      • ssh(1): Retarder la configuration de tty_flag de telle façon que les options RequestTTY sont correctement gérées. (bz#1995)
      • sshd(8):
      • Gestion de /etc/nlogin corrigée (était mal gérée en root sur les plates-formes utilisant login_cap).
  • Plus de 7600 ports, et des améliorations de performance et de stabilité majeures dans le processus de construction de paquets

    • dpb est plus simple et rapide. Il gère les distfiles et peut fonctionner sans option.
    • Mécanismes plus simples pour gérer les différences MD.
    • dpb est maintenant utilisé pour les miroirs distfiles, pour la plus grande joie de ftp://ftp.openbsd.org/pub/OpenBSD/distfiles/
    • bases de données de tous les ports disponibles en packages:
      • pkglocatedb - une base de données locate(1) de tous les fichiers dans tous les packages
      • sqlports - une base de données sqlite3(1) de toutes les métadonnées pour tous les packages
      • ports-readmes - une arborescence de fichiers html pour parcourir les packages disponibles
  • Quelques packages pré-construits pour chaque architecture:

    • i386: 7483
    • sparc64: 6820
    • alpha: 5993
    • sh: 2412
    • amd64: 7439
    • powerpc: 7050
    • sparc: 4466
    • arm: 5802
    • hppa: 6316
    • vax: 2279
    • mips64: 5845
    • mips64el: 5908
  • Quelques nouveautés:

    • GNOME 3.4.2
    • KDE 3.5.10
    • Xfce 4.10
    • MySQL 5.1.63
    • PostgreSQL 9.1.4
    • Postfix 2.9.3
    • OpenLDAP 2.3.43 et 2.4.31
    • Mozilla Firefox 3.5.19, 3.6.28 et 13.0.1
    • Mozilla Thunderbird 13.0.1
    • GHC 7.0.4
    • LibreOffice 3.5.5.3
    • Emacs 21.4, 22.3 et 23.4
    • Vim 7.3.154
    • PHP 5.2.17 et 5.3.14
    • Python 2.5.4, 2.7.3 et 3.2.3
    • Ruby 1.8.7.370 et 1.9.3.194
    • Tcl/Tk 8.5.11
    • Jdk 1.7
    • Mono 2.10.9
    • Chromium 20.0.1132.57
    • Groff 1.21
    • Go 1.0.2
    • GCC 4.6.3 et 4.7.1
    • LLVM/Clang 3.1
    • Lua 5.1.5 et 5.2.1
  • Comme d’habitude, de nombreuses améliorations dans les pages de manuel et autres documentations.

  • Le système comporte les composants majeurs suivants fournis par des entités externes:

    • Xenocara (basé sur X.Org 7.7 avec xserver 1.12.2 + patches, freetype 2.4.10, fontconfig 2.8.0, Mesa 7.10.3, xterm 279, xkeyboard-config 2.6 et plus…)
    • Gcc 4.2.1 (+patches) et 2.95.3 (+ patches)
    • Perl 5.12.2 (+ patches)
    • Notre version améliorée et sécurisée d’Apache 1.3, avec support de SSL/TLS et DSO
    • Nginx 1.2.2 (+ patches)
    • OpenSSL 1.0.0f (+ patches)
    • SQLite 3.7.13 (+ patches)
    • Sendmail 8.14.5, avec libmilter
    • Bind 9.4.2-P2 (+ patches)
    • NSD 3.2.11
    • Lynx 2.8.7rel.2 avec support HTTPS et IPv6 (+ patches)
    • Sudo 1.7.2p8
    • Ncurses 5.7
    • Heimdal 0.7.2 (+ patches)
    • Arla 0.35.7
    • Binutils 2.15 (+ patches)
    • Gdb 6.3 (+ patches)
    • Less 444 (+ patches)
    • Awk version du 10 août 2011