Informe de desenvolvemento de FreeBSD para o primeiro trimestre de 2020

publicado informe sobre o desenvolvemento do proxecto FreeBSD de xaneiro a marzo de 2020. Entre os cambios podemos sinalar:

  • Cuestións xerais e sistémicas
    • Eliminouse o conxunto de compiladores GCC da árbore de fontes de FreeBSD-CURRENT, así como as utilidades gperf, gcov e gtc (compilador da árbore de dispositivos) non utilizadas. Todas as plataformas que non admiten Clang pasaron a usar ferramentas de compilación externas instaladas desde portos. O sistema base enviou unha versión obsoleta de GCC 4.2.1 e non foi posible a integración de versións máis novas debido á transición da 4.2.2 á licenza GPLv3, que se considerou inadecuada para os compoñentes base de FreeBSD. As versións actuais de GCC, incluíndo GCC 9, aínda se poden instalar desde paquetes e portos.
    • A infraestrutura de emulación do ambiente Linux (Linuxulator) engadiu soporte para a chamada do sistema sendfile, o modo TCP_CORK (necesario para nginx) e a marca MAP_32BIT (resolve o problema co lanzamento de paquetes con Mono desde Ubuntu Bionic). Resolvéronse os problemas coa resolución de DNS ao usar glibc máis recente que 2.30 (por exemplo, de CentOS 8).
      A infraestrutura de integración continua ofrece a posibilidade de executar traballos LTP (Linux Testing Project) que executan Linuxulator para probar as melloras realizadas no código para admitir Linux. Unhas 400 probas fallan e requiren corrección (algúns erros son causados ​​por falsos positivos, algúns requiren correccións triviais, pero hai outros que requiren engadir soporte para novas chamadas ao sistema para corrixir). Traballouse para limpar o código de Linuxulator e simplificar a depuración. Preparáronse parches con soporte para atributos estendidos e a chamada ao sistema fexecve, pero aínda non se revisaron.

    • Continúan as reunións do grupo de traballo creado para levar a cabo a migración dos códigos fonte do sistema centralizado de control de fontes Subversion ao sistema descentralizado Git. Está en proceso de elaboración un informe con propostas de migración.
    • В rtld (ligador en tempo de execución) mellorou o modo de execución directa ("/libexec/ld-elf.so.1 {ruta} {argumentos}").
    • O proxecto para probas fuzzing do núcleo FreeBSD usando o sistema syzkaller segue desenvolvéndose. Durante o período de informe, elimináronse os problemas na pila de rede e no código para traballar coas táboas de descritores de ficheiros identificadas mediante syzkaller. Despois do diagnóstico de erros, engadíronse cambios á pila SCTP para facilitar a depuración. Engadíronse regras ao conxunto de estrés2 para identificar posibles regresións. Engadiuse soporte para probas fuzz de novas chamadas ao sistema, incluídas as chamadas ao subsistema copy_file_range(), __realpathat() e Capsicum. Continúa o traballo para cubrir a capa de emulación de Linux con probas fuzz. Analizamos e eliminamos os erros observados nos últimos informes de Coverity Scan.
    • O sistema de integración continua pasou a executar todas as probas da rama de cabeza só usando clang/lld. Ao probar RISC-V, garante a formación dunha imaxe de disco completa para realizar probas en QEMU usando OpenSBI. Engadíronse novas tarefas para probar imaxes e máquinas virtuais powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Estase traballando para transferir a suite de probas Kyua dos portos (devel/kyua) ao sistema base para solucionar os problemas (os paquetes instálanse moi lentamente) que xurdan ao utilizar Kyua en novas arquitecturas, o desenvolvemento para o cal se realiza mediante un emulador ou FPGA. A integración no sistema base simplificará significativamente a proba das plataformas integradas e a interface con sistemas de integración continua.
    • Lanzouse un proxecto para optimizar o rendemento do controlador da ponte de rede se_ponte, que utiliza un único mutex para bloquear os datos internos, o que non permite acadar o rendemento desexado en sistemas con gran número de contornas de cárcere ou máquinas virtuais unidas nunha soa rede. Nesta fase, engadíronse probas ao código para evitar que se produzan regresións durante a modernización do traballo con bloqueos. Estase considerando a posibilidade de usar ConcurrencyKit para paralelizar os controladores de transferencia de datos (bridge_input(), bridge_output(), bridge_forward(), ...).
    • Engadiuse unha nova chamada ao sistema sigfastblock para permitir que un fío especifique un bloque de memoria para un controlador de sinal rápido para mellorar o rendemento dos controladores de excepcións.
    • O núcleo engade soporte para instrucións atómicas LSE (Large System Extension) soportadas polos sistemas ARMv8.1. Estas instrucións son necesarias para mellorar o rendemento cando se executan en placas Cavium ThunderX2 e AWS Graviton 2. Os cambios engadidos detectan o soporte LSE e activan dinámicamente a implementación atómica baseada neles. Durante as probas, o uso de LSE permitiu reducir nun 15% o tempo de procesador empregado ao montar o núcleo.
    • Realizouse a optimización do rendemento e ampliouse a funcionalidade do conxunto de ferramentas para ficheiros executables en formato ELF.
      Engadido soporte para almacenar en caché información de depuración DWARF, problemas resoltos nas utilidades elfcopy/objcopy, procesamento de DW_AT_ranges engadido,
      readelf implementa a capacidade de decodificar as marcas PROTMAX_DISABLE, STKGAP_DISABLE e WXNEEDED, así como Xen e GNU Build-ID.

  • Безопасность
    • Para mellorar o rendemento de FreeBSD nos contornos de nube de Azure, estase a traballar para ofrecer soporte ao mecanismo HyperV Socket, que permite o uso dunha interface de socket para a interacción entre o sistema convidado e o ambiente host sen configurar unha rede.
    • Estase traballando para proporcionar compilacións repetibles de FreeBSD, o que permite garantir que os ficheiros executables dos compoñentes do sistema se compilan exactamente a partir dos códigos fonte declarados e non conteñan cambios alleos.
    • Engadiuse á utilidade elfctl a capacidade de controlar a inclusión de mecanismos de protección adicionais (ASLR, PROT_MAX, stack gap, mapeo W+X) a nivel de procesos individuais.
  • Almacenamento e sistemas de ficheiros
    • Estase traballando para implementar a capacidade de NFS para operar a través dunha canle de comunicación cifrada baseada en TLS 1.3, en lugar de usar Kerberos (modo sec=krb5p), que se limita a cifrar só mensaxes RPC e só se implementa no software. A nova implementación usa a pila TLS proporcionada polo núcleo para permitir a aceleración de hardware. O código NFS sobre TLS está case listo para ser probado, pero aínda require traballo para admitir certificados de clientes asinados e adaptar a pila TLS do núcleo para enviar datos NFS (os parches para recibir xa están listos).
  • Soporte de hardware
    • Estase traballando para engadir soporte para CPU Hygon x86 chinés baseado en tecnoloxías AMD;
    • Como parte de CheriBSD, un fork de FreeBSD para arquitectura de procesadores de investigación CHERI (Capability Hardware Enhanced RISC Instructions), continúase implementando soporte para o procesador ARM Morello, que soportará o sistema de control de acceso á memoria CHERI baseado no modelo de seguridade do proxecto Capsicum. Chip Morello están planificando lanzamento en 2021. Actualmente o traballo céntrase en engadir soporte á plataforma Arm Neoverse N1 que alimenta Morello. Presentouse un porto inicial de CheriBSD para a arquitectura RISC-V. O desenvolvemento de CheriBSD continúa para o prototipo de referencia CHERI baseado na arquitectura MIPS64.
    • A portabilidade FreeBSD continúa 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. Actualmente, os controladores QorIQ e LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI están a prepararse para a súa transferencia á composición principal de FreeBSD.
    • O controlador ena actualizouse á versión 2.1.1 con compatibilidade coa segunda xeración de adaptadores de rede ENAv2 (Elastic Network Adapter) utilizados na infraestrutura Elastic Compute Cloud (EC2) para organizar a comunicación entre nodos EC2 a velocidades de ata 25 Gb/ s. Estase preparando unha actualización de ENA 2.2.0.
    • Continúan as melloras no porto FreeBSD para a plataforma powerpc64. O foco é proporcionar un rendemento de calidade en sistemas con procesadores IBM POWER8 e POWER9. Durante o período de informe, FreeBSD-CURRENT foi transferido para usar o compilador LLVM/Clang 10.0 e o enlazador lld en lugar de GCC. Por defecto, os sistemas powerpc64 usan o ABI ELFv2 e o soporte para o ABI ELFv1 foi descontinuado. FreeBSD-STABLE aínda ten gcc 4.2.1. Resolvéronse os problemas cos controladores virtio, aacraid e ixl. Nos sistemas powerpc64 é posible executar QEMU sen compatibilidade con Huge Pages.
    • Continúa o traballo para implementar soporte para a arquitectura RISC-V. Na súa forma actual, FreeBSD xa arranca con éxito na placa SiFive Hifive Unleashed, para a que se prepararon controladores
      UART, SPI e PRCI, admite o firmware OpenSBI e SBI 0.2. Durante o período de informe, o traballo centrouse na migración de GCC a clang e lld.

  • Aplicacións e sistema portuario
    • A colección de portos de FreeBSD cruzou o limiar de 39 mil portos, o número de PR non pechados supera lixeiramente os 2400, dos cales 640 PR aínda non foron clasificados. Durante o período de informe, realizáronse 8146 cambios de 173 desenvolvedores. Catro novos participantes recibiron dereitos de compromiso (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Engadiuse a bandeira USES=qca e eliminouse a bandeira USES=zope (debido á incompatibilidade con Python 3). Estase traballando para eliminar Python 2.7 da árbore de portos: todos os portos baseados en Python 2 deben ser portados a Python 3 ou eliminaranse. O xestor de paquetes pkg foi actualizado para a versión 1.13.2.
    • Actualizáronse os compoñentes da pila de gráficos e os portos relacionados con xorg.
      O servidor X.org actualizouse á versión 1.20.8 (anteriormente enviada na rama 1.18), o que permitiu que FreeBSD utilizase por defecto o backend udev/evdev para manexar os dispositivos de entrada. O paquete Mesa cambiouse para utilizar a extensión DRI3 en lugar de DRI2 de forma predeterminada. Estase traballando para manter os controladores de gráficos, a pila de dispositivos de entrada e os compoñentes drm-kmod (un porto que permite o funcionamento dos módulos amdgpu, i915 e radeon DRM, utilizando o marco linuxkpi para a compatibilidade co xestor de renderización directa do núcleo de Linux) actualizado.

    • O escritorio KDE Plasma, KDE Frameworks, KDE Applications e Qt mantéñense actualizados e actualízanse coas últimas versións. Engadiuse aos portos unha nova aplicación kstars (atlas de estrelas).
    • Traballouse para eliminar cambios regresivos no xestor de fiestras xfwm4 que apareceron despois de actualizar Xfce á versión 4.14 (por exemplo, aparecían artefactos ao decorar ventás).
    • Actualizouse o porto de Wine para lanzar Wine 5.0 (anteriormente ofrecíase 4.0.3).
    • A partir da versión 1.14, o compilador de linguaxe Go engadiu soporte oficial para a arquitectura ARM64 para FreeBSD 12.0.
    • Actualizouse OpenSSH no sistema base para lanzar 7.9p1.
    • A biblioteca sysctlmibinfo2 foi implementada e colocada en portos (devel/libsysctlmibinfo2), proporcionando unha API para acceder á MIB sysctl e traducir os nomes sysctl en identificadores de obxectos (OID).
    • Xerouse unha actualización de distribución NomadBSD 1.3.1, que é unha edición de FreeBSD adaptada para o seu uso como escritorio portátil de arranque desde unha unidade USB. O entorno gráfico baséase nun xestor de fiestras Openbox. Usado para montar unidades DSBMD (se admite a montaxe de CD9660, FAT, HFS+, NTFS, Ext2/3/4), para configurar unha rede sen fíos - wifimgre para controlar o volume - DSBMixer.
    • Comezado traballar sobre a redacción de documentación completa para o xestor do entorno do cárcere pote. Prepárase o Pot 0.11.0 para o lanzamento, que incluirá ferramentas para xestionar a pila de rede.

Fonte: opennet.ru

Engadir un comentario