Skip to content

Latest commit

 

History

History
92 lines (69 loc) · 2.66 KB

README.md

File metadata and controls

92 lines (69 loc) · 2.66 KB

PortfoliOS

rustfmt testing License: MIT

This project is a simple operating system written in Rust. It is a text environment based mirror for my portfolio project which is simultaneously being developed (currently private, for those interested). It includes a shell(AgamShell or Ash), and a simple programming language, for user scripts.

Features

Feature Description
VGA Buffer A simple VGA buffer for text output
Unit Testing Full Unit testing for the kernel (Partially completed)
CI/CD Continuous Integration and Deployment
Keyboard Keyboard input for the CLI
CLI Command Line Interface (TODO)
Interpreter Interpreter for programming language (TODO)

Getting Started

Prerequisites

  • Rust nightly toolchain
  • bootimage tool
  • QEMU for running the kernel

Installation

  1. Install Rust nightly toolchain and components:

    rustup install nightly
    rustup component add rust-src --toolchain nightly
    rustup component add llvm-tools-preview --toolchain nightly
  2. Install bootimage crate:

    cargo install bootimage
  3. Install QEMU:

    # for Linux
    sudo apt-get install -y qemu-system-x86

    OR

    # for MacOS
    brew install qemu

    OR
    for Windows

Running the Kernel

To run the kernel, run:

cargo run --target x86_64-PortfoliOS.json

Note

The --target flag is unnecessary, as the default target is defined here as PortfoliOS.

TODO:

  • VGA Buffer (for text output)
  • Unit Testing
  • Full Documentation coverage
  • CLI
    • Keyboard Input
    • Commands
    • Command History
    • Interpreter for programming language
  • Full Kernel
  • File System
  • CI/CD
  • Customisable Printing
  • Customisable VGA Buffer
  • Sandboxed programming language for user scripts

Other cool features I added:

  • A python script, that creates a GUI, for easier debugging and testing, as well as building the project

Licence.

This project is licenced under the MIT Licence. See the License for more details