Lab · Visualizer

OS boot flow, in plain English

How Chronosapien goes from a frozen QEMU window to a blinking cursor on a working shell — one step at a time.

back to lab
  1. 01

    QEMU emulates an x86_64 machine

    QEMU pretends to be a real CPU with memory, disks, and devices. It loads our bootable image and gives us a virtual machine to boot into.

  2. 02

    Bootloader prepares machine state

    The bootloader (we use the bootloader crate) sets the CPU into long mode, configures paging, and prepares everything the kernel needs to start running real Rust.

  3. 03

    Bootloader passes framebuffer and memory map

    The bootloader hands the kernel two crucial things: a pointer to the framebuffer (so we can draw to the screen) and a memory map (so we know what RAM is safe to use).

  4. 04

    Rust kernel entrypoint starts

    Execution jumps into our Rust no_std entrypoint. From this moment on, every line we write is the operating system.

  5. 05

    Serial logging initializes

    We bring up the serial port first so we can debug everything that comes after. If something explodes later, serial is how we find out why.

  6. 06

    Framebuffer console initializes

    We start writing pixels — glyph by glyph — into the framebuffer. The screen now shows text. This is the first time the OS feels real.

  7. 07

    GDT and IDT load

    We tell the CPU about our segment table and our interrupt descriptor table. The CPU now knows what to do when something goes wrong (or when an interrupt fires).

  8. 08

    Timer starts

    The PIT (programmable interval timer) is configured and starts ticking. We can now measure time and schedule the next things.

  9. 09

    Keyboard input starts

    We enable the PS/2 keyboard IRQ. Keystrokes now arrive as interrupts and get translated into characters.

  10. 10

    Shell loop begins

    The shell starts polling for input and dispatching commands. The OS is now interactive — you can type, list files, run apps, and switch eras.

After boot

Once the shell is running you can use commands like ls, notes, calc, and sysinfo.Read the case study