Skip to content

TheKernelCorp/bootloader

This branch is 1 commit ahead of, 1163 commits behind rust-osdev/bootloader:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a3db7e7 · Nov 21, 2018
Nov 21, 2018
Dec 14, 2017
Jul 11, 2018
Nov 21, 2018
Nov 21, 2018
Feb 5, 2018
Feb 5, 2018
May 1, 2018
Nov 8, 2018
Nov 8, 2018

Repository files navigation

rustboot

Join the chat at https://gitter.im/rust-osdev/bootloader

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).

Mac OS

If you are building on Mac OS and get a error saying ld.bfd not found you first need to cross compile binutils and then adjust the linker name in the x86_64-bootloader.json file. The reason for this is the default rust LLVM linker doesn't support some features this project needs.

After doing that continue with the instructions for Linux.

Linux

> RUST_TARGET_PATH=$(pwd) xargo build --target x86_64-bootloader --release
> objcopy -O binary -S target/x86_64-bootloader/release/bootloader bootimage.bin
> qemu-system-x86_64 -hda bootimage.bin -d int -s

About

An experimental pure-Rust x86 bootloader

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 65.4%
  • Assembly 34.6%