Core64 is a foundational structure for building an x86-64 operating system in Rust. It includes the following components:
- Custom Bootloader: A UEFI application that sets up the environment for the kernel.
- Minimal 64-bit Kernel Entry: A simple kernel entry point to kickstart your OS development.
- Util Crate: A utility crate that provides shared functionality between different parts of the OS.
This project is ideal for those who want to learn or build a custom operating system from scratch using Rust.
-
Bootloader:
- A UEFI-based bootloader that initializes the system and loads the kernel.
- Sets up the 64-bit environment required for the kernel to run.
- Enables basic paging to be able to run the higher half kernel
-
Kernel:
- A minimal kernel entry point written in Rust.
- Provides the groundwork for further kernel development.
- Located at the higher half of the virtual address space
-
Util Crate:
- Contains shared utilities and functions that are common across the kernel and loader.
- Helps in keeping the codebase clean and modular.
For an example of how to extend and use Core64 as a base for your operating system, check out the ChickenOS project.
Core64 is just a minimal entry point for a kernel, and it currently lacks many of the essential features needed for a fully functioning operating system. As you continue to develop your OS, you'll need to implement memory management for the kernel itself, a gdt, interrupt handling, and many other features. Additionally, the loader itself should have proper error handling and display each step of the environment setup.
If you're looking to expand your knowledge or find more tools and examples for OS development, here are some valuable resources:
- OSDev Wiki: A comprehensive resource for operating system development.
- dreamportdev's OsDev-Notes: A great collection of notes and guides on various aspects of developing an operating system.
- Writing an OS in Rust: A popular blog series that guides you through writing an OS in Rust. It's recommended to look at both version 1 and 2 since they do differ quite a bit.
To get started with Core64:
Clone the repository:
git clone https://github.com/Hqnnqh/core64.git
Boot Core64 in QEMU:
make run release=true
or
Boot Core64 on a real machine using an USB:
make usb USB_DEVICE=/dev/<device> release=true
A successful jump to the higher half kernel entry is indicated by the screen turning green.