How virtual machines, emulation and operating systems actually work
Written to be read once and remembered: what happens when a computer boots, why a browser can emulate a processor at all, and which of the free operating systems are worth your time. 16 articles, grouped in reading order.
Foundations
What a virtual machine is, how it differs from the things it gets confused with, and how a processor ends up being emulated inside a browser tab.
What is a temporary virtual machine?
A disposable computer that exists only while you use it — what a hypervisor actually is, why "temporary" is a separate idea from "virtual", and where the whole thing falls down.
Virtual machine, container or emulator: what is actually different
Three technologies people use interchangeably and shouldn't — the kernel each one shares, the instruction set each one can run, and how strong the wall really is.
How x86 emulation works in the browser
From a JavaScript sandbox to a booting PC: the chips v86 pretends to be, how it turns hot guest code into WebAssembly at runtime, and where the whole approach stops working.
What WebAssembly actually is, for people who are not compiler engineers
Not a language and not a virtual machine in the Java sense: a binary instruction format for a stack machine, one growable block of memory, and four numeric types — and why that combination is what makes a PC emulator possible in a tab.
How a PC starts
From the reset vector to PID 1: firmware, the 512 bytes that bootstrap everything, and the processor modes the whole industry still carries around.
What actually happens when a computer boots
From the reset vector at 0xFFFFFFF0 to PID 1: every handoff in the chain, the address each one uses, and the exact message you get when one of them fails.
BIOS and UEFI: why a browser VM still boots like it is 1981
The interrupt-call API IBM shipped in 8 KB of ROM, the thirty years it survived, the small operating system that replaced it, and why the machines here still use the old one.
Real mode, protected mode, and the 16-bit past that never went away
Why every x86 processor still boots as an 8086, what the A20 gate was for, and the exact assembly that climbs out of 1978 into a flat 4 GB address space.
Write your own boot sector in 512 bytes
A complete, working boot sector in NASM — what the BIOS guarantees, what it does not, and how to assemble it into a floppy image you can boot in a browser tab.
Disks, files and state
What is actually inside a disk image, how filesystems turn numbered blocks into files, and what it means to freeze a running computer.
Disk images explained: ISO, IMG, floppies and kernels
What the file you are about to boot actually is, why raw and qcow2 are not the same kind of thing, and how to work out which slot it belongs in.
What a filesystem actually is, from FAT to 9p
A disk is a numbered array of blocks and nothing else; every name, size and byte offset you think of as a file is bookkeeping written into those blocks.
Snapshots: freezing a running computer
What the state of a running machine actually consists of, why an emulator can write all of it to a file, and what breaks when you restore one.
Systems to run
Which operating systems actually boot in an emulated 32-bit PC, how to build one yourself, and a tour of the far stranger things people have written.
Which Linux distributions run in a browser
Why Ubuntu will not boot here, what actually decides whether a distribution starts on an emulated 32-bit PC, and which of the small ones to pick.
Build a Linux that boots in under a second
A kernel from make tinyconfig, a static busybox and a five-line /init, packed into a cpio archive — plus the command-line flags that remove what is left of the boot time.
Running Arch Linux in your browser
A real Arch userland with pacman, bash and gcc, starting in seconds because its root filesystem is served file by file over 9p — and an honest account of what it cannot do.
DOS in the browser: FreeDOS, MS-DOS and why any of it still runs
DOS was a program loader with a filesystem attached — no protection, no scheduler, one API. That is exactly why it boots in a browser tab in under a second.
Beyond Linux: a tour of free operating systems
Haiku, ReactOS, Plan 9, the BSDs, MINIX, Redox, Oberon and a dozen more — what each one is arguing for, where it came from, and which are actually pleasant to boot in a browser tab.