Notas de la versión 0.9.4 Beta
Fecha de publicación: 12 de septiembre de 2026
Versión anterior: 0.9.3 Beta (21 de mayo de 2026)
Espacios de nombres de usuario sin privilegios: restringidos, no desactivados
Sección titulada «Espacios de nombres de usuario sin privilegios: restringidos, no desactivados»Arch retiró bubblewrap-suid en septiembre de 2026. Ditana dependía de él para que los espacios aislados siguieran funcionando mientras los espacios de nombres de usuario sin privilegios permanecían desactivados, así que su retirada rompió a la vez las dos mitades de ese esquema; y como el instalador obtiene su configuración en tiempo de ejecución, también rompió las instalaciones desde el medio de la 0.9.3, ya publicado, y no solo las recién creadas.
No había ningún reemplazo al que pasarse. El proyecto original retiró la compatibilidad con setuid en bubblewrap 0.12.0, un día después de que la 0.11.2 corrigiera CVE-2026-41163, una escalada de privilegios que solo existía en ese modo, y la rama 0.11.x que se puso a disposición de quien aún la necesitara nunca la adoptó nadie.
Por eso ahora el esquema se ha invertido. En lugar de desactivar los espacios de nombres de usuario para todos y eximir a un binario, Ditana los permite ejecutable por ejecutable. Un programa BPF conectado al hook userns_create del kernel niega un espacio de nombres a todo lo que no se haya declarado, y la declaración está en la configuración, junto al paquete que la necesita:
- name="flatpak" default-value=#true { arch-packages "flatpak" userns-allow "/usr/bin/bwrap" }Un punto esencial, porque determina el resultado en caso de error: un hook de este tipo solo puede negar, nunca conceder. Para que el guardián tenga algo sobre lo que actuar, hay que elevar el sysctl que antes desactivaba los espacios de nombres de usuario, y solo lo eleva el servicio que ya ha cargado y conectado el programa. Una máquina que no puede cargarlo mantiene los espacios de nombres de usuario completamente desactivados. Un error le hace perder los espacios aislados, pero nunca la protección.
El guardián es un paquete aparte, ditana-userns-guard, que se instala junto con la opción System Hardening que antes se llamaba «Disable unprivileged user namespaces».
LibreWolf ahora proviene de Arch
Sección titulada «LibreWolf ahora proviene de Arch»LibreWolf ahora proviene de los repositorios de Arch en lugar de Flathub, conforme al orden de preferencia que pone en primer lugar un paquete nativo. Brave sigue estando disponible a través del AUR; los motivos se detallan en la página AUR frente a Flatpak.
Cada valor de sysctl se declara como datos
Sección titulada «Cada valor de sysctl se declara como datos»Cada valor de sysctl que escribe el instalador se declara ahora como datos, en lugar de ensamblarse como texto de shell. Dos opciones que escriben la misma clave con valores distintos detienen la instalación, y se nombran ambas. Antes se escribían las dos líneas y la última prevalecía sin aviso.
Instalación desatendida
Sección titulada «Instalación desatendida»Ahora una instalación puede ejecutarse sin nadie frente al teclado. Un archivo de respuestas proporciona de antemano lo que el instalador pediría normalmente, y se encuentra en una pequeña unidad de configuración que el instalador descubre por sí solo; es exactamente el mismo esquema que usaría un proveedor de alojamiento para instalar Ditana a través de PXE. En ningún momento se simulan pulsaciones de teclas: el mecanismo consiste en que el instalador lee sus respuestas en lugar de pedirlas, y por eso sirve para un proveedor y no solo para una prueba.
La contraseña de la cuenta se toma del archivo de respuestas como hash, nunca en texto claro. En el repositorio del instalador hay un archivo de ejemplo, y allí se documenta el mecanismo por completo.
Una respuesta que no puede surtir efecto detiene la instalación en lugar de descartarse en silencio: una opción que esta máquina no ofrece y una que una expresión de valor predeterminado volvería a sobrescribir se rechazan ambas por su nombre, junto con la condición que las hace imposibles. Y como nadie está mirando la pantalla, una ejecución que se detiene escribe su causa en el primer puerto serie, con la marca DITANA-AUTOINSTALL-ABORT: en cada línea, de modo que un sistema de aprovisionamiento que lee la consola conoce el motivo mientras la máquina sigue encendida, en lugar de esperar en silencio a que se agote el tiempo. Si la consola está en otro lugar, la línea de comandos del kernel la indica.
Es también lo que Ditana usa consigo misma. Cada noche, el servidor de compilación instala el repositorio que acaba de compilar en una máquina virtual, de forma desatendida, y los paquetes solo se publican si el sistema instalado arranca y responde por sí solo.
Consulte docs/unattended-installation.md.
ZFS en el medio de instalación
Sección titulada «ZFS en el medio de instalación»El medio en vivo arrancaba un kernel sin el módulo ZFS, lo que hacía fallar una instalación ZFS en hardware en el que antes funcionaba. Ahora los paquetes de ZFS se instalan con pacstrap y después se regenera el initramfs, y zfsbootmenu lo agrega el hook encargado de ello, en lugar de hacerlo a través de una segunda vía que podría entrar en conflicto con él. La ruta de arranque de reserva de UEFI era incorrecta y se ha corregido.
Impresión
Sección titulada «Impresión»La compatibilidad con impresoras es completa. mDNS se abre en firewalld y se habilita avahi-daemon, de modo que una impresora de red se descubre en lugar de introducirse a mano.
Hardware
Sección titulada «Hardware»El firmware de algunas máquinas deja el procesador en su estado de reposo menos profundo después de una suspensión, lo que cuesta energía durante todo el tiempo que la máquina permanece encendida. Ahora Ditana lo detecta y lo sortea.
Una nueva opción vincula las respuestas ARP a la interfaz que recibió la solicitud. En una máquina con más de una interfaz en la misma subred, de lo contrario el kernel responde desde la que prefiera, lo que confunde a los conmutadores y a algunas configuraciones de balanceo de carga.
La detección de gráficos ahora pregunta si la GPU funciona con Wayland en lugar de si acelera algo, que es la pregunta de la que realmente dependen las opciones de escritorio.
Memoria
Sección titulada «Memoria»La opción Extended ZRAM Overcommit eleva el tamaño virtual de la swap comprimida en RAM del 100 % al 175 % de la RAM física, y el esfuerzo de zstd del nivel 3 al nivel 6, de modo que una máquina guarda aproximadamente 1.75 veces su RAM en forma comprimida antes de recurrir a la partición swap del disco. La latencia de carga de páginas sigue siendo la misma, porque zstd descomprime a la misma velocidad sea cual sea el costo del nivel. El valor predeterminado no cambia.
El propio medio de instalación
Sección titulada «El propio medio de instalación»La ISO se construye con archiso 90. Se ha quitado de ella b43-firmware: el paquete arrastraba al medio el kernel de la rama principal, además del que arranca Ditana. El proceso de construcción se ha vuelto más estricto: nada de lo que se copia al medio puede ya seguir un enlace simbólico de vuelta al sistema en vivo, los permisos de lo que se coloca dentro se declaran en lugar de heredarse, y varios gigabytes de archivos intermedios se guardan en un disco en lugar de en un tmpfs.
El medio contiene el estado que está bajo control de versiones y nada más: un archivo que está en el árbol de trabajo y que ninguna regla del repositorio declara detiene una construcción firmada, ya que todo lo que hay bajo el airootfs del perfil entra en la imagen. Después, el sistema instalado registra su origen, como BUILD_ID y VERSION_CODENAME en /usr/lib/os-release: qué medio lo construyó y qué estado de configuración llevaba ese medio.
Compilaciones que usted puede comprobar
Sección titulada «Compilaciones que usted puede comprobar»Cada paquete que distribuye Ditana se recompila a partir de su receta original, se firma y se publica solo como un conjunto completo: si un paquete no se compila o no se pueden verificar sus fuentes, no se publica nada en absoluto. Desde la 0.9.3, ese proceso se ha hecho visible. Cada ejecución queda registrada y se hace pública, incluidas las ejecuciones que no publicaron nada, y cada paquete que se recompiló enlaza el registro de su propia compilación.
Desde entonces se han incorporado dos cosas. Cada cambio que introduce una receta original se clasifica antes de compilar nada, y todo lo que no es seguro por construcción detiene la ejecución completa para que lo revise una persona; el AUR ha estado sometido a un ataque activo a la cadena de suministro, y Ditana recompila recetas del AUR en un repositorio en el que sus usuarios confían mediante la configuración de firmas de pacman. Y un repositorio que se compila y se firma sin problemas puede seguir siendo uno desde el que nadie puede instalar, por eso se instala en una máquina virtual antes de publicarse.
La canalización de la que depende todo esto ahora también es pública. Es más antigua que Ditana: empezó hacia 2023 como un único script de shell y nunca estuvo pensada para que la viera nadie más. Se publica porque las afirmaciones de la página del estado de la compilación valen lo que valen sus pruebas, y la canalización forma parte de esas pruebas. Está en github.com/acrion/ditana-build, y las ejecuciones que registra están en ditana.org/builds.
Los paquetes se firman con una subclave de firma dedicada en lugar de con la clave principal. Una subclave puede revocarse y reemplazarse por separado, y no puede certificar otras claves. No hay que hacer nada al respecto: el anillo de claves que la contiene se distribuyó en agosto y ya hace tiempo que se instaló.
Actualizar desde la 0.9.3
Sección titulada «Actualizar desde la 0.9.3»Las instalaciones creadas con el medio de la 0.9.3 siguen funcionando, con un único caso que hay que resolver manualmente. bubblewrap-suid ya no existe, así que la próxima actualización del sistema lo reemplaza, y Flatpak y Bubblejail dejan de funcionar en una máquina en la que los espacios de nombres de usuario sin privilegios están desactivados. Brave y otras aplicaciones del AUR no se ven afectadas.
La solución es el guardián descrito arriba:
sudo pacman -Syu ditana-userns-guardecho /usr/bin/bwrap | sudo tee /etc/ditana/userns-allow.confsudo systemctl enable --now ditana-userns-guard.serviceUna ruta absoluta por línea; # inicia un comentario. El servicio se niega a elevar el sysctl a menos que antes haya cargado y conectado el programa, así que una máquina en la que no puede ejecutarse queda exactamente tan bloqueada como estaba.
Un medio más antiguo ya no puede instalar en absoluto. El instalador obtiene su configuración al ejecutarse, así que una memoria USB de la 0.9.3 busca paquetes que su propio repositorio ya no puede proporcionar, y se detiene. Escriba en ella la imagen actual.
Una instalación nueva desde el medio de la 0.9.4 no necesita nada de esto.
Esta traducción la hizo una máquina. Los lectores la mejoran en Weblate.