minios
A minimal UNIX-like x86 operating system with a graphical window manager, filesystem, networking stack, and onboard applications β all running in 32-bit protected mode.- Multiboot-compliant β boots via GRUB or directly with
qemu -kernel - Protected mode (32-bit x86) with custom linker script
- VGA text mode (80Γ25) and VESA framebuffer (800Γ600Γ32)
- PS/2 keyboard with Shift/CapsLock, E0-prefix arrow keys (Home, End, Delete)
- PS/2 mouse driver with three cursor styles
- Serial port output for debug logging
- RTC driver for system clock
- Multi-window manager β drag, resize, minimize, raise, close
- Taskbar with window list and live clock
- Apps menu with 9 built-in applications
- File drag & drop between File Manager, Terminal, and Notepad
- Terminal emulator with 100-row scrollback buffer
- Desktop settings β background color, pattern, cursor style, boot animation
- Pixel DE β full-screen screensaver with 3D rotating cube, starfield, and gradient background
| App | Description |
|---|---|
| Terminal | Shell with command history, tab completion, arrow key navigation |
| Paint | Drawing canvas (C to clear) |
| Snake | Classic game with live score in title bar |
| Browser | Basic web browser |
| Settings | GUI system settings (persisted to /settings.cfg) |
| Files | File manager with drag initiation |
| Calculator | GUI RPN calculator with keyboard input |
| Notepad | Text editor with line numbers, syntax highlighting, auto-save on ESC |
| Winver | About screen |
Over 40 built-in commands: ls, cat, echo, clear, date, ps, help, shutdown, reboot, neofetch, meminfo, calc, edit, rm, mv, head, hexdump, wc, cal, seq, expr, which, touch, basename, dirname, rev, uniq, sort, hostname, and more.
Features command history (16 entries, up/down arrows), mid-line editing (left/right, Home, End, Delete), and tab completion.
- In-memory filesystem β up to 64 files, 32-char names, 4 KB per file, 64 KB pool
- Persistent settings β
/settings.cfgwrites to FS image - Commands:
create,ls,cat,rm,mv,touch,edit
- RTL8139 NIC driver with PCI discovery and ring-buffer DMA
- TCP/IP stack β ARP, IP, TCP (SYN/ACK with
io_waitpolling), DNS, HTTP GET - Static IP
10.0.2.15on QEMU user-mode slirp network
- Python interpreter β run
.pyscripts withpythoncommand - C compiler (TinyCC) β compile and run
.csource withtcccommand - Two-pass assembler β
asmcommand for x86 assembly - Package manager β
aptcommand
- GLES software renderer β points, Bresenham lines, scanline triangles
- Window compositing with z-ordering, shadows, drag indicators
- Syntax highlighting in Notepad for C, Python, and shell files
i686-elf-gcc(cross-compiler targeting i686-elf)i686-elf-ldnasmmakeqemu-system-i386(for testing)
On macOS:
brew install i686-elf-gcc nasm qemuOn Debian/Ubuntu:
apt install build-essential nasm qemu-system-i386
# Install i686-elf-gcc from your distro or build from sourcegit clone https://github.com/Distendo/minios
cd minios
make runThis produces minios.bin β a Multiboot-compliant kernel image.
qemu-system-i386 -kernel minios.bin -m 64 -vga std -nic userqemu-system-i386 -kernel minios.bin -m 64 -vga std \
-nic user \
-drive file=disk.img,format=raw,if=idemkdir -p iso/boot/grub
cp minios.bin iso/boot/
cat > iso/boot/grub/grub.cfg << 'EOF'
menuentry "minios" {
multiboot /boot/minios.bin
}
EOF
grub-mkrescue -o minios.iso iso
qemu-system-i386 -cdrom minios.iso -m 64 -vga stdβββ 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
βββ ...
βββββββββββββββββββββββββββ
β GUI Window Manager β
β (gui.c, 9 apps, taskbar)β
βββββββββββββββββββββββββββ€
β Shell (kernel.c) β
β ~40 commands, history β
βββββββββββββββββββββββββββ€
β Language Runtimes β
β (Python, C, Asm, APT) β
βββββββββββββββββββββββββββ€
β TCP/IP Stack (net.c) β
β ARP/IP/TCP/DNS/HTTP β
βββββββββββββββββββββββββββ€
β RTL8139 NIC Driver β
βββββββββββββββββββββββββββ€
β In-Memory Filesystem β
β (fs.c, 64 files, 64KB) β
βββββββββββββββββββββββββββ€
β Hardware Drivers β
β VGA/FB, Keyboard, Mouse, β
β RTC, Serial, PCI β
βββββββββββββββββββββββββββ€
β x86 Protected Mode β
β Multiboot, IDT, Port I/O β
βββββββββββββββββββββββββββ
The OS auto-detects the RTL8139 NIC on QEMU's -nic user,model=rtl8139 and performs an HTTP GET test against the host on 10.0.2.2:8080 during the GUI main loop.
Settings are persisted to /settings.cfg in the filesystem:
mouse_iconβ 0=Crosshair, 1=Arrow, 2=Handbg_colorβ desktop background color (hex RGB)bg_patternβ 0=Checkerboard, 1=Solid, 2=Stripesboot_animβ 0=skip, 1=show boot animationanim_speedβ 1=slow, 2=medium, 3=fastdesktop_envβ 0=Default DE, 1=Pixel DE
EVERYTHING MAKED BY DISTENDO Thanks to Cambodia Tech for testing and finding bugs in system!


