diff --git a/README.md b/README.md index 52db9c49..395b8944 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@
PincerOS

- Bare metal microkernel-based multi-core operating system written in Rust for the Raspberry Pi 4b. + Bare metal monolithic kernel multi-core operating system written in Rust for the Raspberry Pi 4B.

@@ -30,11 +30,13 @@ --> # About The Project 🦀 -PincerOS is a bare-metal microkernel-based multi-core operating system written from the ground up in Rust targeting the Raspberry Pi 4b. The project aims to be a distributed, scalable, and secure operating system for general-purpose use. We aim to support a wide range of applications such as networked video games, distributed computing, and more. +PincerOS is a bare-metal monolithic kernel multi-core operating system written from the ground up in Rust targeting the Raspberry Pi 4B. The project aims to be a distributed, scalable, and secure operating system for general-purpose use. We aim to support a wide range of applications such as networked video games, distributed computing, and more. + +For more information about our kernel, its features, and its development, please visit the [PincerOS Blog](https://pinceros.github.io/)! ## Targeted Features ✨ -- Microkernel Architecture +- Monolithic Kernel Architecture - Multi-core Support - Memory Management - Process Scheduling @@ -44,14 +46,21 @@ PincerOS is a bare-metal microkernel-based multi-core operating system written f - Networking - Security -## Architecture 📐 -PincerOS follows a microkernel architecture with the following key components: +## Kernel Architecture 📐 +PincerOS has the following key kernel components: - Kernel Core: Handles basic system operations, syscalls, scheduling, and IPC - Memory Management: Implements virtual memory and memory protection - Device Drivers: Manages hardware interfaces - Network Stack: Provides networking capabilities -- Security Module: Handles access control and system security +- Security: Handles access control and system security + +## Userspace Features +PincerOS makes the following features and applications availabile in its userspace + +- ulib - a userspace library which provides user level applications with an API to use system calls +- Display Server - Allows for multiple processes to have graphical windows which simultaneously display content on a monitor. Please view the demo on the PincerOS blog to see the display sever in action for applications such as Doom, a drawing application, and more! +- Shell - a userspace shell with common utilities # Installation 📦 Currently, the project can be tested on QEMU version 9.0 or higher. If your package manager doesn't have it, you will have to build QEMU from source. @@ -68,9 +77,26 @@ Currently, the project can be tested on QEMU version 9.0 or higher. If your pack 1. Clone the repository: ```git clone https://github.com/pincerOS/kernel.git``` -2. Build the kernel and run: -```cd crates/kernel``` -```just build-and-run``` to build and run the `main` example. +2. Build and run the kernel + +This can be accomplished by navigating to the cloned kernel directory and then running the following series of shell commands: + +```bash +./crates/kernel/scripts/compile-init.sh +./crates/kernel/scripts/build.sh user +./crates/kernel/scripts/run-usb.sh +``` + +Alternativley, you can also use Just + +To build and run the main example: + +```bash +cd crates/kernel +just build-and-run + +``` + We also provide scripts for debugging and running with ui: ```bash @@ -92,11 +118,11 @@ Available recipes: - [x] Basic kernel functionality - [x] Multi-core support -- [ ] Network stack -- [ ] Application support -- [ ] File system -- [ ] Device drivers -- [ ] Security module +- [x] Network stack +- [x] Application support +- [x] File system +- [x] Device drivers +- [ ] Security - [ ] Distributed computing support