A fork of rustboot focusing on ARM functionality and aiming to extend it into a more fully functional kernel. Setup instructions below cribbed also from rustboot. This version includes a simple graphical shell with a window system.
You need a few things to run ironkernel:
- Rust's 0.9 release (hopefully this will be updated to a more recent version of Rust sometime)
- binutils for arm-none-eabi
- Optionally for debugging
Clone this repository and update rust-core.
$ git clone https://github.com/wbthomason/ironkernel.git $ cd ironkernel $ git submodule update --init ### you can also pull latest rust-core: $ git submodule foreach git pull origin master
Simply install all dependencies:
# pacman -S base-devel qemu rust llvm tmux # yaourt -S arm-none-eabi-gcc
Note that you will want Rust 0.9 and LLVM 3.4
To set things up on OSX, do this:
qemu from homebrew:
$ brew install nasm $ brew install qemu
Install binutils from source.
wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.23.2.tar.gz tar xzvf binutils-2.23.2.tar.gz cd binutils-2.23.2 export ARMTOOLS=~/arm-none-eabi ./configure --target=arm-none-eabi --prefix=$ARMTOOLS make all install
To get edge Rust going, grab it from git:
$ git clone https://github.com/mozilla/rust $ cd rust $ ./configure $ make && make install
You may have to make some small changes before it builds.
Namely, you may need to adjust the rust prefix in the makefile (I did). Hopefully nothing else.
To compile, simply execute
To run, use:
$ make run # emulate default platform (ARM) $ make debug # debug on arm
Using the graphical shell:
Use the arrow keys to move the cursor around the screen. Press \ (backslash) to "click" the mouse. Clicking on the taskbar menu button will show available options. Currently, only "Open Window", which creates a default window, and "Close All", which closes all windows, actually do anything significant. Clicking "Show Files" currently does nothing. Clicking a window in the lower right corner and moving the cursor allows you to resize the selected window. Clicking the bar at the top of a window and moving the cursor allows you to move the window. Closing and minimizing windows work more or less as you would expect them to. Lastly, you can press Tab to switch between open windows.
A memory-cap currently exists in sgash.rs, and Iron Kernel will not run correctly if more code is added. Fixing this issue is suggested before attempting to make any code additions to the graphical shell.