Prueba: NULLos es un sistema operativo propio
Para quien tenga dudas: NULLos no es un Linux renombrado ni una distribución adaptada. Aquí verás cómo comprobarlo tú mismo, qué hemos comprobado nosotros – y dónde están los límites de una prueba así.
Resultado de la comprobación del 3 de noviembre de 2026
- Comprobado: la imagen publicada
nullos-0.3.5-x86_64.img(SHA-256b6b3ddd7…, la suma de verificación coincide). - Contenido: un cargador de arranque UEFI propio
BOOTX64.EFI(PE32+, 17.920 bytes), el núcleonk.elf(ELF de 64 bits, 492.112 bytes, estático, sin símbolos) einit.img(tar, 890 archivos, de ellos 418 programas, todos enlazados estáticamente). - 0 coincidencias de identificadores de Linux, glibc, musl, BusyBox, systemd, GRUB, licencias de módulos del núcleo ni identificadores de compiladores – en el núcleo, el cargador de arranque y los 890 archivos.
- Ningún cargador dinámico, ningún identificador de compilador (
.comment), ninguna biblioteca ajena. - binwalk 3.1.0: ningún formato ajeno incrustado, ningún núcleo comprimido, ninguna imagen de sistema de archivos – solo los propios programas, tablas para SHA-256 y CRC32, 117 certificados, 2 imágenes SVG y los textos de licencia de las fuentes.
- syft 1.56.0: 0 paquetes de software conocidos.
1. Compruébalo tú mismo en la descarga disponible
Un Linux se delata enseguida: en el núcleo aparece «Linux version …», los programas llevan identificadores de glibc o musl, los módulos del núcleo, su licencia GPL. Con herramientas de libre acceso (mtools, strings, binwalk, syft) cualquiera puede examinar por sí mismo la imagen de la descarga. Los comandos para macOS y Linux:
# 1. Descargar la imagen y las sumas de verificación de nullos.de/#download, comprobar la suma de verificación
shasum -a 256 -c SHA256SUMS --ignore-missing # Linux: sha256sum -c --ignore-missing SHA256SUMS
# 2. Extraer de la partición el cargador de arranque, el núcleo y el archivo de programas (mtools)
export MTOOLS_SKIP_CHECK=1
I=nullos-0.3.5-x86_64.img@@1048576
mcopy -i $I ::/EFI/BOOT/BOOTX64.EFI BOOTX64.EFI
mcopy -i $I ::/nullos/nk.elf nk.elf
mcopy -i $I ::/nullos/init.img init.img
file BOOTX64.EFI nk.elf init.img
mkdir init && tar -xf init.img -C init
# 3. Buscar identificadores de Linux, GNU, glibc, musl, BusyBox, systemd, GRUB y compiladores
{ strings -a nk.elf BOOTX64.EFI; find init -type f -exec strings -a {} +; } | grep -E -c \
'Linux version [0-9]|GLIBC_|GNU C Library|musl libc|BusyBox v|GCC: \(|clang version|license=|__ksymtab|systemd [0-9]{3}|GNU GRUB'
# 4. Buscar formatos ajenos incrustados y paquetes de software conocidos
binwalk nk.elf BOOTX64.EFI
syft dir:init
Nuestro resultado para 0.3.5: file indica PE32+ (UEFI), ELF de 64 bits estático y tar; la búsqueda del paso 3 da 0;
binwalk solo encuentra el programa ELF o una tabla SHA-256 en el cargador de arranque; syft indica «No packages discovered». Para comparar:
en un núcleo Linux, el paso 3 encuentra de inmediato el texto «Linux version».
2. Sello de tiempo sobre el código fuente en preparación, a partir de 0.4
Para cada versión publicada se calcula un valor de comprobación (SHA-256) sobre todo el código fuente y se ancla en la cadena de bloques de Bitcoin con OpenTimestamps. El código sigue siendo secreto. Si más adelante se publica, cualquiera podrá demostrar que exactamente ese código ya existía entonces. Esto prueba «existía entonces» – no que la imagen se generara a partir de él bit a bit, porque las imágenes (aún) no se compilan de forma reproducible.
3. Muestra a petición por ahora no
La idea: alguien que duda elige cualquier punto del núcleo, NULLos revela exactamente esa función y, una vez compilada, da los mismos bytes. Hoy no es posible: las imágenes no contienen símbolos a propósito (protección contra la descompilación), un mapa de símbolos facilitaría los ataques, y el resultado solo sería idéntico bit a bit con exactamente la misma cadena de herramientas.
4. Prueba dentro del propio sistema por ahora no
NULLos tiene su propio compilador de C, que se compila a sí mismo. Incluir partes del código fuente en la imagen para poder recompilarlas en NULLos y compararlas es posible – pero contradice la decisión de no distribuir ni un SDK público ni un compilador en la imagen.
5. Revisor independiente posible
Una entidad independiente – por ejemplo, una universidad o un perito – ve todo el código fuente bajo confidencialidad y confirma: código propio, nada de GPL. Todavía no se ha acordado.
6. Perspectiva: compilar con prueba de origen investigación
Hay investigadores trabajando en ejecutar el compilador en un entorno verificable que aporte además una prueba matemática de qué código fuente dio origen a un programa (p. ej., arXiv 2602.11887, febrero de 2026). Todavía no está listo para la práctica.
Lo que no procede del propio NULLos – con honestidad
- Herramientas de compilación: el núcleo y los programas se compilan actualmente en el Mac con LLVM clang/lld. NULLos tiene su propio compilador de C, que se compila a sí mismo, pero aún no construye las imágenes de las versiones publicadas.
- Fuentes tipográficas: Inter, JetBrains Mono, Fredoka, Chakra Petch y Bangers bajo la SIL Open Font License 1.1, convertidas a nuestro propio formato de fuente; se incluyen los textos de licencia.
- Certificados raíz: los 117 certificados de la lista de Mozilla (
/sys/ssl/cert.pem) – datos, no código de programa. - Tablas de datos del navegador Flitz procedentes de normas y listas públicas, como las entidades HTML; en versiones posteriores se añadirán más tablas (diccionario Brotli, Public Suffix List, datos Unicode y CJK).
- Dos nombres estándar en el núcleo: «Microsoft Windows NT» (el nombre que el firmware consulta a través de ACPI) y «linux,phandle» (el nombre de una propiedad del árbol de dispositivos) – nombres procedentes de normas, no código.
- Para algunos equipos harán falta más adelante firmware de controladores o paquetes de terceros (por ejemplo, para wifi). Llegarán como paquetes que se cargan aparte, no en la imagen.
No se conoce código de programa ajeno bajo GPL.
Por cierto, cada programa de NULLos lleva su propia sección .nullos.ausweis: su documento de identidad, que determina lo que
puede hacer. Ningún programa de Linux tiene algo así.