Mizu MX 27, a small desktop operating system for UEFI PCs
  • C 98.8%
  • Shell 0.7%
  • Makefile 0.2%
  • Assembly 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Koi Ayame ce3e2cdbac Initial release
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 18:34:03 +03:00
boot Initial release 2026-09-26 18:34:03 +03:00
desktop Initial release 2026-09-26 18:34:03 +03:00
drivers Initial release 2026-09-26 18:34:03 +03:00
include Initial release 2026-09-26 18:34:03 +03:00
kernel Initial release 2026-09-26 18:34:03 +03:00
programs Initial release 2026-09-26 18:34:03 +03:00
screenshots Initial release 2026-09-26 18:34:03 +03:00
sdk Initial release 2026-09-26 18:34:03 +03:00
third-party/terminus-font Initial release 2026-09-26 18:34:03 +03:00
.gitattributes Initial release 2026-09-26 18:34:03 +03:00
.gitignore Initial release 2026-09-26 18:34:03 +03:00
LICENSE Initial release 2026-09-26 18:34:03 +03:00
linker.ld Initial release 2026-09-26 18:34:03 +03:00
Makefile Initial release 2026-09-26 18:34:03 +03:00
qemu.sh Initial release 2026-09-26 18:34:03 +03:00
README.md Initial release 2026-09-26 18:34:03 +03:00
release.sh Initial release 2026-09-26 18:34:03 +03:00

🌊 Mizu MX 27

A small desktop operating system with a 90s soul. Windows, a Start menu, a web browser and a music player, on a kernel written from scratch. Boots from a USB stick on a real UEFI PC.

version platform language license

⬇️ Download · Features · Apps · Shortcuts · FAQ

Mizu MX 27 desktop with Files, Command Prompt, Control Panel and Nami Explorer

Mizu (水) means water. Nami (波), the browser, is a wave.


🚀 Try it in 3 steps

  1. Download mizu-mx27-preview.img.zip from Releases and unzip it.
  2. Write it to a USB stick with Rufus (choose DD image mode) or balenaEtcher.
  3. Boot from the stick (usually F12, F11, F8 or Esc at power on). Secure Boot must be off.

The first start opens Mizu Setup: pick a language, check the clock, type your name. A minute later you are on the desktop. Everything you do is saved on the stick.

Mizu Setup
🖥️ Run it in a virtual machine instead

VirtualBox: new machine, type Other, version Other/Unknown (64-bit), 2 GB RAM. In System, tick Enable EFI. Attach mizu-mx27-preview.vdi to the SATA controller.

QEMU (Linux):

qemu-system-x86_64 -enable-kvm -m 2G -machine q35 \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/ovmf/OVMF_CODE.fd \
  -drive format=raw,file=mizu-mx27-preview.img \
  -device qemu-xhci -device usb-mouse -device usb-kbd \
  -device e1000e,netdev=n -netdev user,id=n -device intel-hda -device hda-output

✨ Features

🪟 Real windows Overlapping, draggable, resizable windows with minimise, maximise, tile and a taskbar
🏁 Start menu Programs, Accessories and System Tools, plus Run... for anything else
🌐 Web browser Nami Explorer: HTTP and HTTPS, stylesheets, tables, PNG, JPEG and animated GIF
🎵 Music Plays MP3 and WAV with a seek bar
🎨 Make it yours Colour schemes, any picture as wallpaper, desktop shortcuts
🖥️ Screen resolution Changes live on Intel HD 2000/3000 and in QEMU, with "Keep this resolution?"
📶 Network Wired Intel cards and phone USB tethering, DHCP or a fixed address, network icon in the tray
🌍 Languages English, Russian, Ukrainian and Greek, switched live. Alt+Shift changes the keyboard layout
🧰 Looks after itself Task Manager, Registry Editor, Updates, App Store, recycle bin, startup programs
🔒 Protected Programs run in their own memory at ring 3; if the desktop crashes, it restarts by itself
🔌 Drivers Loaded automatically for the hardware that is found
The Start menu with Accessories open

🚫 Not yet

  • ❌ Installing onto a hard disk. The new installer (with its own partitions next to Windows or Linux) is being written. For now Mizu runs from the stick.
  • ❌ Updates over the internet. The update channel is being set up.
  • ❌ Wi-Fi. Use a cable or USB tethering from your phone.
  • ❌ Secure Boot and old BIOS-only PCs.
  • ❌ NTFS, exFAT, ext4. Only FAT32 disks for now.
  • ⚠️ 3D graphics only on Intel HD 2000/3000 and in QEMU.

📦 Apps

App What it does
📁 Files Browse drives and folders, copy, move, rename, recycle bin
📝 NoteEdit Notepad with bold, italic and underline
🖌️ Paint Pencil, lines, shapes, fill, opens BMP/PNG/GIF/JPEG, saves BMP
🖼️ Picture Image viewer
🎵 Player MP3 and WAV
🌐 Nami Explorer Web browser
⬛ Command Prompt The system's shell in a window: dir, mem, ping, net...
🧊 kUBIK A spinning cube, with FPS counter
📊 Task Manager Windows, running tasks, CPU and memory graphs, startup programs
🗂️ Registry Editor Every setting of the system, as a tree
⬇️ Updates / 🛍️ App Store System updates and extra programs
⚙️ Control Panel Display, Appearance, Sound, Network, Language, Date & time, System

Extra programs on the stick: a pack of seven games and dosfetch.


⌨️ Keyboard shortcuts

Keys Does
Win or Ctrl+Esc Start menu
Win+R Run...
Alt+F4 Close the window (on an empty desktop: shut down)
Esc Close the window in front
Ctrl+Shift+Esc Task Manager
Alt+Shift Switch keyboard layout
Ctrl+C / X / V Copy, cut, paste

In the Run box, explorer opens Files and cmd opens the Command Prompt.


❓ FAQ

How is this related to Koi-DOS?

Mizu MX 27 is built on the Koi-DOS kernel. Koi-DOS stays a DOS-like system with a command prompt; Mizu MX 27 is the desktop system grown from it. The prompt is still here, in a window.

Why is the system drive Z:?

Inherited from Koi-DOS: A: and B: were for floppies and C: was just the first free letter, so the system starts from the other end of the alphabet.

The desktop does not start.

If the desktop stops three times in a row within a few seconds, Mizu leaves you at a recovery prompt. Type desktop to try again, or log KOI.LOG to save the log and open an issue with it.

No internet.

Only wired Intel network cards and USB tethering from a phone work. Look at the network icon in the tray, or open Control Panel > Network.


🗺️ Roadmap

  1. 🔁 Safe updates: two system slots (A/B) with automatic rollback if an update does not boot
  2. 💿 New installer: whole disk or only free space, next to other systems
  3. ⬇️ Updates over the internet into the spare slot
  4. 📁 exFAT for files over 4 GB
  5. 🧩 Device Manager with live driver updates

🛠️ For developers

Building from source

On Fedora:

sudo dnf install gcc binutils mingw64-gcc qemu-system-x86-core edk2-ovmf dosfstools mtools
make            # loader, kernel, programs, drivers, sdk/ and the desktop
./qemu.sh       # build test disks and boot in QEMU (first start runs Setup)
./release.sh    # build mizu-mx27-preview.img and .vdi

KOI_DESKTOP=0 ./qemu.sh boots to the prompt instead of the desktop. KEEP_IMAGE=1 reuses the disks.

Writing an app

An app is a module that Mizu loads and gives a table of functions (see desktop/mizu.h):

#include "mizu.h"

static const MIZU_API* mizu;

static void paint(WINDOW* window, int x, int y, int width, int height) {
    mizu->label(x + 10, y + 10, "Hello from Mizu!", mizu->color(MIZU_COLOR_TEXT));
}

static WINDOW* open(void) {
    WINDOW* window = mizu->window_new("Hello", 40, 40, 300, 200);
    if (window) window->paint = paint;
    return window;
}

static MIZU_APP me = { "Hello", 1, open, 0, 0 };

MIZU_APPLICATION(start)
static MIZU_APP* start(const MIZU_API* api) { mizu = api; return &me; }

Built with sdk/koicc -m hello.c into HELLO.APP. Plain programs use sdk/ directly.

Source layout
Folder
boot/ UEFI loader
kernel/ kernel, drivers, shell, network
drivers/ loadable drivers (.SYS)
programs/ system programs and libraries
desktop/ Mizu: desktop, Setup, apps in desktop/apps/
sdk/ kit for writing programs
include/ shared headers

💖 Credits

Made by Koi Ayame. Kernel from Koi-DOS. Font: Terminus by Dimitar Toshkov Zhekov. MP3 decoding: minimp3 by lieff.

Built through intense pain and heartbreak. I miss you so much... Rest in peace, @nonconformie.

📄 License

MIT, see LICENSE. The font is under the SIL Open Font License 1.1; minimp3 is public domain.