A hobby operating system, in Rust
Rust Assembly Makefile
Latest commit f959cc1 Feb 14, 2017 @steveklabnik steveklabnik committed on GitHub Merge pull request #109 from WilsonGiese/x86-bump
Update x86 from v0.8.0 to v0.8.1

README.md

intermezzOS: kernel

Build Status

intermezzOS is a hobby operating system. This repository is for its kernel. See the website for more.

Also, feel free to join us at #intermezzOS on Freenode’s IRC network, if you want to chat.

Building

To build intermezzOS, first you'll need the source:

$ git clone https://github.com/intermezzOS/kernel
$ cd kernel

Next, make sure you're using nightly Rust, and that you have the source code installed as well. The official way to do this is with the rustup tool from Rust's website.

$ rustup override add nightly
$ rustup component add rust-src
$ rustup update nightly

You'll also need xargo. To get it:

$ cargo install xargo

You'll also need some other things installed on your system; how you get them depends on what system you're running. Consult their documentation to figure out exactly how to install:

  • nasm
  • ld
  • grub-mkrescue: you may also need to install xorriso
  • qemu-system-x86_64

If you're on Bash On Windows, you'll need the grub-pc-bin package, as well as an X server of some kind, like xming. You'll also need to run this:

$ export DISPLAY=:0

You can put it in your ~/.bashrc file to have it automatically work on each session.

If you're on OS X, you might want to use this script to get them. You'll also need to set this in your ~/.cargo/config:

[target.x86_64-unknown-intermezzos-gnu]
linker = "/Users/yourusername/opt/bin/x86_64-pc-elf-gcc"

Where yourusername is your username.

After all that setup, it’s as easy as:

$ make run

This will:

  • Build libcore for our x86_64-unknown-intermezzos-gnu target with Xargo
  • Build the Rust code with Cargo
  • Compile the bit of assembly needed to boot
  • Link it all together
  • Build an ISO out of it all
  • Run that ISO in qemu

License

This project is dual licensed under Apache2/MIT. See the two LICENSE-* files for details.

Code of conduct

The intermezzOS project has a Code of Conduct, please observe it.