Skip to content
This repository has been archived by the owner on Sep 6, 2023. It is now read-only.

Latest commit

 

History

History
79 lines (69 loc) · 2.91 KB

README.md

File metadata and controls

79 lines (69 loc) · 2.91 KB

ESALP Build Status

Endangered Soaring African Lynx-Pidgeon is a work in progress OS by Calvin Lee and JJ Garzella

It is an implimentation of Phillipp Oppermann's Blog OS, go check out that repository and his blog for more details.

Project Goals

  • No C environment
    • ESALP will be written in Rust (and some Assembler of course)
  • Flexibility
  • More to come

Features

Right now it doesn't do much, but more is added every day!

Current features:

  • Interaction
    • Can print to the VGA text buffer (in 255 different colors!)
    • Simple PS/2 keyboard driver
      • with multiple keyboard maps
    • Can print to the serial bus
  • Memory
    • Simple paging
      • With physical frame allocation and deallocation
    • Kernel space heap
  • Text-based unit tests powered by TAP
  • Multitasking
    • Basic kernel threads
  • More to come

How to Compile

  1. Install packages, ESALP requires xargo, nasm, grub-mkrescue, ld, and a unix environment to build. To run, use qemu.
  2. Use make all to build ESALP
  3. make run and you're done!

If you want to run regressions, use make test

Compilation on macOS

ESALP also supports compilation on macOS. As macOS uses mostly Apple's infrastructure rather than linux's, it requires a bit more setup.

Compile Assembly on macOS

  1. Homebrew
    • gcc
    • autoconf
    • xorriso
    • nasm
  2. MacPorts
    • libmpc
    • gmp
    • mpfr
  • 2.5. Optional: Compile libiconv
  1. Cross-compile Binutils
  2. Cross-compile GCC
  3. Compile grub

Set up Rust on macOS

  1. Install rustup
  2. Get the proper nightly build in your folder
  3. Homebrew
    • cmake
    • openssl
  4. put a symlink to openssl in /usr/local/include
  5. Install xargo
    • "cargo install xargo"

Running on macOS

  • Because we cross-compiled binutils earlier, we need to use make all cross=yes and make run cross=yes

Notes:

  • If your system binutils is not x86_64-elf format, for example in macOS (see above), you need to cross-compile binutils. By adding cross=yes to both make commands, the prefix x86_64-elf- will be added to all binutils commands.
  • int=yes prints out the registers on an interrupt and reboot=no stops qemu from rebooting. If you're stuck in an infinite reboot loop, make run int=yes reboot=no could be helpful
  • If kvm is your thing, run with kvm=yes

Licensing

This code is licensed under the MIT license. See LICENSE for more details.