How Neonatox Was Built
Not a tutorial. It's the story of how an operating system went from zero to functional.
Neonatox wasn't born from a download. It was born from compiling each package, once, by hand, understanding what was needed for the next to work. This is that story.
The zero point
Everything started with a question: what's inside Linux?
There was no Neonatox. No packages. Just Linux From Scratch (LFS) as base and the decision that systemd would be the init. No chroot, no abstractions. Just the LFS book and hours of compilation.
Toolchain: the compiler that compiles itself
The first thing built in LFS is what builds everything else.
- → Binutils - assembler and linker
- → GCC (C only) - minimal compiler
- → Linux API Headers - kernel interface
- → Glibc - the C standard library
- → Full GCC - now can compile itself
At the end of this phase, in /tools lived a compiler capable of building anything for Linux. It was the seed of everything.
Base system: essential tools
With the toolchain ready, everything needed for a usable system was compiled.
- → M4, Ncurses, Bash, Coreutils, Diffutils...
- → GMP, MPFR, MPC (math for GCC)
- → Perl, Python3, Findutils, Gawk
- → Gettext, Bison, Flex (development tools)
- → file, grep, sed, gzip, tar
Each package was configured, compiled and installed by hand. Every flag, every option, was a conscious decision.
Init, networking and bootloader
The system that boots. systemd, the kernel, GRUB.
- → Systemd - init, services, logging
- → Linux Kernel 6.x - custom compile
- → GRUB2 - BIOS/UEFI bootloader
- → dhcpcd or systemd-networkd
At this point, the system booted. You could log in, had network. It had a name: LFS. Now it needed to become Neonatox.
nhopkg: the own package manager
From LFS to Neonatox: a manager that teaches was needed.
nhopkg doesn't just install packages. Every package is a document.
The nhoid file contains metadata, dependencies, build scripts.
The first repository was configured: /var/lib/nhopkg/extra with base system packages. The chain closed: now the system could install more software using itself.
The ecosystem: Live Boot + Installer
A system that can't be distributed is useless.
- → neonatox-live-boot - generates ISOs with SquashFS
- → neonatox-installer - installs system to disk
With the generated ISO and working installer, Neonatox could live on a USB and replicate to other machines.
And the packages?
Each Neonatox package has two parts:
.nhoid Source package metadata. Contains build script (nbuild), install (ninstall), dependencies and versioning. It's a text file documenting how to build the package.
.nho Ready-to-install binary package. Compressed archive with files + metadata + post-install scripts. What actually gets installed on the system.
The result: A system built from scratch, where every package was a conscious decision, where the manager doesn't hide but teaches, where boot isn't magic but visible code.
It's not the only way. But it's ours.