How hideinpine/arcan works
Arcan is a small x86_64 bare-metal operating-system prototype with a UEFI loader (“fern”), a no_std kernel, interrupt setup, keyboard input, and VGA text output. The intended boot workflow is UEFI invoking fern, fern reading /sys/kernel, then the kernel entering _start and initializing interrupts. The sampled loader does not show a handoff or jump to the loaded image, so that relationship is intentionally omitted. Runtime input flows from the keyboard interrupt through scancode mapping into VGA memory. Panic output also uses the VGA writer.
Components 16
UEFI Boot
- Fern Entry
x86_64-arcan/kernel/fern/src/main.rs - Kernel Image Loader
x86_64-arcan/kernel/fern/src/kernell.rs - UEFI Filesystem
- UEFI Services
Kernel Runtime
- Kernel Entry
x86_64-arcan/kernel/src/main.rs - Kernel Init
x86_64-arcan/kernel/src/lib.rs - Interrupt Setup
x86_64-arcan/kernel/src/interrupts.rs - IDT PIC Controller
x86_64-arcan/kernel/src/interrupts.rs - Panic Handler
x86_64-arcan/kernel/src/main.rs
Interrupt Input
- Keyboard Hardware
- Keyboard Handler
x86_64-arcan/kernel/src/interrupts.rs - Scancode Mapping
x86_64-arcan/kernel/src/interrupts.rs
Text Output
- VGA Writer
x86_64-arcan/kernel/src/vga_buffer.rs - VGA Text Memory
Other components
- UEFI Firmware
- CPU
Connections 16
- UEFI Firmware → Fern Entry: invokes
- Fern Entry → Kernel Image Loader: loads image
- Kernel Image Loader → UEFI Filesystem: reads file
- Fern Entry → UEFI Services: initializes
- Fern Entry → UEFI Services: exits boot
- CPU → Kernel Entry: enters
- Kernel Entry → Kernel Init: calls init
- Kernel Init → Interrupt Setup: initializes
- Interrupt Setup → IDT PIC Controller: configures
- IDT PIC Controller → Keyboard Handler: dispatches
- Keyboard Handler → Keyboard Hardware: reads port
- Keyboard Handler → Scancode Mapping: maps code
- Keyboard Handler → VGA Writer: writes keys
- Keyboard Handler → IDT PIC Controller: signals completion
- VGA Writer → VGA Text Memory: writes characters
- Panic Handler → VGA Writer: prints panic