A DOS-like operating system for 64-bit UEFI machines
  • C 98.2%
  • Shell 1.2%
  • Makefile 0.3%
  • Assembly 0.1%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Koi Ayame 9f9e5bf461 Removed Mizu from the medium and README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 17:53:08 +03:00
boot Initial release 2026-09-26 17:28:21 +03:00
drivers Initial release 2026-09-26 17:28:21 +03:00
include Initial release 2026-09-26 17:28:21 +03:00
kernel Initial release 2026-09-26 17:28:21 +03:00
programs Initial release 2026-09-26 17:28:21 +03:00
screenshots Initial release 2026-09-26 17:28:21 +03:00
sdk Initial release 2026-09-26 17:28:21 +03:00
third-party/terminus-font Initial release 2026-09-26 17:28:21 +03:00
.gitattributes Initial release 2026-09-26 17:28:21 +03:00
.gitignore Initial release 2026-09-26 17:28:21 +03:00
deploy.sh Initial release 2026-09-26 17:28:21 +03:00
LICENSE Initial release 2026-09-26 17:28:21 +03:00
linker.ld Initial release 2026-09-26 17:28:21 +03:00
Makefile Initial release 2026-09-26 17:28:21 +03:00
qemu.sh Initial release 2026-09-26 17:28:21 +03:00
README.md Removed Mizu from the medium and README 2026-09-26 17:53:08 +03:00
release.sh Removed Mizu from the medium and README 2026-09-26 17:53:08 +03:00

🐟 Koi-DOS

A DOS-like operating system for modern PCs. Boots from a USB stick on a real UEFI machine. No Windows or Linux underneath.

version platform language license

⬇️ Download · What it can do · Commands · FAQ

Koi-DOS prompt with dosfetch

🚀 Try it in 3 steps

  1. Download koi-dos-0.9.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).

You get a Z:\> prompt. Look around, then type SETUP if you want to install it on a disk.

Warning

SETUP erases the whole disk you pick. It never offers the stick you booted from and asks you to type the disk name to confirm, but if the computer has anything important on it, try Koi-DOS in a virtual machine first.

🖥️ Run it in a virtual machine instead

VirtualBox: new machine, type Other, version Other/Unknown (64-bit). In System, tick Enable EFI. Attach koi-dos-0.9.vdi to the SATA controller.

QEMU (Linux):

qemu-system-x86_64 -m 2G -machine q35 -drive format=raw,file=koi-dos-0.9.img \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/ovmf/OVMF_CODE.fd

✨ What it can do

💻 Feels like DOS Z:\> prompt, dir, copy, cd, batch files, AUTOEXEC.BAT, pipes and > redirection
📁 Real files Reads and writes FAT32 on hard drives, SSDs (SATA and NVMe) and USB sticks. Long file names work
⌨️ Keyboard and mouse PS/2 and USB, touchpads with two-finger scrolling. English, Russian, Ukrainian and Greek layouts (Alt+Shift)
🌐 Internet Wired Intel network cards and phone USB tethering. ping, downloads over HTTP and HTTPS
📦 Package manager dosget install fetches signed programs and drivers from the internet
🔊 Sound Built-in sound on most laptops and desktops (Intel HD Audio). Plays WAV files
🖼️ Pictures Views PNG, JPEG, GIF and BMP
🗂️ File manager Koi-Commander: two panels, mouse, file viewer and notepad
🎮 Games A pack of seven games, DOOM (bring your own DOOM.WAD), Quake shareware
🧵 Modern inside 64-bit kernel written from scratch, programs in their own protected memory, threads, TLS 1.3
Koi-Commander

🚫 What it cannot do (yet)

  • ❌ Wi-Fi. Use a network cable or USB tethering from your phone.
  • ❌ Old DOS programs. It looks like DOS but runs its own 64-bit programs, not MS-DOS .EXE or .COM files.
  • ❌ Old BIOS-only PCs. It needs a UEFI machine (almost everything from 2012 onward).
  • ❌ Secure Boot. Turn it off in the firmware settings.
  • ❌ NTFS, exFAT, ext4. Only FAT32 disks are readable.
  • ❌ Windows. One program owns the screen at a time.
  • ❌ Printers, Bluetooth, webcams.
  • ⚠️ 3D graphics only on Intel HD 2000/3000 (Sandy Bridge) and in QEMU.

📖 Commands

Type help at the prompt for the short list. Anything that is not a command is started as a program.

📁 Files and folders
Command What it does
dir [path] [/w] List files. /w shows names only
cd <folder> Go into a folder. cd .. goes up
Y: Switch to drive Y:
type <file> Show a text file
more <file> Show a file one screen at a time
copy <from> <to> Copy a file. copy *.txt backup works too
xcopy <folder> <folder> Copy a folder with everything inside
del <file> Delete a file (erase also works)
ren <old> <new> Rename (rename also works)
md <name> Make a folder (mkdir)
rd <name> Remove an empty folder (rmdir)
tree [path] Draw the folder tree
attrib [+-RHSA] <file> Show or change read-only, hidden, system, archive
find "text" [file] Lines containing the text. /v /c /n /i
sort [file] Sort lines. /r reverses
edit <file> Text editor
show <picture> Picture viewer
play <file.wav> Play a sound file
💽 Disks
Command What it does
vol, label The volume name
disk All disks and partitions
chkdsk [d:] [/F] Check a disk. /F repairs
format <partition> ⚠️ New empty filesystem. Erases everything on it
part <disk> ⚠️ New partition table. Erases the whole disk
setup ⚠️ Install Koi-DOS on a disk
sysvol [d:] Which drive the system lives on
🌐 Network and packages
Command What it does
net Network status
net start Get an address automatically (DHCP)
net set <address> ... Set an address by hand
ping <host> Check that a host answers
get <host>[/path] [file] Download a page or file
dosget list Programs available to install
dosget install <name> Install a program
dosget update Update everything installed
dosget drivers Install drivers this computer needs
dosget remove <name> Uninstall
drivers Which drivers are loaded
⚙️ System
Command What it does
ver Version and build
mem Memory, devices and drives
pci Everything on the PCI bus
date [y-m-d], time [hh:mm] Show or set the clock
layout [en|ru|uk|el] Keyboard layout
screen [WxH|max|default] Screen resolution
color Change the prompt colours
sound, sound volume <0-100> Sound device and volume
beep [hz] [ms] Play a tone
set [name=value] Environment variables (PATH, PROMPT)
start <program> Run a program without waiting for it
reg Registry editor for the prompt
log [file] The system log. log KOI.LOG saves it to a file
selftest, crypto Self checks
keys, pointer Test the keyboard and the mouse
cls Clear the screen
shutdown, reboot Power off or restart
credits Who made this
📜 Batch files

Put commands in a .BAT file and run it by name. AUTOEXEC.BAT in the root of the system drive runs at startup.

echo, rem, pause, goto label, if exist, if errorlevel, if a==b, if not, for %%f in (...) do, call, shift, %1...%9, %NAME%. Ctrl+C stops a program or a batch file.

@echo off
if "%1"=="" goto usage
copy %1 Y:\backup
echo Saved %1
goto end
:usage
echo Usage: backup file
:end
↪️ Redirection and pipes
dir > list.txt         save output to a file
echo more >> list.txt  add to a file
sort < list.txt        read input from a file
dir | find "BAT"       pass output to another command

📦 Packages

Installed with dosget install <name>:

Package
commander Koi-Commander, two-panel file manager
games Seven games in one program
dosfetch System info screen
lua The Lua programming language
doom DOOM (needs your own DOOM.WAD)
quake Quake shareware episode (needs 3D graphics)

Drivers (i915 for Intel HD 2000/3000, virtgpu for QEMU) are installed by dosget drivers.


❓ FAQ

Why is the system drive Z: and not C:?

A: and B: were for floppies, C: was simply the first free letter. Koi-DOS starts from the other end: the system is Z:, other drives get Y:, X: and so on.

My computer does not boot from the stick.

Turn on UEFI boot in the firmware settings and turn off Secure Boot. Legacy/CSM mode is not supported.

No internet.

Only wired Intel network cards and USB tethering from a phone work. Plug in, then type net start. net shows what was found.

Something does not work on my hardware.

Type log KOI.LOG, copy that file to a USB stick and open an issue with it attached.


🛠️ 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/
./qemu.sh     # build test disks and boot in QEMU

Debian/Ubuntu: gcc binutils gcc-mingw-w64-x86-64 qemu-system-x86 ovmf dosfstools mtools. Windows: use WSL2.

qemu.sh settings: KEEP_IMAGE=1 reuses disks, KOI_SPLIT=1 uses the installed layout, KOI_AUDIO_WAV=out.wav records sound. Extra arguments go to QEMU.

Writing programs

sdk/ has everything needed: koi.h, koicc and the linker script. See sdk/README.md.

#include "koi.h"

int main(const char* arguments) {
    koi_print("Hello from Koi-DOS!\n");
    return 0;
}
sdk/koicc hello.c    # makes HELLO.EXE
Source layout
Folder
boot/ UEFI loader
kernel/ kernel, drivers, shell, network
drivers/ loadable drivers (.SYS)
programs/ built-in programs and libraries
sdk/ kit for writing programs
include/ shared headers

💖 Credits

Made by Koi Ayame. Font: Terminus by Dimitar Toshkov Zhekov.

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

📄 License

MIT, see LICENSE. Programs installed as packages may have their own licences. The font is under the SIL Open Font License 1.1.