Después de 11 meses de desarrollo, se publica la versión FreeBSD 13.2. Se han creado imágenes de instalación para las arquitecturas amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 y riscv64. Además, se han preparado compilaciones para sistemas de virtualización (QCOW2, VHD, VMDK, raw) y entornos en la nube como Amazon EC2, Google Compute Engine y Vagrant.
Cambios clave:
- Se ha implementado la posibilidad de crear instantáneas de sistemas de archivos UFS y FFS que tienen habilitado el registro (soft updates). También se ha añadido soporte para la creación de volcado en segundo plano (ejecutando dump con la opción '-L') con el contenido de los sistemas de archivos UFS montados con el registro habilitado. De las funcionalidades que no están disponibles al utilizar el registro, permanece la ejecución en segundo plano del chequeo de integridad mediante la utilidad fsck.
- Se ha incluido en el núcleo el controlador wg con la implementación de la interfaz de red para VPN WireGuard. Para utilizar los algoritmos criptográficos necesarios para el controlador, se ha ampliado la API de la subsistema criptográfico del núcleo FreeBSD, que ahora incluye un enlace que permite utilizar a través de la API criptográfica estándar algoritmos no soportados en FreeBSD de la biblioteca libsodium. Durante el desarrollo, también se ha llevado a cabo una optimización para una distribución uniforme de la carga de trabajo de cifrado y descifrado de paquetes entre los núcleos de la CPU, lo que ha permitido reducir los costes adicionales en el procesamiento de paquetes de WireGuard.
El intento anterior de integrar WireGuard en FreeBSD se realizó en 2020, pero terminó en un escándalo, tras el cual el código ya agregado fue eliminado por su baja calidad, mal manejo de los búferes, uso de marcadores en lugar de comprobaciones, implementación incompleta del protocolo y violaciones de la licencia GPL. La nueva implementación ha sido preparada en colaboración entre los principales equipos de desarrollo de FreeBSD y WireGuard, con la participación de Jason Donenfeld, el autor de la VPN WireGuard, y John Baldwin, un conocido desarrollador de FreeBSD. Antes de aceptar el nuevo código, con el apoyo de la organización FreeBSD Foundation, se llevó a cabo una revisión completa de los cambios.
- Se ha implementado el soporte del protocolo de comunicación Netlink (RFC 3549), utilizado en Linux para organizar la interacción entre el núcleo y los procesos en el espacio de usuario. El proyecto se limita al soporte de la familia de operaciones NETLINK_ROUTE para gestionar el estado del subsistema de red en el núcleo, lo que permite utilizar la utilidad ip de FreeBSD del paquete iproute2 para gestionar las interfaces de red, establecer direcciones IP, configurar la rutas y manipular objetos nexthop que almacenan datos sobre el estado, utilizados para la transmisión de paquetes al destino deseado.
- Para todos los archivos ejecutables del sistema base en plataformas de 64 bits, la aleatorización del espacio de direcciones (ASLR, Address Space Layout Randomization) está habilitada por defecto. Para desactivar ASLR de manera selectiva, se pueden usar los comandos «proccontrol -m aslr -s disable» o «elfctl -e +noaslr».
- En ipfw, se utilizan tablas base (Radix table) para buscar direcciones MAC, lo que permite crear tablas con direcciones MAC y utilizarlas para filtrar el tráfico. Por ejemplo: ipfw table 1 create type mac ipfw table 1 add 11:22:33:44:55:66/48 ipfw add skipto tablearg src-mac ‘table(1)’ ipfw add deny src-mac ‘table(1, 100)’ ipfw add deny lookup dst-mac 1
- Se han añadido y están disponibles para su carga a través de loader.conf los módulos del núcleo dpdk_lpm4 y dpdk_lpm6 con la implementación del algoritmo de búsqueda de rutas DIR-24-8 para IPv4/IPv6, lo que permite optimizar las funciones de enrutamiento para hosts con tablas de enrutamiento muy grandes (en pruebas se observa un aumento de velocidad del 25%). Para configurar los módulos, se puede utilizar la utilidad de ruta incorporada (se ha añadido la opción FIB_ALGO).
- La implementación del sistema de archivos ZFS se ha actualizado a la versión OpenZFS 2.1.9. En el script de inicio zfskeys se asegura la carga automática de las claves almacenadas en el sistema de archivos ZFS. Se ha añadido un nuevo script RC zpoolreguid para asignar un identificador GUID a uno o varios zpools (por ejemplo, útil para entornos de virtualización con datos compartidos).
- En el hipervisor Bhyve y el módulo vmm se ha implementado el soporte para la conexión a un sistema huésped de más de 15 CPU virtuales (regulado a través de sysctl hw.vmm.maxcpu). En la utilidad bhyve se ha implementado la emulación del dispositivo virtio-input, mediante el cual se pueden inyectar eventos de entrada del teclado y el ratón en el sistema huésped.
- En KTLS, la implementación del protocolo TLS que funciona a nivel de núcleo en FreeBSD, se ha añadido soporte para la aceleración por hardware de TLS 1.3 mediante la delegación a la tarjeta de red de algunas operaciones relacionadas con el procesamiento de paquetes entrantes cifrados. Anteriormente, esta posibilidad estaba disponible para TLS 1.1 y TLS 1.2.
- En el script de inicio growfs, durante la expansión del sistema de archivos raíz, se garantiza la adición de una partición de intercambio si dicha partición estaba inicialmente ausente (por ejemplo, es útil al instalar una imagen del sistema en una tarjeta SD). Para gestionar el tamaño de la memoria de intercambio, se ha añadido un nuevo parámetro growfs_swap_size en rc.conf.
- En el script de inicio hostid, se asegura la generación de un UUID aleatorio en caso de que el archivo /etc/hostid esté ausente y no sea posible obtener el UUID del hardware. También se ha añadido el archivo /etc/machine-id con una representación compacta del identificador del host (sin guiones).
- Se han añadido las variables defaultrouter_fibN e ipv6_defaultrouter_fibN a rc.conf, a través de las cuales se pueden agregar rutas por defecto en tablas FIB diferentes a la primaria.
- Se ha añadido soporte para hashes SHA-512/224 a la biblioteca libmd.
- Se ha implementado soporte para la semántica de funciones utilizadas en Linux en la biblioteca pthread.
- Se ha añadido soporte para la decodificación de llamadas al sistema de Linux en kdump. En kdump y sysdecode se ha añadido soporte para el rastreo de llamadas al sistema al estilo de Linux.
- La utilidad killall ahora permite enviar señales a procesos vinculados a un terminal específico (por ejemplo, 'killall -t pts/1').
- Se ha añadido la utilidad nproc para mostrar el número de bloques de computación disponibles para el proceso actual.
- Se ha añadido soporte para la decodificación de los parámetros ACS (Servicios de Control de Acceso) en la utilidad pciconf.
- Se ha añadido la configuración SPLIT_KERNEL_DEBUG al núcleo, que permite guardar información de depuración del núcleo y de los módulos del núcleo en archivos separados.
- En el ABI de Linux, se ha casi completado la implementación del mecanismo vDSO (objetos compartidos dinámicos virtuales), que proporciona un conjunto limitado de llamadas al sistema accesibles en el espacio de usuario sin cambio de contexto. El ABI de Linux en sistemas ARM64 ha sido llevado a la paridad con la implementación para la arquitectura AMD64.
- Se ha mejorado el soporte de hardware. Se agregó soporte para el monitoreo del rendimiento (hwpmc) para CPUs Intel Alder Lake. El controlador iwlwifi se ha actualizado para tarjetas inalámbricas Intel con soporte para nuevos chips y el estándar 802.11ac. Se ha añadido el controlador rtw88 para tarjetas inalámbricas Realtek con interfaz PCI. Se han ampliado las capacidades de la capa linuxkpi para su uso con controladores de Linux en FreeBSD.
- La biblioteca OpenSSL se ha actualizado a la versión 1.1.1t, LLVM/Clang a la versión 14.0.5, y el servidor y cliente SSH se han actualizado a OpenSSH 9.2p1 (la versión anterior era OpenSSH 8.8p1). También se han actualizado las versiones de bc 6.2.4, expat 2.5.0, file 5.43, less 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, zlib 1.2.13.
Además, se ha anunciado la obsolescencia y eliminación a partir de la rama FreeBSD 14.0 de las contraseñas de un solo uso OPIE, los controladores ce y cp, los controladores para tarjetas con interfaz ISA, las utilidades mergemaster y minigzip, los componentes ATM en netgraph (NgATM), el proceso en segundo plano telnetd y la clase VINUM en geom.
Fuente: opennet.ru
