install gcc, nasm, qemu-system-x86_64, and make. it is a UEFI OS but the UEFI files are in the repo.
then run ./build.sh
and it will build and run the OS.
What I want to do:
- Booting
- Basic GUI
- Mouse Detection
- Buttons
- Keyboard Driver
- Window system
- Read from FAT12
- Terminal
- Port Something
- Make boot partition FAT32
- Read from FAT32
What I need to do:
- Load an IDT so that exceptions and interrupts can be handled.
- Write a physical memory allocator, a good starting point is a bitmap allocator.
- Write a virtual memory manager that can map, remap and unmap pages.
- Begin parsing ACPI tables, the most important one is the MADT since it contains information about the APIC.
- Start up the other CPUs. stivale2 provides a facility to make this less painful.
- Set up an interrupt controller such as the APIC.
- Configure a timer such as the Local APIC timer, the PIT, or the HPET.
- Implement a scheduler to schedule threads in order make multitasking possible.
- Design a virtual file system (VFS) and implement it. The traditional UNIX VFS works when porting software
- Implement a simple virtual file system like a memory-only tmpfs
- Decide how to abstract devices. UNIX likes usually go for a /dev virtual filesystem
- Get a userland going by loading executables from your VFS and running them in ring 3. Set up a way to run sys calls.
- Write a PCI driver.
- Add support for a storage medium, the easiest and most common ones are AHCI and NVMe