Informe de progreso do segundo trimestre de 2019 de FreeBSD

publicado informe sobre o desenvolvemento do proxecto FreeBSD de abril a xuño de 2019. Entre os cambios podemos sinalar:

  • Cuestións xerais e sistémicas
    • O equipo Core decidiu establecer un grupo de traballo para explorar a posibilidade de mover o código fonte do sistema centralizado de control de fontes Subversion ao sistema Git descentralizado.
    • Realizáronse probas fuzz do núcleo de FreeBSD usando o sistema syzkaller e corrixíronse unha serie de erros identificados. Engadiuse unha capa para probas confusas de bibliotecas para a compatibilidade cun ambiente de 32 bits en sistemas cun núcleo de 64 bits. Implementouse a capacidade de executar syzkaller en máquinas virtuais baseadas en bhyve. Na seguinte fase, está previsto ampliar a cobertura das probas de chamadas do sistema, usar o desinfectante LLVM para comprobar o núcleo, usar netdump para gardar os volcados do núcleo durante os fallos durante as probas de fuzzing, etc.
    • Comezou a traballar para actualizar a implementación de zlib a nivel do núcleo. Para o acceso do núcleo ao código zlib, o directorio contrib/zlib cambiou o nome a sys/contrib/zlib, e tamén se renomeou ao ficheiro de cabeceira crc.h para evitar conflitos con zlib/crc.h. Limpou o código herdado que dependía de zlib e inflate. A continuación, está previsto proporcionar a capacidade de construír o núcleo simultaneamente co antigo e o novo zlib para a transferencia gradual á nova versión das funcións que usan a compresión;
    • Actualizouse a infraestrutura de emulación do entorno Linux (Linuxulator). Aumento do soporte para ferramentas de depuración de Linux como a utilidade strace. Engadiuse aos portos o paquete linux-c7-strace, que se pode usar para rastrexar ficheiros executables de Linux en lugar das utilidades truss e ktrace estándar, que aínda non poden decodificar algunhas marcas e estruturas específicas de Linux. Ademais, engadiuse o paquete linux-ltp cos executables do Proxecto de proba de Linux e resolvéronse os problemas de compatibilidade cos executables vinculados a novas versións de glibc;
    • A implantación de operacións de invalidación diferida no mecanismo pmap trasladouse ao uso dun algoritmo de procesamento de filas que funciona sen bloqueos, o que permitiu resolver problemas de escalabilidade ao realizar un gran número de operacións paralelas de desmapa;
    • Cambiouse o mecanismo para bloquear vnode durante a execución de chamadas ao sistema da familia execve(), o que permitiu acadar unha maior eficiencia ao executar simultaneamente execve() para o mesmo ficheiro (por exemplo, cando se realizan operacións de montaxe con paralelización). do lanzamento do compilador);
  • Безопасность
    • O hipervisor bhyve segue mellorando o soporte para a migración en directo de ambientes convidados dun host a outro e a funcionalidade Gardar/Restaurar, que lle permite conxelar o sistema invitado, gardar o estado nun ficheiro e, a continuación, retomar a execución.
    • Mediante o uso da biblioteca libvdsk, bhyve engadiu soporte para imaxes de disco no formato QCOW2. Require instalación para funcionar
      especialmente modificado versión de bhyve, que se converteu para utilizar controladores de operacións de ficheiros baseados en libvdsk. Durante o período de informe, libvdsk tamén realizou traballos para simplificar a integración de compatibilidade con novos formatos, mellorou o rendemento de lectura e escritura e engadiu soporte para Copy-On-Write. Das tarefas restantes, nótase a integración de libvdsk na estrutura principal de bhyve;

    • Engadiuse aos portos un sistema de recollida de información de tráfico
      Maltrail, que permite crear trampas para solicitudes de rede maliciosas (compróbanse as IP e os dominios das listas negras) e enviar información sobre a actividade detectada a un servidor centralizado para o posterior bloqueo ou análise dos intentos de ataque;

    • Engadíronse plataformas aos portos para detectar ataques, analizar rexistros e supervisar a integridade dos ficheiros Wazuh (fork de Ossec con soporte para integración con ELK-Pila);
  • Subsistema de rede
    • Actualizouse o controlador ena para admitir a segunda xeración de adaptadores de rede ENAv2 (adaptador de rede elástico) utilizados na infraestrutura de Elastic Compute Cloud (EC2) para organizar a comunicación entre os nodos EC2 a velocidades de ata 25 Gb/s. Engadiuse soporte NETMAP ao controlador ena.
    • FreeBSD HEAD adopta unha nova pila MMC/SD, baseada no marco CAM e que lle permite conectar dispositivos cunha interface SDIO (Secure Digital I/O). Por exemplo, SDIO utilízase en módulos WiFi e Bluetooth para moitas placas, como a Raspberry Pi 3. A nova pila tamén permite utilizar a interface CAM para enviar comandos SD desde aplicacións no espazo do usuario, o que permite crear un dispositivo. controladores que operan a nivel de usuario. Comezou a traballar na creación de controladores para chips sen fíos Broadcom que funcionan en modo FullMAC (no lado do chip executa unha apariencia do seu propio sistema operativo con implementacións da súa pila sen fíos 802.11);
    • Estase traballando para implementar NFSv4.2 (RFC-7862) para FreeBSD. A nova versión de NFS engade soporte para as funcións posix_fadvise, posix_fallocate, os modos SEEKHOLE/SEEKDATA en lseek e a operación de copia local de partes dun ficheiro no servidor (sen transferencia ao cliente).

      FreeBSD ofrece actualmente soporte básico para as operacións LayoutError, IOAdvise, Allocate e Copy. Todo o que queda é implementar a operación Seek necesaria para usar lseek(SEEKHOLE/SEEKDATA) con NFS. O soporte de NFSv4.2 está previsto para FreeBSD 13;

  • Almacenamento e sistemas de ficheiros
    • O proxecto para reelaborar o controlador do subsistema FUSE (File system in USErspace), que permite crear implementacións de sistemas de ficheiros no espazo do usuario, está a piques de rematar. O controlador proporcionado orixinalmente está desactualizado e contén moitos erros. Como parte do proxecto de modernización do controlador, implementouse o soporte para o protocolo FUSE 7.23 (anteriormente admitíase a versión 7.8, publicada hai 11 anos), engadiuse código para comprobar os dereitos de acceso no lado do núcleo ("-o default_permissions"). Engadíronse VOP_MKNOD, VOP_BMAP e VOP_ADVLOCK, a posibilidade de interromper as operacións de FUSE, engadiu soporte para tubos sen nome e sockets Unix en fusefs, a posibilidade de usar kqueue para /dev/fuse, permitiu actualizar os parámetros de montaxe mediante "mount -u", soporte adicional. para exportar fusefs a través de NFS, implementouse a contabilidade RLIMIT_FSIZE, engadiu marcas FOPEN_KEEP_CACHE e FUSE_ASYNC_READ, fixéronse importantes optimizacións de rendemento e mellorouse a organización da caché;
    • Compatibilidade coa operación BIO_DELETE engadiuse ao código de intercambio de buscapersonas, o que che permite utilizar o comando TRIM ao eliminar bloques das unidades SSD para aumentar a súa vida útil.
  • Soporte de hardware
    • Continúa o traballo para implementar soporte para ARM64 SoC Broadcom BCM5871X con procesadores ARMv8 Cortex-A57, destinado ao seu uso en routers, pasarelas e almacenamento de rede. Durante o período de informe, mellorouse o soporte para buses iProc PCIe internos e externos, engadiuse soporte para BNXT Ethernet e estase traballando para utilizar o motor criptográfico integrado para acelerar IPsec. Espérase a integración do código na rama HEAD no segundo semestre do ano;
    • Comezou a traballar no soporte para o SoC NXP LS64A de 1046 bits baseado no procesador ARMv8 Cortex-A72 cun motor de aceleración de procesamento de paquetes de rede integrado, Ethernet de 10 Gb, PCIe 3.0, SATA 3.0 e USB 3.0. Xa se implementou o soporte para a plataforma base (SMP multiusuario) e SATA 3.0. O soporte para USB 3.0, SD/MMC e I2C está en desenvolvemento. Os plans inclúen soporte para Ethernet, GPIO e QSPI. Prevese a finalización dos traballos e a súa inclusión na rama HEAD no cuarto trimestre de 4.
    • Controladores mlx5en e mlx5ib actualizados para os adaptadores Ethernet e InfiniBand de Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] e ConnectX-6 [Dx]. Engadiuse compatibilidade con adaptadores Mellanox Socket Direct (ConnectX-6), que permite un rendemento de ata 200 Gb/s no bus PCIe Gen 3.0. Para chips BlueField multinúcleo, engadiuse soporte para o controlador RShim. Engadiuse aos portos o paquete mstflint cun conxunto de utilidades de diagnóstico para adaptadores Mellanox;
  • Aplicacións e sistema portuario
    • Actualizáronse os compoñentes da pila de gráficos. O controlador drm.ko (Direct Rendering Manager) portouse desde o núcleo Linux 5.0. Este controlador considérase experimental e engadiuse á árbore de portos como graphics/drm-devel-kmod. Dado que o controlador usa o marco KPI de Linux actualizado para ser compatible coa API DRM do núcleo de Linux, é necesario que se execute FreeBSD CURRENT. O controlador vboxvideo.ko drm para a GPU virtual VirtualBox tamén foi portado desde Linux. Actualizouse o paquete Mesa para a versión 18.3.2 e cambiouse para usar LLVM desde o porto devel/llvm80 en lugar de devel/llvm60.
    • A árbore de portos de FreeBSD superou os 37000 portos, o número de PR non pechados mantense en 2146. Durante o período de informe, fixéronse 7837 cambios de 172 desenvolvedores. Tres novos participantes recibiron dereitos de compromiso. Entre as actualizacións de versións significativas nos portos están: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Todos os portos Go convertéronse para usar a bandeira "USES=go". Engadiuse a marca "USES=cabal" ao xestor de paquetes Cabal usado para o código Haskell. O modo de protección de pila estrita está activado. A versión predeterminada de Python é 3.6 en lugar de 2.7.
    • Preparouse a versión da utilidade nsysctl 1.0, que ofrece un análogo a /sbin/sysctl que usa libxo para a saída e proporcionar un conxunto ampliado de opcións. Nsysctl pódese usar para supervisar visualmente o estado dos valores sysctl e presentar información sobre obxectos nunha forma estruturada. É posible a saída en formatos XML, JSON e HTML;

Fonte: opennet.ru

Engadir un comentario