The fastest way to run SilverOS is inside QEMU, which requires no physical hardware and gives you a serial debug console in the same terminal window. A singleDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/pastaboy12345/SilverOS/llms.txt
Use this file to discover all available pages before exploring further.
make run command builds the bootable ISO, formats the SilverFS disk image if it does not exist, and launches the emulator with the correct flags for networking, storage, and graphics. The full graphical desktop appears in a QEMU window at 1024×768 within seconds of boot.
QEMU command
make run ultimately invokes the following command (or the same command without -enable-kvm if KVM is unavailable):
| Flag | Description |
|---|---|
-cdrom build/silveros.iso | Attaches the bootable GRUB2 ISO as the CD-ROM drive. QEMU’s firmware boots from it automatically |
-hda build/disk.svd | Attaches the SilverFS virtual disk image as the primary hard drive (/dev/hda). The kernel mounts this as the root filesystem via silverfs_mount() |
-m 256M | Allocates 256 MB of RAM to the VM, matching the kernel’s expected memory layout (heap starts at 16 MB, 4 MB in size) |
-serial stdio | Redirects the VM’s serial port (COM1) to your host terminal’s stdin/stdout. All kernel serial_printf output appears here in real time |
-vga std | Uses standard VGA emulation, which correctly exposes the linear framebuffer that GRUB requests at 1024×768×32 bpp |
-nic user,model=rtl8139 | Attaches a virtual RTL8139 NIC using QEMU’s user-mode networking. The guest receives IP 10.0.2.15 and can reach the internet through NAT |
-enable-kvm | Enables KVM hardware-accelerated virtualization for near-native performance. Omitted by make run-nokvm |
Boot menu
After GRUB hands off to the kernel, SilverOS completes hardware initialization (GDT, IDT, PIC, PMM, heap, PCI, RTL8139, ATA, SilverFS, RTC, and user system) and then displays its own graphical boot menu over a dark blue background:- Navigate with the Up and Down arrow keys, or press 1 or 2 directly.
- Confirm your selection with Enter.
- The highlighted option is shown with a blue selection bar.
Logging in
Both boot modes require authentication before proceeding. Credentials are managed by the kernel’s user subsystem, initialized during boot byuser_init() in kernel/user.c.
On a fresh
build/disk.svd image, user_init() creates a single default account: username root, password silver. These values are hardcoded in the user_create("root", "silver") call inside kernel/user.c. On a pre-existing disk image, user_init() reads credentials from /etc/passwd on the SilverFS volume instead. There is no runtime mechanism to change passwords.desktop_init() before the desktop proper is displayed. In minimal shell mode a text-mode login prompt is rendered directly on the console.
Desktop mode
After a successful desktop login, SilverOS launches its graphical environment viadesktop_run(), which never returns:
- A gradient desktop background fills the 1024×768 framebuffer.
- A taskbar runs across the bottom of the screen, containing a “Silver” application menu on the left and a live clock widget powered by the RTC driver on the right.
- A basic window manager handles rendering and input routing for desktop windows.
- A file browser (
desktop/filebrowser.c) lets you navigate the SilverFS filesystem mounted frombuild/disk.svd.
drivers/bootanim.c) plays once between the boot menu confirmation and the login screen.
Minimal shell mode
Choosing option 2 at the boot menu starts a full-screen text-mode console. After login you are dropped into a simple interactive shell with a> prompt. The following built-in commands are available:
| Command | Action |
|---|---|
help | Prints the list of available commands |
ls | Lists all entries in the SilverFS root directory (/) |
clear | Clears the console screen |
reboot | Reboots the machine by pulsing the keyboard controller reset line (0x64 ← 0xFE) |
Unknown command: <input>. There is no PATH lookup, no pipes, and no redirection — this is intentionally minimal.
Serial output
With-serial stdio active, the full kernel boot log streams to your host terminal in real time. This is the primary debugging interface for SilverOS. A typical boot sequence looks like:
Flashing to USB
To run SilverOS on real x86_64 hardware, flash the ISO to a USB drive with:/dev/sdX with the actual device node of your USB drive (e.g. /dev/sdb). The Makefile writes the ISO to the beginning of the device and appends the SilverFS disk image at a 64 MB offset so the kernel can find its filesystem on the same physical drive.