Informe de progreso de FreeBSD Q2019 XNUMX

publicado Informe sobre el desarrollo del proyecto FreeBSD de abril a junio de 2019. Entre los cambios podemos destacar:

  • Preguntas generales y de sistema.
    • El equipo central decidió establecer un grupo de trabajo para explorar la posibilidad de mover el código fuente del sistema de control de fuente centralizado Subversion al sistema descentralizado Git.
    • Realicé pruebas fuzz del kernel de FreeBSD utilizando el sistema. sizkaller y se corrigieron varios errores identificados. Se agregó una capa para pruebas difusas de bibliotecas para compatibilidad con un entorno de 32 bits en sistemas con un kernel de 64 bits. Se ha implementado la capacidad de ejecutar syzkaller en máquinas virtuales basadas en bhyve. En la siguiente etapa, está previsto ampliar la cobertura de las pruebas de llamadas al sistema, utilizar el desinfectante LLVM para comprobar el kernel, utilizar netdump para guardar los volcados del kernel durante fallos durante las pruebas de fuzzing, etc.
    • Se ha comenzado a trabajar para actualizar la implementación de zlib a nivel del kernel. Para el acceso del kernel al código zlib, se cambió el nombre del directorio contrib/zlib a sys/contrib/zlib, y también se cambió el nombre del archivo de encabezado crc.h para evitar conflictos con zlib/crc.h. Se limpió el código heredado que dependía de zlib e inflate. A continuación, se planea brindar la capacidad de construir el kernel simultáneamente con el zlib antiguo y el nuevo para la transferencia gradual a la nueva versión de funciones que utilizan compresión;
    • Se ha actualizado la infraestructura de emulación del entorno Linux (Linuxulator). Mayor soporte para herramientas de depuración de Linux, como la utilidad strace. El paquete linux-c7-strace se ha agregado a los puertos, que se puede usar para rastrear archivos ejecutables de Linux en lugar de las utilidades estándar truss y ktrace, que aún no pueden decodificar algunos indicadores y estructuras específicos de Linux. Además, se ha agregado el paquete linux-ltp con los ejecutables de Linux Test Project y se han resuelto problemas de compatibilidad con ejecutables vinculados con nuevas versiones de glibc;
    • La implementación de operaciones de invalidación retardada en el mecanismo pmap se ha trasladado al uso de un algoritmo de procesamiento de colas que funciona sin bloqueos, lo que ha permitido resolver problemas de escalabilidad al realizar una gran cantidad de operaciones paralelas de desasignación;
    • Se modificó el mecanismo de bloqueo de vnode durante la ejecución de llamadas al sistema de la familia execve(), lo que permitió lograr una mayor eficiencia al ejecutar execve() simultáneamente para el mismo archivo (por ejemplo, al realizar operaciones de ensamblaje con paralelización). del lanzamiento del compilador);
  • seguridad
    • El hipervisor bhyve continúa mejorando el soporte para la migración en vivo de entornos invitados de un host a otro y la funcionalidad Guardar/Restaurar, que le permite congelar el sistema invitado, guardar el estado en un archivo y luego reanudar la ejecución.
    • Mediante el uso de la biblioteca libvdsk, se ha agregado a bhyve soporte para imágenes de disco en formato QCOW2. Requiere instalación para funcionar.
      especialmente modificado versión de bhyve, que se ha convertido para utilizar controladores de operaciones de archivos basados ​​en libvdsk. Durante el período del informe, libvdsk también trabajó para simplificar la integración del soporte para nuevos formatos, mejoró el rendimiento de lectura y escritura y agregó soporte para Copy-On-Write. De las tareas restantes, destaca la integración de libvdsk en la estructura principal de bhyve;

    • Se incorpora en los puertos un sistema de recogida de información del tráfico
      maltrail, que le permite crear trampas para solicitudes de red maliciosas (se verifican las IP y los dominios de las listas negras) y enviar información sobre la actividad detectada a un servidor centralizado para su posterior bloqueo o análisis de intentos de ataque;

    • Se han agregado plataformas a los puertos para detectar ataques, analizar registros y monitorear la integridad de los archivos. wazuh (bifurcación de Ossec con soporte para integración con Pila ELK);
  • Subsistema de red
    • El controlador ena se ha actualizado para admitir la segunda generación de adaptadores de red ENAv2 (Elastic Network Adapter) utilizados en la infraestructura Elastic Compute Cloud (EC2) para organizar la comunicación entre nodos EC2 a velocidades de hasta 25 Gb/s. Se ha agregado compatibilidad con NETMAP al controlador ena.
    • FreeBSD HEAD adopta una nueva pila MMC/SD, basada en el marco CAM y que le permite conectar dispositivos con una interfaz SDIO (Secure Digital I/O). Por ejemplo, SDIO se utiliza en módulos WiFi y Bluetooth para muchas placas, como Raspberry Pi 3. La nueva pila también permite utilizar la interfaz CAM para enviar comandos SD desde aplicaciones en el espacio del usuario, lo que hace posible crear dispositivos controladores que operan a nivel de usuario. Se ha comenzado a trabajar en la creación de controladores para chips inalámbricos Broadcom que funcionan en modo FullMAC (en el lado del chip ejecuta una apariencia de su propio sistema operativo con implementaciones de su pila inalámbrica 802.11);
    • Se está trabajando para implementar NFSv4.2 (RFC-7862) para FreeBSD. La nueva versión de NFS agrega soporte para las funciones posix_fadvise, posix_fallocate, modos SEEKHOLE/SEEKDATA en lseek y la operación de copia local de partes de un archivo en el servidor (sin transferencia al cliente).

      FreeBSD actualmente proporciona soporte básico para las operaciones LayoutError, IOAdvise, Allocate y Copy. Todo lo que queda es implementar la operación de búsqueda requerida para usar lseek(SEEKHOLE/SEEKDATA) con NFS. Está previsto que FreeBSD 4.2 admita NFSv13;

  • Sistemas de almacenamiento y archivos.
    • El proyecto para reelaborar el controlador del subsistema FUSE (Sistema de archivos en USErspace), que permite crear implementaciones de sistemas de archivos en el espacio del usuario, está a punto de finalizar. El controlador suministrado originalmente está desactualizado y contiene muchos errores. Como parte del proyecto de modernización de controladores, se implementó soporte para el protocolo FUSE 7.23 (anteriormente era compatible con la versión 7.8, lanzada hace 11 años), se agregó código para verificar los derechos de acceso en el lado del kernel (“-o default_permissions”), llamadas a Se agregaron VOP_MKNOD, VOP_BMAP y VOP_ADVLOCK, la capacidad de interrumpir las operaciones FUSE, se agregó soporte para tuberías sin nombre y sockets Unix en fusefs, la capacidad de usar kqueue para /dev/fuse, se permitió actualizar los parámetros de montaje a través de "mount -u", se agregó soporte para exportar fusefs a través de NFS, se implementó la contabilidad RLIMIT_FSIZE, se agregaron indicadores FOPEN_KEEP_CACHE y FUSE_ASYNC_READ, se realizaron importantes optimizaciones de rendimiento y se mejoró el almacenamiento en caché;
    • Se agregó soporte para la operación BIO_DELETE al código del buscapersonas de intercambio, lo que le permite usar el comando TRIM al eliminar bloques de las unidades SSD para aumentar su vida útil.
  • Soporte de hardware
    • Se continúa trabajando para implementar soporte para el SoC ARM64 Broadcom BCM5871X con procesadores ARMv8 Cortex-A57, orientado a su uso en routers, gateways y almacenamiento en red. Durante el período del informe, se mejoró el soporte para buses iProc PCIe internos y externos, se agregó soporte para BNXT Ethernet y se está trabajando para utilizar el motor criptográfico incorporado para acelerar IPsec. Se espera la integración del código en la rama HEAD en la segunda mitad del año;
    • Se ha comenzado a trabajar en el soporte del SoC NXP LS64A de 1046 bits basado en el procesador ARMv8 Cortex-A72 con motor de aceleración de procesamiento de paquetes de red integrado, Ethernet de 10 Gb, PCIe 3.0, SATA 3.0 y USB 3.0. Ya se ha implementado el soporte para la plataforma base (SMP multiusuario) y SATA 3.0. Se está desarrollando soporte para USB 3.0, SD/MMC e I2C. Los planes incluyen soporte para Ethernet, GPIO y QSPI. Se espera la finalización del trabajo y la inclusión en la sucursal HEAD en el cuarto trimestre de 4.
    • Controladores mlx5en y mlx5ib actualizados para los adaptadores Ethernet e InfiniBand Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] y ConnectX-6 [Dx]. Se agregó soporte para adaptadores Mellanox Socket Direct (ConnectX-6), lo que permite un rendimiento de hasta 200 Gb/s en el bus PCIe Gen 3.0. Para chips BlueField de múltiples núcleos, se agregó soporte para el controlador RShim. Se ha agregado a los puertos el paquete mstflint con un conjunto de utilidades de diagnóstico para adaptadores Mellanox;
  • Sistema de aplicaciones y puertos.
    • Se han actualizado los componentes de la pila de gráficos. El controlador drm.ko (Direct Rendering Manager) ha sido portado desde el kernel de Linux 5.0. Este controlador se considera experimental y se ha agregado al árbol de puertos como gráficos/drm-devel-kmod. Dado que el controlador utiliza el marco KPI de Linux actualizado para ser compatible con la API DRM del kernel de Linux, se requiere FreeBSD CURRENT para ejecutarse. El controlador vboxvideo.ko drm para la GPU virtual VirtualBox también ha sido portado desde Linux. El paquete Mesa se actualizó a la versión 18.3.2 y se cambió para usar LLVM desde el puerto devel/llvm80 en lugar de devel/llvm60.
    • El árbol de ports de FreeBSD ha superado los 37000 ports, el número de PR no cerrados se mantiene en 2146. Durante el periodo del informe, se realizaron 7837 cambios por parte de 172 desarrolladores. Tres nuevos participantes recibieron derechos de comprometido. Entre las actualizaciones de versión importantes en los ports se encuentran: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Todos los puertos Go se han convertido para utilizar el indicador "USES=go". Se agregó el indicador "USES=cabal" al administrador de paquetes Cabal utilizado para el código Haskell. El modo de protección estricta de la pila está habilitado. La versión predeterminada de Python es 3.6 en lugar de 2.7.
    • Se ha preparado la versión de la utilidad. nsysctl 1.0, que ofrece un análogo de /sbin/sysctl que usa lixo para la producción y proporcionando un conjunto ampliado de opciones. Nsysctl se puede utilizar para monitorear visualmente el estado de los valores de sysctl y presentar información sobre objetos en forma estructurada. Es posible la salida en formatos XML, JSON y HTML;

Fuente: opennet.ru

Añadir un comentario