|
|
|
|
@@ -6,13 +6,15 @@
|
|
|
|
|
<b>H2O</b>
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
Elyz is a microkernel operating system written in Rust. The project uses the Limine bootloader and supports multiple architectures. The current implementation includes basic kernel initialization, physical memory management, paging, and graphical output via framebuffer.
|
|
|
|
|
**Elyz is a microkernel OS** that radically rejects the technological deadwood of the past. While traditional systems are hamstrung by decades of legacy code, Elyz is built on a foundation of uncompromising modernity.
|
|
|
|
|
|
|
|
|
|
We implement technologies that others can't afford. This isn't an attempt to fix the old, but to create a flexible and secure environment, building a proper OS from scratch, capable of instantly adapting to the challenges of tomorrow.
|
|
|
|
|
|
|
|
|
|
## Project Structure
|
|
|
|
|
|
|
|
|
|
| Directory/File | Description |
|
|
|
|
|
|----------------|-------------|
|
|
|
|
|
| `kernel/` | Kernel source code (Rust) |
|
|
|
|
|
| -------------- | -------------------------------------- |
|
|
|
|
|
| `kernel/` | Kernel source code |
|
|
|
|
|
| `limine/` | Limine bootloader |
|
|
|
|
|
| `ovmf/` | UEFI firmware for emulation |
|
|
|
|
|
| `limine.conf` | Boot menu configuration |
|
|
|
|
|
@@ -21,7 +23,7 @@ Elyz is a microkernel operating system written in Rust. The project uses the Lim
|
|
|
|
|
## System Requirements
|
|
|
|
|
|
|
|
|
|
| Tool | Version/Requirements | Purpose |
|
|
|
|
|
|------|---------------------|---------|
|
|
|
|
|
| -------- | ----------------------- | ------------------- |
|
|
|
|
|
| GNU Make | ≥ 4.0 | Project building |
|
|
|
|
|
| Rust | Nightly with `rust-src` | Kernel compilation |
|
|
|
|
|
| xorriso | Any | ISO image creation |
|
|
|
|
|
@@ -32,12 +34,14 @@ Elyz is a microkernel operating system written in Rust. The project uses the Lim
|
|
|
|
|
**Installing dependencies:**
|
|
|
|
|
|
|
|
|
|
**Ubuntu/Debian:**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
sudo apt install make rustc xorriso gdisk mtools qemu-system-x86
|
|
|
|
|
rustup toolchain install nightly --component rust-src
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Arch Linux:**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
sudo pacman -S make rust xorriso gdisk mtools qemu-desktop
|
|
|
|
|
rustup toolchain install nightly --component rust-src
|
|
|
|
|
@@ -46,6 +50,7 @@ rustup toolchain install nightly --component rust-src
|
|
|
|
|
## Building and Running
|
|
|
|
|
|
|
|
|
|
### Preparation
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
git clone https://git.inotfail.com/INotFail/Elyz.git
|
|
|
|
|
cd Elyz
|
|
|
|
|
@@ -55,7 +60,7 @@ rustup override set nightly
|
|
|
|
|
### Main Makefile Targets
|
|
|
|
|
|
|
|
|
|
| Target | Description | Result |
|
|
|
|
|
|--------|-------------|--------|
|
|
|
|
|
| --------------- | --------------------------------- | -------------- |
|
|
|
|
|
| `make all` | Kernel compilation + ISO creation | `Elyz.iso` |
|
|
|
|
|
| `make run` | Full build + QEMU launch (BIOS) | UEFI emulation |
|
|
|
|
|
| `make run-bios` | Run existing image (BIOS) | BIOS emulation |
|
|
|
|
|
@@ -65,6 +70,7 @@ rustup override set nightly
|
|
|
|
|
| `make clean` | Clean build artifacts | — |
|
|
|
|
|
|
|
|
|
|
**Run examples:**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# BIOS with auto-build
|
|
|
|
|
make run
|
|
|
|
|
@@ -81,13 +87,14 @@ make all-hdd
|
|
|
|
|
The `KARCH` environment variable sets the target architecture (default: `x86_64`).
|
|
|
|
|
|
|
|
|
|
| Architecture | `KARCH` value | Status |
|
|
|
|
|
|--------------|---------------|--------|
|
|
|
|
|
| ------------ | ------------- | ------------ |
|
|
|
|
|
| x86_64 | `x86_64` | Full support |
|
|
|
|
|
| AArch64 | `aarch64` | Experimental |
|
|
|
|
|
| RISC-V 64 | `riscv64` | Experimental |
|
|
|
|
|
| LoongArch 64 | `loongarch64` | Experimental |
|
|
|
|
|
|
|
|
|
|
**Running other architecture:**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
make run KARCH=aarch64
|
|
|
|
|
```
|
|
|
|
|
@@ -97,7 +104,7 @@ make run KARCH=aarch64
|
|
|
|
|
## Current Functionality
|
|
|
|
|
|
|
|
|
|
| Component | Status | Description |
|
|
|
|
|
|-----------|--------|-------------|
|
|
|
|
|
| -------------------- | ------- | -------------------------- |
|
|
|
|
|
| Limine Bootloader | ✅ Done | BIOS/UEFI support |
|
|
|
|
|
| Physical MM (Bitmap) | ✅ Done | Page bitmap |
|
|
|
|
|
| Page Tables (x86_64) | ✅ Done | 4-level addressing |
|
|
|
|
|
@@ -108,7 +115,7 @@ make run KARCH=aarch64
|
|
|
|
|
## Memory System Development Status
|
|
|
|
|
|
|
|
|
|
| Task | Status | Note |
|
|
|
|
|
|------|--------|------|
|
|
|
|
|
| --------------------------- | -------------- | ----------------------- |
|
|
|
|
|
| **Basic initialization** | ✅ Ready | Limine, MMU, PMM |
|
|
|
|
|
| **Physical allocator** | ✅ Ready | BitmapPMM working |
|
|
|
|
|
| **Paging** | ✅ Ready | P4->P1 mapping |
|
|
|
|
|
@@ -147,6 +154,7 @@ make run KARCH=aarch64
|
|
|
|
|
**Logs are output to QEMU console.** Panic output via serial port (COM1).
|
|
|
|
|
|
|
|
|
|
**Useful QEMU options:**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# Serial port for logs
|
|
|
|
|
make run QEMU_FLAGS="-serial stdio"
|
|
|
|
|
@@ -156,6 +164,7 @@ make run QEMU_FLAGS="-s -S"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Cleanup:**
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
make clean # Remove all artifacts
|
|
|
|
|
make distclean # + git clean
|
|
|
|
|
@@ -168,3 +177,4 @@ make distclean # + git clean
|
|
|
|
|
- Related projects:
|
|
|
|
|
|
|
|
|
|
- Original template with bootloader: https://github.com/jasondyoungberg/limine-rust-template
|
|
|
|
|
|
|
|
|
|
|