Beweis: NULLos ist ein eigenes Betriebssystem
Für alle, die zweifeln: NULLos ist kein umbenanntes Linux und keine angepasste Distribution. Hier steht, wie man das selbst nachprüft, was wir geprüft haben – und wo die Grenzen eines solchen Beweises liegen.
Ergebnis der Prüfung am 3. November 2026
- Geprüft: das veröffentlichte Abbild
nullos-0.4-x86_64.img(SHA-2564717db61…, Prüfsumme stimmt). - Darin: eigener UEFI-Vorlader
BOOTX64.EFI(PE32+, 11.264 Bytes) und Bootloadernb.efi(PE32+, 19.456 Bytes), Kernelnk.elf(ELF 64 Bit, 633.440 Bytes, statisch, ohne Symbole) undinit.img(tar, 895 Dateien, davon 426 Programme, alle statisch gelinkt). - 0 Treffer für Kennungen von Linux, glibc, musl, BusyBox, systemd, GRUB, Kernel-Modul-Lizenzen und Compiler-Kennungen – in Kernel, Bootloader und allen 895 Dateien.
- Kein dynamischer Lader, keine Compiler-Kennung (
.comment), keine fremden Bibliotheken. - binwalk 3.1.0: kein eingebettetes fremdes Format, kein komprimierter Kernel, kein Dateisystem-Abbild – nur die Programme selbst, Tabellen für SHA-256 und CRC32, 117 Zertifikate, 2 SVG-Bilder und die Lizenztexte der Schriften.
- syft 1.56.0: 0 bekannte Softwarepakete.
1. Selbst am Download prüfen verfügbar
Ein Linux verrät sich sofort: Im Kernel steht „Linux version …“, Programme tragen Kennungen von glibc oder musl, Kernel-Module ihre GPL-Lizenz. Mit frei verfügbaren Werkzeugen (mtools, strings, binwalk, syft) kann jeder das Abbild vom Download selbst untersuchen. Die Befehle für macOS und Linux:
# 1. Abbild und Prüfsummen von nullos.de/#download laden, Prüfsumme kontrollieren
shasum -a 256 -c SHA256SUMS --ignore-missing # Linux: sha256sum -c --ignore-missing SHA256SUMS
# 2. Bootloader, Kernel und Programmarchiv aus der Partition holen (mtools)
export MTOOLS_SKIP_CHECK=1
I=nullos-0.4-x86_64.img@@1048576
mcopy -i $I ::/EFI/BOOT/BOOTX64.EFI BOOTX64.EFI
mcopy -i $I ::/nullos/a/nb.efi nb.efi
mcopy -i $I ::/nullos/a/nk.elf nk.elf
mcopy -i $I ::/nullos/a/init.img init.img
file BOOTX64.EFI nb.efi nk.elf init.img
mkdir init && tar -xf init.img -C init
# 3. Nach Kennungen von Linux, GNU, glibc, musl, BusyBox, systemd, GRUB und Compilern suchen
{ strings -a nk.elf BOOTX64.EFI nb.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. Eingebettete fremde Formate und bekannte Softwarepakete suchen
binwalk nk.elf BOOTX64.EFI nb.efi
syft dir:init
Unsere Ausgabe für 0.4: file meldet PE32+ (UEFI), ELF 64 Bit statisch und tar; die Suche in Schritt 3 ergibt 0;
binwalk findet nur das ELF-Programm sowie Tabellen für SHA-256 und CRC32; syft meldet „No packages discovered“. Zum Vergleich:
Bei einem Linux-Kernel findet Schritt 3 sofort den Text „Linux version“.
2. Zeitstempel auf den Quellcode bestätigt in Bitcoin-Block 974372
Für jedes Release wird ein Prüfwert (SHA-256) über den gesamten Quellstand berechnet und mit OpenTimestamps in der Bitcoin-Blockchain verankert. Der Code bleibt dabei geheim. Wird er später offen gelegt, kann jeder belegen, dass genau dieser Code schon damals existierte. Das beweist „existierte damals“ – nicht, dass das Abbild bitgleich daraus entstand, denn die Abbilder sind (noch) nicht reproduzierbar gebaut.
Einfach erklärt: Man kann sich das wie einen versiegelten Umschlag beim Notar vorstellen. Der gesamte Quellcode kommt in den Umschlag, der Notar bestätigt Datum und Uhrzeit – ohne hineinzuschauen. Wird der Umschlag später geöffnet, kann jeder sehen: Genau dieser Inhalt lag damals schon vor. Hier ist der Umschlag ein digitaler Fingerabdruck des Codes (der Prüfwert), und der Notar ist die Bitcoin-Blockchain, die niemand nachträglich ändern kann.
- Quellcode 0.44.523 Dateien – bleibt geheim
- FingerabdruckSHA-256
e9f05fab… - Notare4 OpenTimestamps-Kalender, 03.11.2026, 09:21 Uhr
- Bitcoin-BlockBlock 974372, 03.11.2026, 09:30 Uhr – bestätigt
Erster Zeitstempel: der Quellstand von NULLos 0.4 (4.523 Dateien), verankert am 3. November 2026 um 09:21 Uhr bei vier OpenTimestamps-Kalendern, mit dem Vermerk „Geschrieben von Max Mühlbronner / Schöneberg“. Prüfwert:
e9f05fab3a1e93b7e2fab8e660e88c6894d799f2a333238244f6c6d393658803
Bestätigt in Bitcoin-Block 974372 vom 3. November 2026, 09:30:44 Uhr (Merkle-Wurzel fa96e6056bd93c20…), dazu von zwei weiteren Kalendern in den Blöcken 974381 und 974389 – nachzusehen in jedem Block-Explorer. Die beiden Dateien zum Nachprüfen
(QUELLSTAND-SHA256 und QUELLSTAND-SHA256.ots) liegen im Download. Nachprüfen: beide Dateien
auf opentimestamps.org ziehen oder ots verify QUELLSTAND-SHA256.ots (OpenTimestamps-Client).
3. Stichprobe auf Zuruf derzeit nicht
Die Idee: Ein Zweifler wählt eine beliebige Stelle im Kernel, NULLos legt genau diese Funktion offen, und sie ergibt übersetzt dieselben Bytes. Das geht heute nicht: Die Abbilder enthalten bewusst keine Symbole (Schutz gegen Zurückübersetzen), eine Symbolkarte würde Angriffe erleichtern, und bitgleich wäre das Ergebnis nur mit genau derselben Werkzeugkette.
4. Beweis im System selbst derzeit nicht
NULLos hat einen eigenen C-Compiler, der sich selbst übersetzt. Teile der Quellen ins Abbild zu legen, damit man sie in NULLos neu übersetzen und vergleichen kann, ist möglich – widerspricht aber der Entscheidung, kein öffentliches SDK und keinen Compiler im Abbild auszuliefern.
5. Unabhängiger Prüfer denkbar
Eine unabhängige Stelle – etwa eine Hochschule oder ein Sachverständiger – sieht den gesamten Quellcode unter Verschwiegenheit und bestätigt: eigener Code, kein GPL. Das ist noch nicht vereinbart.
6. Ausblick: Übersetzen mit Herkunftsbeweis Forschung
Forscher arbeiten daran, den Compiler in einer überprüfbaren Umgebung laufen zu lassen, die einen mathematischen Beweis mitliefert, aus welchem Quellcode ein Programm entstand (z. B. arXiv 2602.11887, Februar 2026). Das ist noch nicht praxisreif.
Was nicht von NULLos selbst stammt – ehrlich
- Werkzeuge zum Bauen: Kernel und Programme werden derzeit auf dem Mac mit LLVM clang/lld übersetzt. NULLos hat einen eigenen C-Compiler, er übersetzt sich selbst, baut die Release-Abbilder aber noch nicht.
- Schriften: Inter, JetBrains Mono, Fredoka, Chakra Petch und Bangers unter der SIL Open Font License 1.1, umgewandelt ins eigene Schriftformat; die Lizenztexte liegen bei.
- Wurzelzertifikate: die 117 Zertifikate der Mozilla-Liste (
/sys/ssl/cert.pem) – Daten, kein Programmcode. - Datentabellen im Browser Flitz aus öffentlichen Normen und Listen, etwa die HTML-Entitäten, das Brotli-Wörterbuch, die Public-Suffix-Liste sowie Unicode- und CJK-Daten.
- Tabellen aus Normen in den Audio-Dekodern (MP3, AAC, Vorbis, Opus), bei Opus teils aus dem Referenzcode im Anhang von RFC 6716 – der steht unter BSD-Lizenz, also kein GPL, aber auch nicht selbst geschrieben.
- Zwei Standardnamen im Kernel: „Microsoft Windows NT“ (der Name, den Firmware über ACPI abfragt) und „linux,phandle“ (der Name einer Gerätebaum-Eigenschaft) – Namen aus Normen, kein Code.
- Für manche Hardware werden später Treiber-Firmware oder Fremdpakete nötig (etwa WLAN). Sie kommen als nachladbare Pakete, nicht ins Abbild.
Fremder Programmcode unter GPL ist nicht bekannt.
Jedes Programm in NULLos trägt übrigens einen eigenen Abschnitt .nullos.ausweis: seinen Ausweis, der festlegt, was
es darf. So etwas hat kein Linux-Programm.