A small kernel with basic functionality written in Rust. Currently only parts of memory management and the keyboard driver are any interesting.
It paints the screen bright red and then displays some information. You can write. That's it:
You need a few things to run rustboot:
- Rust's
masterbranch - qemu
- On x86
- clang
- nasm
- On ARM
- binutils for arm-none-eabi
- gcc cross-compiler
- Optionally for debugging
- gdb
- tmux
Clone this repository.
$ git clone https://github.com/pczarn/rustboot.git
$ cd rustbootTo get edge Rust going, grab it from git:
$ git clone https://github.com/mozilla/rust
$ cd rust
$ ./configure --target=i686-unknown-linux-gnu
$ make && make installYou can considerably minimize build time:
$ ./configure --target=i686-unknown-linux-gnu --llvm-root=/usr
$ make rustc-stage1Then use the rust/*/stage1/bin/rustc binary to compile rustboot:
$ echo "RUST_ROOT:=$(pwd)/x86_64-unknown-linux-gnu/stage1/bin" > rustboot/config.mkSimply install all dependencies:
# pacman -S qemu nasm rust clang gdb tmux
# yaourt -S gcc-arm-none-eabi
To set things up on OSX, do this:
Install nasm and qemu from homebrew:
$ brew install nasm
$ brew install qemuInstall latest binutils from source.
$ wget 'ftp://sourceware.org/pub/binutils/snapshots/binutils.tar.bz2'
$ ./configure --target=i386-elf
$ make && make installTo compile, simply execute make command.
To run, use:
$ make run # emulate default platform (x86)
$ make arch=arm run # run on ARM
$ make arch=arm debug # debug on ARM
