ac390fb863 | ||
---|---|---|
.cargo | ||
doc | ||
dsk | ||
run | ||
src | ||
.gitignore | ||
CHANGELOG.md | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
Makefile | ||
README.md | ||
rust-toolchain | ||
screenshot.png | ||
x86_64-moros.json |
README.md
MOROS: Obscure Rust Operating System
MOROS is a toy operating system written in Rust for the x86 architecture.
This project started from the seventh post of the second edition of Writing an OS in Rust by Philipp Oppermann and by reading the OSDev wiki along with many open source kernels.
Features
- External bootloader (using bootloader)
- x86 CPU support (using x86_64)
- Hardware interrupts (using pic8259_simple)
- PS/2 Keyboard (using pc-keyboard)
- VGA Text mode output
- Serial output (using uart_16550)
- Paging
- Heap allocation (using linked_list_allocator)
- RTC clock
- PCI enumeration
- ATA PIO mode
- Random number generator
- RTL8139 network card
- DHCP/IP/TCP/UDP/DNS/HTTP protocols (using smoltcp)
- Basic filesystem
- Basic shell
- Basic text editor
- Basic file and network commands
- A LOT OF SHORTCUTS TO GET EVERYTHING WORKING
- HERE BE DRAGONS
- Processes
- Multitasking
- A real userspace
Setup
Install tools:
curl https://sh.rustup.rs -sSf | sh
rustup install nightly
rustup default nightly
rustup component add rust-src
rustup component add llvm-tools-preview
cargo install cargo-xbuild bootimage
Usage
Build image:
make image output=vga keyboard=qwerty
Run on QEMU:
make qemu output=vga
MOROS will open a console in diskless mode after boot if no filesystem is
detected. Use mkfs /dev/ata/0/0
to create a filesystem on the ATA hard drive
that will be used on the next boot.
Run on a native x86 computer by copying the bootloader and kernel to a hard drive or USB stick (but there is currently no USB driver so the filesystem will not be available):
sudo dd if=target/x86_64-moros/release/bootimage-moros.bin of=/dev/sdx && sync
Be careful not to overwrite the hard drive of your OS when using dd
inside
your OS or mkfs
inside MOROS.
LICENSE
MOROS is released under MIT.