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

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

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í.