Startup
A 512-byte NASM boot sector loads the kernel, switches to 32-bit protected mode, and hands over. No bootloader dependency to install or configure.
project info
Copperhead is a 32-bit x86 operating system written from nothing: 512 bytes of NASM, a freestanding C kernel with no libc under it, a VESA framebuffer, and a desktop the kernel draws pixel by pixel. It exists to be read and to be booted, in that order.
Most hobby kernels stop at a text-mode "Hello from ring 0". Copperhead keeps going: it brings up a graphics mode, draws startup screens, runs a setup wizard, asks for a passcode, plays a welcome animation, and lands on a desktop with a taskbar and windows you can drag. The whole arc works end to end, and that arc is the point of the release.
Everything is deliberately BIOS-era. There is no UEFI path, no GRUB, no ACPI, and no borrowed drivers. If a pixel changes, code in this repository changed it. That constraint is what keeps the finished system down to about 1.8 MB and small enough to read through in an evening.
CopperOS used to boot inside the browser on the Try it page. That has been switched off while it is repaired, and the page now says so plainly instead of hanging on "Booting…". The full explanation — and the ISO in QEMU was always the better experience anyway.
A 512-byte NASM boot sector loads the kernel, switches to 32-bit protected mode, and hands over. No bootloader dependency to install or configure.
The framebuffer asks for VESA 1280×720×8 and falls back through modes that virtual machines reliably provide, so it comes up on almost anything BIOS-based.
Frames are composed off-screen before they are drawn. That single change removed the full-screen flicker the early builds had and leaves room for real animation later.
Startup PNGs are resized and converted to raw bitmaps at build time and linked into the kernel, because there is no image decoder at runtime and no filesystem to read them from.
The workspace takes its cues from Windows 95 — a black desktop, a taskbar, a Start menu, draggable window chrome, and a pointer steered with I, J, K and L, because there is no mouse driver yet. First boot runs a setup wizard that collects a username, a four-digit passcode, install or try mode, a disk target, a desktop theme, and a network choice, then plays a welcome animation and asks for that passcode at a login screen.
There is no recovery for that passcode. Nothing on disk can be asked to reveal it, so pick something memorable or be willing to reinstall over it.
The apps are kernel-rendered built-ins rather than user-space programs — there is no process isolation between them because there are no processes yet. Internet Explorer accepts a typed URL and then admits it cannot fetch it, which is correct: real browsing needs a network card, TCP/IP, DNS, TLS and an HTML parser, and none of those exist. System Updates reports the release status; System Settings covers Wi-Fi choice, desktop theme, Start menu style, and diagnostics. There is no filesystem to speak of, so nothing you make inside CopperOS survives a reboot.
None of this should go near a machine you care about. Use a virtual machine. The roadmap is where the missing pieces are tracked, and v1.6 Big Waterfall is the release that closes some of them.