#bootloader #experimental #x86 #kernel #elf

nightly app rustboot

An experimental pure-Rust x86 bootloader

1 unstable release

Uses old Rust 2015

0.1.0 Jan 26, 2018

#67 in #bootloader

MIT/Apache

28KB
700 lines

rustboot-x86

An experimental pure-Rust x86 bootloader for the planned second edition of the Writing an OS in Rust series.

This is still work in progress.

The idea is to build the kernel as a no_std longmode executable and then build the bootloader with the kernel ELF file in kernel.bin. The output is a flat binary disk image (including a basic MBR) that can be run in QEMU or burned to an USB flash drive (CDs require a different kind of bootloader, which is not supported at the moment). The plan is to create a custom tool (or cargo subcommand) that performs these steps automatically.

Build and Run

You need a nightly Rust compiler, xargo, objcopy (or a similar tool), and QEMU (for running it).

> RUST_TARGET_PATH=(pwd) xargo build --target test
> objcopy -O binary -S target/test/debug/elf_loader test-bin
> qemu-system-x86_64 -hda test-bin -d int -s

Dependencies

~700KB
~15K SLoC