A minimal UNIX-like OS
for x86 from scratch

Graphical window manager, TCP/IP stack, filesystem, Python runtime, C compiler, and 9 built-in apps โ€” all in 32-bit protected mode.

Download .bin Build from source
40+
Commands
9
Built-in Apps
12K
Lines of C
3
Language Runtimes

What is minios?

A from-scratch operating system built for learning, hacking, and running inside QEMU.

๐Ÿ–ฅ๏ธ

Graphical Shell

Multi-window GUI with drag, resize, minimize, and a taskbar. Drag files between apps.

๐ŸŒ

Networking

RTL8139 driver with custom TCP/IP stack โ€” ARP, IP, TCP, DNS, and HTTP GET requests.

๐Ÿ“ฆ

Filesystem

In-memory FS with 64 files, 32-char names, and persistent settings saved to disk.

๐Ÿ

Language Runtimes

Run Python scripts, compile C with TinyCC, or assemble x86 code โ€” all on the OS itself.

๐ŸŽฎ

Apps & Games

Paint, Snake, Calculator, Notepad, File Manager, Settings, and a web browser.

๐ŸŽจ

Pixel DE

Full-screen desktop environment with 3D rotating cube, starfield, gradient background.

Quick Start Wiki

Everything you need to build, run, and hack on minios.

๐Ÿ“ฆ Prerequisites

# macOS brew install i686-elf-gcc nasm qemu # Ubuntu/Debian apt install build-essential nasm qemu-system-x86 # Install i686-elf-gcc from https://github.com/lordmilko/i686-elf-tools

๐Ÿ”จ Build

git clone https://github.com/Distendo/minios.git cd minios make

โ–ถ๏ธ Run

# Basic โ€” boots to GUI terminal qemu-system-i386 -kernel minios.bin -m 64 -vga std -nic user,model=rtl8139 # With disk image for persistent filesystem qemu-system-i386 -kernel minios.bin -m 64 -vga std \ -nic user,model=rtl8139 -drive file=disk.img,format=raw,if=ide # Boot from ISO (GRUB) mkdir -p iso/boot/grub cp minios.bin iso/boot/ echo 'menuentry "minios" { multiboot /boot/minios.bin }' > iso/boot/grub/grub.cfg grub-mkrescue -o minios.iso iso qemu-system-i386 -cdrom minios.iso -m 64 -vga std

โŒจ๏ธ Shell Commands

Over 40 built-in commands with history (up/down arrow), mid-line editing (left/right, Home, End, Del), and tab completion.

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ GUI Window Manager โ”‚ โ”‚ 9 apps, taskbar, drag & drop โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ Shell + Commands โ”‚ โ”‚ 40+ commands, history, tab โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ Language Runtimes โ”‚ โ”‚ Python, TinyCC, Assembler โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ TCP/IP Stack โ”‚ โ”‚ ARP ยท IP ยท TCP ยท DNS ยท HTTP โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ RTL8139 NIC Driver โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ In-Memory Filesystem โ”‚ โ”‚ 64 files ยท 4KB each ยท 64KB โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ Hardware Drivers โ”‚ โ”‚ VGA ยท Framebuffer ยท Keyboardโ”‚ โ”‚ Mouse ยท RTC ยท Serial ยท PCI โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ x86 Protected Mode โ”‚ โ”‚ Multiboot ยท IDT ยท Port I/O โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โš™๏ธ Configuration

Settings are persisted to /settings.cfg in the filesystem. Adjust via the Settings app or edit the file directly.

mouse_icon=0 # 0=Crosshair, 1=Arrow, 2=Hand bg_color=3357993 # RGB hex as decimal (0x335799 = 3368569) bg_pattern=0 # 0=Checkerboard, 1=Solid, 2=Stripes boot_anim=1 # 0=skip, 1=show boot animation anim_spd=2 # 1=slow, 2=medium, 3=fast desktop_env=0 # 0=Default DE, 1=Pixel DE

Built-in Applications

Every app ships with the kernel โ€” no installation needed.

AppDescriptionLaunch
TerminalShell with scrollback, history, tab completionwindow
PaintDrawing canvas, C to clearpaint
SnakeClassic game, live score in title barsnake
BrowserBasic web browser (HTTP via TCP/IP stack)browser
SettingsSystem settings GUIsettings
FilesFile manager with drag & dropfiles
CalculatorRPN calculator with keyboard inputcalc
NotepadText editor with line numbers & syntax highlightingnotepad or edit <file>
WinverAbout screenwinver

๐Ÿ“ Project Structure

boot.asm # Multiboot header + entry point (NASM) link.ld # Linker script Makefile # Build system kernel.c # Main kernel: shell, commands, main loop vga.c / vga.h # VGA text-mode driver (80ร—25) keyboard.c / .h # PS/2 keyboard driver mouse.c / .h # PS/2 mouse driver serial.c / .h # Serial port (COM1) driver ports.h # x86 I/O port utilities framebuffer.c / .h # VESA framebuffer (800ร—600ร—32) rtc.c / .h # CMOS RTC driver gui.c / gui.h # Window manager + terminal emulator gles.c / gles.h # Software GLES renderer de_pixel.c / .h # Pixel Desktop Environment fs.c / fs.h # In-memory filesystem rtl8139.c / .h # RTL8139 NIC driver net.c / net.h # TCP/IP stack settings_store.c # Persistent settings calcapp.c / .h # GUI calculator notepad.c / .h # GUI text editor paint.c / .h # Drawing application snake.c / .h # Snake game browser.c / .h # Web browser files.c / .h # File manager settings.c / .h # Settings panel winver.c / .h # About screen pylang.c / .h # Python interpreter tinycc.c / .h # C compiler asm.c / .h # Assembler apt.c / .h # Package manager

Build & Contribute

The entire OS is ~12,000 lines of C and NASM. Fork it, hack it, break it.

๐Ÿ“‹

Requirements

i686-elf-gcc, nasm, make, qemu-system-i386

๐Ÿ”ง

Build

git clone && cd minios && make

๐Ÿ›

Test

qemu-system-i386 -kernel minios.bin -m 64 -vga std -nic user,model=rtl8139

Download minios.bin View on GitHub โ†’