feat(adapter-riscv): load init from VirtIO block device with FAT16 filesystem

Adapter probes for VirtIO block device, reads init.elf from FAT16 disk,
parses ELF, maps into userspace, and launches. Falls back to embedded
minimal init if no disk is present.

Also: VirtIO MMIO driver, boot FAT16 reader, disk image build script,
Makefile targets for build/run/run-disk.
This commit is contained in:
2026-10-18 04:19:19 +02:00
parent a910c06cf7
commit d43c6a7e74
8 changed files with 586 additions and 93 deletions

45
Makefile Normal file
View File

@@ -0,0 +1,45 @@
.PHONY: check fmt clippy test kani build all image run
RISCV_TARGET = riscv64gc-unknown-none-elf
KERNEL_BIN = target/$(RISCV_TARGET)/release/adapter-riscv
all: check fmt clippy test
check:
cargo check --workspace
fmt:
cargo fmt --all -- --check
clippy:
cargo clippy --workspace -- -D warnings
test:
cargo test --workspace
kani-types:
cargo kani -p types
kani-domain:
cargo kani -p domain
kani-kernel:
cargo kani -p kernel
kani: kani-types kani-domain kani-kernel
build:
cargo build -p adapter-riscv --target $(RISCV_TARGET) --release
image: build
scripts/make-disk-image.sh
run: build
qemu-system-riscv64 -machine virt -nographic -bios default \
-kernel $(KERNEL_BIN)
run-disk: image
qemu-system-riscv64 -machine virt -nographic -bios default \
-kernel $(KERNEL_BIN) \
-drive file=boot.img,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0