Violyx — a small operating system written from scratch
A 64-bit operating system for x86 computers with its own kernel, its own file system and a windowed text desktop, controlled entirely with the keyboard.
Violyx is a hobby project in the literal sense: kernel, drivers, file system and desktop are all written for this project, in C and x86-64 assembler, with a few Python scripts for the build. It boots with Limine on BIOS and UEFI machines, runs in QEMU and VirtualBox and from a USB stick on real computers, and shows a 256-colour text desktop with windows, a program overview, a file manager, a terminal, a web browser and games.
- Latest release
- Version v0.3.0, released 2026-11-12
- License
- MIT
- Written in
- C
- Repository
- github.com/Merecete/Violyx
2 stars · 0 forks · main language C
Downloads
v0.3.0 (Released: 2026-11-12)
ISO image for QEMU, a virtual CD or a real drive
violyx_v0.3.0.iso
Size: 12,017,664 Byte (11.5, MiB)
SHA-256 checksum: 07da7da6f75272af73d321bb767035a5b22664727e5dbe450b68ae6d8c2b1ee3
Disk image to write onto a USB stick or a hard disk
violyx_v0.3.0.img
Size: 102,760,448 Byte (98.0, MiB)
SHA-256 checksum: 461882fbdbda2c9cdf408f969d89f805b704f6943afdadba260f5de4c2653a8b
VirtualBox hard disk
violyx_v0.3.0.vdi
Size: 104,857,600 Byte (100.0, MiB)
SHA-256 checksum: 26c87648243a32b15e9f374f39dede84664a8bf02bb37cbebf59d1ae22a1f88d
These files are served by GitHub, not by merecete.org. Ordinary browsers follow the redirect there without problems; for Violyx use the store instead.
The checksum is a reference for people: the Violyx installer checks the structure of a package, not its checksum. Compare it with sha256sum file (Linux), certutil -hashfile file SHA256 (Windows) or shasum -a 256 file (macOS).
| Latest release | Released |
|---|---|
| v0.2.1 | 2026-11-11 |
| v0.2.0 | 2026-11-09 |
| v1.1.5 | 2026-11-08 |
| v0.1.4 | 2026-11-06 |
| v0.1.3 | 2026-11-05 |
| v0.1.1 | 2026-11-04 |
What is inside
- Own kernel: own address spaces for programs, own scheduler built on coroutines, own VioFS 2 file system with a journal
- Programs are single .vpk files, run in ring 3 and cannot reach the kernel or another program; a broken program ends itself and nothing else
- Own TCP/IP and DNS in the kernel, lwIP and Mbed TLS in a protected program; a program has to be asked before it may use the internet, and the answer belongs to that exact package
- Wired network: Intel E1000, Realtek RTL8125B, RTL8126 and compatible. There is no Wi-Fi
- Storage: IDE, AHCI, NVMe and USB mass storage; FAT32, exFAT and ISO 9660 besides its own file system; CD and DVD readers
- Sound: Intel HD Audio, AC97 and USB audio
- Desktop: 256-colour text windows, program overview on F2, bookmarks, an image viewer, a paint program, an editor, a calculator, a clock and a calendar
- A C compiler runs inside the system, so a program can be written and built without another computer
The browser
- Reads plain HTML through its structure: headings, paragraphs, lists, tables and definition lists are shown; JavaScript and CSS are not understood
- Images load after the text and appear in 256 colours, so the words of a page arrive before its pictures
- Bookmarks, history and cookies live in /system/browser; tabs switch with Ctrl+PageUp and Ctrl+PageDown
- Files it cannot show are offered as a download, and a downloaded .vpk can be installed right away, so a page of links to .vpk files works as a program store
- Ctrl+P saves the picture on the screen, or the first picture of a page, unchanged as PNG or JPEG into /downloads
- Shows PNG and JPEG; SVG and WebP are not supported
- HTTPS with TLS 1.2 and TLS 1.3 and the certificate set shipped with the system
Try it
The ISO is the quick way: start it in QEMU or a VirtualBox machine (choose Other or Unknown as type, 64-bit, at least 512 MB of memory). The disk image is the way to a USB stick or a real hard disk; the .vdi file fits directly into VirtualBox. Inside the running system, the menu item System -> Install writes it to a disk.
Honest limits
- No Wi-Fi. Only the wired network chips above work, so check which card the machine really has before you try a USB stick on it.
- Secure Boot is not used: turn it off for a real machine.
- A program may read and change your files in /home. There is no signature and no checksum check when installing, only the structure of the package is verified, so install only programs you trust.
- Packages are limited by the format: at least 320 bytes, at most 32 MiB, a window between 20 and 76 columns and 5 and 20 rows.
- Programs cannot use the network themselves today; only the built-in browser goes online.
- This is a single-person hobby project in C and assembler. It is finished enough to use daily by its author, not a product with a support promise.
Documentation
For developers
The SDK folder shows how a package is built: assemble and compile, link, then sdk/mkvpk.py puts the executable, the window size, the name, the title, the version, the author and a small three-line icon into the 256-byte header. The examples, including Snake, Novastrike and the XZN player, come with full source. On a real Violyx system the built-in compiler does the same job: cc FILE.c -o NAME.vpk builds a package there without any external tool.