Lightweight • Modular • Built From Scratch
This is IZOS — the real one, not the Python simulator. IZOS is a Linux distribution built from scratch. It is not based on an existing distro; the entire system, including the Linux kernel, userspace, init system, and tools, is compiled specifically for IZOS.- Custom init system
- Initramfs-based edition
- Modular extmount system
- BusyBox userspace
- Custom sudo implementation
- Built entirely from source
- What's IZOS
- Why IZOS?
- Modularity
- File Structure
- Included Software
- Running IZOS
- Networking
- (Re)Building IZOS
- Boot Flow
- Roadmap
- Contributing
IZOS (pronounced i zede ow ess) is a linux distro I built myself, with the only help being the linux kernel docs.
It can run on systems with RAM as low as 450MB !
I made this because i was bored, but also because i wanted to create a real version of IZOS-Python, a complete OS simulator with a package manager, init and more...
What makes IZOS unique is its modular design.
IZOS is unique: you can run it off RAM (initramfs edition), but also run a different environment on the same USB, using the homemade extmount system.
Here's what's planned:
On the initramfs edition, there will only be small utilities and minigames to keep the system small.
On the extmount edition, there will be a GUI (X.org), more apps...
IZOS started as a Python project. It was one of my first attempts at writing a larger multi-file codebase when I was 9 years old. It's still available and will be maintained here,
but as stated above i started getting bored and wanted a little more challenge, so i thought that making a version that can really be executed on a real hardware without any dependencies would be fun, so here I am !
Here's the project structure:
root/
├─ apps/ -- initramfs apps source & compiled
├─ apps_ext/ -- extmount apps source & compiled
├─ fs/ -- initramfs filesystem uncompressed
├─ fs_ext/ -- extmount filesystem unimged
├─ linux/ -- Linux kernel source & images
│ ├─ src/ -- Kernel source
| ├─ compile.sh -- IZOS full compilation script (omitting apps)
| ├─ bzImage -- IZOS kernel image
| ├─ initramfs.cpio.gz -- initramfs edition file
├─ createextfs.sh -- extmount fs creation tool
├─ makeinitramfs.sh -- initramfs gz creation tool
├─ test -- Run initramfs IZOS on qemu
├─ test_ext -- Run extmount IZOS on qemu
├─ (eventually) fs_ext.img -- The extmount filesystem in its IMGed form
IZOS comes with a bit of programs:
- Terminal Space Program
- asciipat
- htop
- neofetch
- nyancat
- cmatrix
- busybox & all of its tools
- nano
- sudo (home-made)
- wpa_supplicant (WiFi W.I.P, see Network on IZOS) every one of the above has been tested and runs great on my OS, and fits in a ~80MB compressed file !
First, let's clone the repository, by either running git clone https://github.com/FrenchPythonLover/IZOS_linux_repo or downloading the repo's ZIP file. Next, you'll need to modify the system root to your preferred language: Open ./fs/etc/init.d/rcS, scroll all the way to the bottom and follow the instructions.
Then, you need to get the initramfs for IZOS, for this you can either get the initramfs from here, then copy it over to linux/,
Or, compile the initramfs for IZOS: Run the command ./makeinitramfs.sh (more on building IZOS below), then grab yourself a coffee and wait, because it's going to take a bit of time.
Let's boot IZOS ! For the moment, you can only run this using QEMU, on Linux.
First of all, install qemu-system-x86_64 on your distro.
Then, to launch ramdisk IZOS, run ./test, a new window will appear: it's the TTY, on the terminal that launched the command however, its the serial output where you can debug IZOS.
Here are the credentials:
| Username | Password | Usage |
|---|---|---|
| root | none | Root user |
| izos | none | Normal user |
If you want to launch the ext izos, generate the ext file using ./createextfs.sh, then run ./test_ext
Actually, networking on IZOS might be supported on ethernet but hasn't been tested on ethernet-equipped real hardware.
WiFi is actually in development.
To build IZOS, just run those commands:
# CD to building directory
cd ./linux
# Clean everything (Recommended)
./clean.sh
# Run build script
./compile.sh
## -- OR only build initramfs (if linux/bzImage is already present)
./makeinitramfs.sh- Custom init system
- BusyBox integration
- Initramfs edition
- Extmount support
- Networking
- Package manager
- GUI
- Installer for real hardware
To contribute, please take a look here.
Made with ❤️ by FrenchPythonLover

