Add BIOS and tiny kernel roadmap phases

This commit is contained in:
2026-04-28 13:23:03 +02:00
parent 07dd8e21f0
commit e8631501e8
18 changed files with 344 additions and 77 deletions
+50
View File
@@ -0,0 +1,50 @@
# Phase 20 - Linux
## Context
This is the summit: boot a minimal Linux kernel with a BusyBox initramfs to a shell over
UART on the CPU and SoC you built.
## Goals
- Build a kernel matching the implemented ISA and platform.
- Provide DTB and initramfs.
- Reach an interactive shell or a controlled init process.
## New Concepts
- Kernel config: set of build-time options selecting architecture and drivers.
- Initramfs: initial root filesystem bundled or loaded with the kernel.
- BusyBox: compact Unix userland used in embedded systems.
- Early console: minimal logging path before normal console drivers initialize.
- Root filesystem: filesystem mounted as `/` by Linux.
## How To Think About It
Linux bring-up is system debugging under poor visibility. Work from known-good layers:
CPU tests, DRAM test, boot firmware, DTB validation, early console, then userspace.
## Learning Tasks
- Understand the kernel image format and load addresses for RV32.
- Build the smallest kernel config that matches your hardware.
- Trace boot log milestones and map them to hardware dependencies.
## Pitfalls
- Debugging Linux before compliance tests and DRAM tests are clean.
- Enabling drivers for devices you do not actually implement.
- Losing console output because UART binding or clock frequency is wrong.
## Tooling And Testing
- Use earlycon/earlyprintk-style mechanisms where applicable.
- Keep kernel, DTB, firmware, and bitstream versions tied together.
- Save full boot logs and compare against previous attempts.
## References
- Linux RISC-V documentation: https://docs.kernel.org/arch/riscv/
- Buildroot: https://buildroot.org/
- BusyBox: https://busybox.net/