1 de abril de 2016

Las novedades de Linux 4.1

(Nota: aunque con un retraso enorme, aquí va este post)

Ya se ha anunciado la versión 4.1 de Linux. Esta versión añade soporte de cifrado integrado en Ext4, soporte experimental de arrays RAID compartidos en clúster, un nuevo target del device mapper que permite mantener un registro de todas las escrituras hechas a un dispositivo y que permite reproducirlas, un driver que convierte la memoria de sistemas con memoria persistente en un dispositivo de bloques, posibilidad de desactivar el soporte multiusuario, soporte para el Multiprotocol Label Switching que permite enrutar paquetes basándose en etiquetas de ruta en lugar de direcciones de red, capacidad de asociar programas BPF a sondas kprobes, soporte de ACPI en la arquitectura ARM64, y un driver GEM virtual que permite construir mejores rasterizadores por software. También hay nuevos drivers y muchas pequeñas mejoras. La lista completa de cambios, en inglés, puede encontrarse aquí, como siempre.


· Soporte de cifrado en Ext4

Linux ya proporciona sistemas para cifrar archivos, tales como dm-crypt o ecryptfs, pero tienen ciertos costes de rendimiento y consumo de memoria. En esta versión, el sistema de archivos Ext4 añade soporte nativo para cifrado: tanto los datos como los nombres de los archivos pueden ser cifrados con una clave proporcionada por el usuario. La clave se utiliza para los archivos de un directorio y todos sus subdirectorios. Cuando haya que leer un archivo, si no se ha proporcionado previamente una clave válida, sólo se podrá leer los nombres de archivo cifrados, pero pero no los descifrados, y los datos cifrados no se podrán leer.

Para usar esta característica, se necesitan e2fsprogs versión 1.43 y el software keyutils. Aquí hay un pequeño howto. Para detalles sobre el diseño interno, ver aquí. Artículo de LWN recomendado: Ext4 encryption

· Soporte experimental de clustering en MD

Esta versión añade soporte experimental de clústering en MD (Linux software RAID). Un Cluster MDes un dispositivo compartido RAID para un clúster. Permite bloqueos y sincronización a través de múltiples sistemas de un clúster, de modo que todos los nodos del clúster pueden acceder al dispositivo MD simultáneamente, proporcionando la redundancia (y uptime) del RAID a todos los nodos del clúster. En esta versión, la implementación está limitada a RAID1, pero en el futuro podría extenderse a otros niveles RAID. El código en esta versión es altamente experimental. Howto: howto

· Device mapper: nuevo target que guarda un registro de las escrituras

En esta versión, el device mapper introduce un nuevo target que permite hacer un registro de todas las operaciones de escritura, y guardar ese registro en un dispositivo separado, de modo que puedan reproducirse las operaciones a posteriori. La motivación de esta funcionalidad es proporcionar a los desarrolladores una herramienta para verificar el sistema de archivos en varios puntos de la vida de un sistema de archivos, permitiéndoles reproducir el registro hasta un punto concreto.

· Soporte de monousuario

Puede parecer extraño que un sistema multi-usuario como Linux quiera adoptar una funcionalidad que es una regresión al pasado, tal y como lo es la eliminación de la protección multi-usuario. Pero resulta que los dispositivos embebidos quieren hacer Linux lo más pequeño que sea posible, y no necesitan las capacidades multi-usuario. En esta versión, es posible configurar el kernel para que el UID y GID de todos los procesos sean cero (root) en todos los casos. Con esto, se ahorra la compilación de 25 KB de código en una configuración defconfig. Artículo LWN recomendado: Linux as a single-user system

 · Driver virtual GEM para implementar mejores rasterizadores por software

El driver vGEM proporciona un GEM (graphics memory manager) que puede ser utilizado por el renderizador por software de la librería MESA para mejorar el rendimiento.

· Dispositivo de bloques para memoria persistente

Hay nuevos tipos de memoria que pueden ser accedidas casi tan rápido como la RAM, pero que no pierden los datos cuando se apaga el equipo. Este tipo de memoria se llama memoria persistente. En esta versión, Linux incluye PMEM, un driver que representa un rango de memoria reservado como un dispositivo de bloques, que puede ser utilizado posteriormente por sistemas de archivo. Artículo recomendado de LWN: Persistent memory support progress

· Multiprotocol Label Switching

Esta versión añade soporte para Multiprotocol Label Switching (MPLS). MPLS es un transporte de red escalable e independiente de protocolo, que dirige los datos de un nodo al siguiente basándose en etiquetas cortas en lugar de direcciones de red, de modo que se evitan las búsquedas complejas en la tabla de enrutado, porque las decisiones sobre el redireccionamiento de paquetes se toman en base de los contenidos de una etiqueta, sin necesidad de examinar el paquete. Las etiquetas identifican enlaces virtuales (rutas) entre nodos distantes, en lugar de destinos. MPLS puede encapsular paquetes de varios protocolos de red.

· Los programas BPF pueden ser asociados a sondas kprobes

En esta versión, Linux permite asociar pequeños programas BPF a sondas kprobes, proporcionando de este modo una manera segura de ejecutar programas BPF, sin riesgos para la seguridad o la estabilidad. Esto permite construir, en un kernel en ejecución, instrumentación definida por el usuario que no puede colgar o interferir con el kernel. En esta versión, sólo se permite el uso por root.

· Soporte de ACPI para la arquitectura ARM64

Durante mucho tiempo, ACPI ha sido una característica exclusiva de sistemas x86 (e Itanium). A pesar de las controversias, algunas partes del mundo ARM han empezado a utilizar el estándar ACPI. Esta versión añade soporte preliminar de ACPI 5.1 a la arquitectura arm64.



Estas son las novedades principales de este kernel. Como siempre, pueden encontrar la lista completa, y en inglés, en esta página.