Initium
Initium copied to clipboard
Rewrite Initium to Rust
Objective
I want to implement Initium in a more object oriented style for so long, but none of the options were good enough for me, until now. Rust is my new loved language and was a system language that it is, is an excellent option for this reimplementation.
Rust allows us to simplify our code, making it more readable and easy to maintain. Besides that, Rust comes with a powerful package manager that automate some tasks for us and give us access to a huge repository of packages created by other developers. We also can separate our app by packages and that will make our code more maintainable and easier to read.
Tasks
- [ ] Implement the initial build system.
- [ ] Write the assembly to jump to Rust code.
- [ ] Create a separation between platforms (like BIOS, and EFI)
- [ ] Implement basic memory management for BIOS
- [ ] Check if CPU is supported
- [ ] Implement x86 descriptor table
- [ ] Implement some time functions
- [ ] Implement system to manage the filesystem
- [ ] Implement filesystem functions for BIOS
- [ ] Add support for ISO9660
- [ ] Implement generic memory management functions
- [ ] Implement a repository to keep all the found devices
- [ ] Implement a system to manage the environment
- [ ] Load the config file into de environment (maybe we must replace the old system by YAML)
- [ ] Implement a loader for Linux systems
- [ ] Implement a direct boot mode (no user interaction occurs)
- [ ] Implement a CLI UI for the boot menu
- [ ] Implement a loader for multiboot2
- [ ] Implement a loader for Initium Protocol (our loved protocol 😄)
- [ ] Implement a GUI interface for the menu
- [ ] Add support for FAT filesystem
- [ ] Add support for EXT filesystem
- [ ] Add support for compressed (gzip) filesystem
- [ ] Implement basic network for BIOS
- [ ] Implement a generic network device management
- [ ] Add support for EFI
- [ ] Implement memory managment for EFI
- [ ] Implement video for EFI
- [ ] Implement filesystem for EFI
- [ ] Implement basic network for EFI