Rapport d'avancement FreeBSD Q2019 XNUMX

Publié rapport sur le développement du projet FreeBSD d'avril à juin 2019. Parmi les changements on peut noter :

  • Questions générales et système
    • L'équipe Core a décidé de créer un groupe de travail pour explorer la possibilité de déplacer le code source du système de contrôle de source centralisé Subversion vers le système décentralisé Git.
    • Réalisation de tests fuzz du noyau FreeBSD en utilisant le système Syzkaller et un certain nombre d'erreurs identifiées ont été corrigées. Ajout d'une couche pour tester par fuzzing les bibliothèques pour la compatibilité avec un environnement 32 bits sur les systèmes dotés d'un noyau 64 bits. La possibilité d'exécuter syzkaller sur des machines virtuelles basées sur bhyve a été implémentée. À l'étape suivante, il est prévu d'étendre la couverture des tests d'appels système, d'utiliser le désinfectant LLVM pour vérifier le noyau, d'utiliser netdump pour enregistrer les dumps du noyau lors des plantages lors des tests de fuzzing, etc.
    • Le travail a commencé sur la mise à jour de l'implémentation de zlib au niveau du noyau. Pour l'accès du noyau au code zlib, le répertoire contrib/zlib a été renommé sys/contrib/zlib, et le fichier d'en-tête crc.h a également été renommé pour éviter tout conflit avec zlib/crc.h. Nettoyage du code existant qui dépendait de zlib et d'inflate. Ensuite, il est prévu d'offrir la possibilité de construire le noyau simultanément avec l'ancien et le nouveau zlib pour le transfert progressif vers la nouvelle version des fonctions utilisant la compression ;
    • L'infrastructure d'émulation de l'environnement Linux (Linuxulator) a été mise à jour. Prise en charge accrue des outils de débogage Linux tels que l'utilitaire strace. Le package linux-c7-strace a été ajouté aux ports, qui peut être utilisé pour tracer les fichiers exécutables Linux au lieu des utilitaires standard truss et ktrace, qui ne peuvent pas encore décoder certains indicateurs et structures spécifiques à Linux. De plus, le paquet linux-ltp avec les exécutables du Linux Test Project a été ajouté et les problèmes de compatibilité avec les exécutables liés aux nouvelles versions de la glibc ont été résolus ;
    • La mise en œuvre des opérations d'invalidation retardée dans le mécanisme pmap a été transférée à l'utilisation d'un algorithme de traitement de file d'attente fonctionnant sans verrous, ce qui a permis de résoudre des problèmes d'évolutivité lors de l'exécution d'un grand nombre d'opérations de démappage en parallèle ;
    • Le mécanisme de blocage de vnode lors de l'exécution des appels système de la famille execve() a été modifié, ce qui a permis d'obtenir une efficacité accrue lors de l'exécution simultanée d'execve() pour le même fichier (par exemple, lors d'opérations d'assemblage avec parallélisation du lancement du compilateur);
  • sécurité
    • L'hyperviseur bhyve continue d'améliorer la prise en charge de la migration en direct des environnements invités d'un hôte à un autre et la fonctionnalité Enregistrer/Restaurer, qui vous permet de geler le système invité, d'enregistrer l'état dans un fichier, puis de reprendre l'exécution.
    • Grâce à l'utilisation de la bibliothèque libvdsk, bhyve a ajouté la prise en charge des images disque au format QCOW2. Nécessite une installation pour fonctionner
      spécialement modifié version de bhyve, qui a été convertie pour utiliser des gestionnaires d'opérations de fichiers basés sur libvdsk. Au cours de la période de référence, libvdsk a également réalisé des travaux visant à simplifier l'intégration de la prise en charge de nouveaux formats, à améliorer les performances de lecture et d'écriture et à ajouter la prise en charge de la copie sur écriture. Parmi les tâches restantes, on note l'intégration de libvdsk dans la structure principale de bhyve ;

    • Un système de collecte d'informations sur le trafic a été ajouté aux ports
      Maltrail, qui vous permet de créer des pièges pour les requêtes réseau malveillantes (les adresses IP et les domaines des listes noires sont vérifiées) et d'envoyer des informations sur l'activité détectée à un serveur centralisé pour un blocage ou une analyse ultérieurs des tentatives d'attaque ;

    • Des plates-formes ont été ajoutées aux ports pour détecter les attaques, analyser les journaux et surveiller l'intégrité des fichiers. Wazuh (fork d'Ossec avec support d'intégration avec Pile ELK);
  • Sous-système réseau
    • Le pilote ena a été mis à jour pour prendre en charge la deuxième génération d'adaptateurs réseau ENAv2 (Elastic Network Adapter) utilisés dans l'infrastructure Elastic Compute Cloud (EC2) pour organiser la communication entre les nœuds EC2 à des vitesses allant jusqu'à 25 Gb/s. La prise en charge de NETMAP a été ajoutée au pilote ena.
    • FreeBSD HEAD adopte une nouvelle pile MMC/SD, basée sur le framework CAM et permettant de connecter des périphériques avec une interface SDIO (Secure Digital I/O). Par exemple, SDIO est utilisé dans les modules WiFi et Bluetooth de nombreuses cartes, comme le Raspberry Pi 3. La nouvelle pile permet également d'utiliser l'interface CAM pour envoyer des commandes SD depuis des applications dans l'espace utilisateur, ce qui permet de créer des périphériques. pilotes qui fonctionnent au niveau de l’utilisateur. Les travaux ont commencé sur la création de pilotes pour les puces sans fil Broadcom fonctionnant en mode FullMAC (côté puce, il exécute un semblant de son propre système d'exploitation avec des implémentations de sa pile sans fil 802.11) ;
    • Des travaux sont en cours pour implémenter NFSv4.2 (RFC-7862) pour FreeBSD. La nouvelle version de NFS ajoute le support des fonctions posix_fadvise, posix_fallocate, les modes SEEKHOLE/SEEKDATA dans lseek, et l'opération de copie locale de parties d'un fichier sur le serveur (sans transfert vers le client).

      FreeBSD fournit actuellement un support de base pour les opérations LayoutError, IOAdvise, Allocate et Copy. Il ne reste plus qu'à implémenter l'opération Seek requise pour utiliser lseek(SEEKHOLE/SEEKDATA) avec NFS. La prise en charge de NFSv4.2 est prévue pour FreeBSD 13 ;

  • Systèmes de stockage et de fichiers
    • Le projet de refonte du pilote du sous-système FUSE (File system in USErspace), qui permet de créer des implémentations de systèmes de fichiers dans l'espace utilisateur, est en voie d'achèvement. Le pilote initialement fourni est obsolète et contient de nombreux bugs. Dans le cadre du projet de modernisation des pilotes, la prise en charge du protocole FUSE 7.23 a été implémentée (la version précédente 7.8, sortie il y a 11 ans, était prise en charge), du code a été ajouté pour vérifier les droits d'accès côté noyau (« -o default_permissions »), des appels à VOP_MKNOD, VOP_BMAP et VOP_ADVLOCK ont été ajoutés, la possibilité d'interrompre les opérations FUSE, la prise en charge supplémentaire des canaux sans nom et des sockets Unix dans les fusefs, la possibilité d'utiliser kqueue pour /dev/fuse, la mise à jour autorisée des paramètres de montage via "mount -u", la prise en charge ajoutée pour l'exportation de fusefs via NFS, implémentation de la comptabilité RLIMIT_FSIZE, ajout des indicateurs FOPEN_KEEP_CACHE et FUSE_ASYNC_READ, des optimisations significatives des performances ont été apportées et l'organisation de la mise en cache a été améliorée ;
    • La prise en charge de l'opération BIO_DELETE a été ajoutée au code du pager d'échange, ce qui vous permet d'utiliser la commande TRIM lors de la suppression de blocs des disques SSD pour augmenter leur durée de vie.
  • Assistance matérielle
    • Les travaux se poursuivent pour mettre en œuvre la prise en charge du SoC ARM64 Broadcom BCM5871X avec les processeurs ARMv8 Cortex-A57, destinés à être utilisés dans les routeurs, les passerelles et le stockage réseau. Au cours de la période de référence, la prise en charge des bus iProc PCIe internes et externes a été améliorée, la prise en charge de BNXT Ethernet a été ajoutée et des travaux sont en cours pour utiliser le moteur de chiffrement intégré pour accélérer IPsec. L'intégration du code dans la branche HEAD est attendue au second semestre ;
    • Les travaux ont commencé sur la prise en charge du SoC NXP LS64A 1046 bits basé sur le processeur ARMv8 Cortex-A72 avec un moteur d'accélération du traitement des paquets réseau intégré, Ethernet 10 Go, PCIe 3.0, SATA 3.0 et USB 3.0. La prise en charge de la plateforme de base (SMP multi-utilisateurs) et de SATA 3.0 a déjà été implémentée. La prise en charge de USB 3.0, SD/MMC et I2C est en cours de développement. Les plans incluent la prise en charge d'Ethernet, GPIO et QSPI. La fin des travaux et l'intégration dans la branche HEAD sont attendues au 4ème trimestre 2019.
    • Pilotes mlx5en et mlx5ib mis à jour pour les adaptateurs Ethernet et InfiniBand Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] et ConnectX-6 [Dx]. Ajout de la prise en charge des adaptateurs Mellanox Socket Direct (ConnectX-6), permettant un débit allant jusqu'à 200 Gb/s sur le bus PCIe Gen 3.0. Pour les puces BlueField multicœurs, la prise en charge du pilote RShim a été ajoutée. Le package mstflint avec un ensemble d'utilitaires de diagnostic pour les adaptateurs Mellanox a été ajouté aux ports ;
  • Système d'applications et de ports
    • Les composants de la pile graphique ont été mis à jour. Le pilote drm.ko (Direct Rendering Manager) a été porté depuis le noyau Linux 5.0. Ce pilote est considéré comme expérimental et a été ajouté à l'arborescence des ports sous le nom Graphics/drm-devel-kmod. Étant donné que le pilote utilise le framework Linux KPI mis à jour pour être compatible avec l'API DRM du noyau Linux, FreeBSD CURRENT est requis pour s'exécuter. Le pilote drm vboxvideo.ko pour le GPU virtuel VirtualBox a également été porté depuis Linux. Le package Mesa a été mis à jour vers la version 18.3.2 et a basculé pour utiliser LLVM à partir du port devel/llvm80 au lieu de devel/llvm60.
    • L'arborescence des ports FreeBSD a dépassé les 37000 2146 ports, le nombre de PR non fermés reste à 7837 172. Au cours de la période de référence, 5.7 3.6 modifications ont été apportées par 2.5 développeurs. Trois nouveaux participants ont reçu le droit de s'engager. Parmi les mises à jour de version importantes dans les ports figurent : MySQL 4.8, Python 1.0, Ruby 68.0, Samba 75.0.3770.100, Julia 3.6, Firefox 2.7, Chromium XNUMX. Tous les ports Go ont été convertis pour utiliser l'indicateur "USES=go". Ajout de l'indicateur "USES=cabal" au gestionnaire de packages Cabal utilisé pour le code Haskell. Le mode de protection stricte de la pile est activé. La version par défaut de Python est XNUMX au lieu de XNUMX.
    • La version de l'utilitaire a été préparée nsysctl1.0, qui propose un analogue de /sbin/sysctl qui utilise libxo pour la sortie et fournissant un ensemble étendu d’options. Nsysctl peut être utilisé pour surveiller visuellement l'état des valeurs sysctl et présenter des informations sur les objets sous une forme structurée. La sortie aux formats XML, JSON et HTML est possible ;

Source: opennet.ru

Ajouter un commentaire