Another birth of a x86_64 kernel named COSmOS (yeah, word count double).
make
(dev under v4.3)grub-mkrescue
(dev under v2.04)mtools
(GNU mtools) (dev under 4.0.24)libisoburn
Cosmos use his own cross-compiler with freezed version, build it by executing the following command-line. The dependencies are also checked-up.
./mktoolchain/mktoolchain
The only arch-target of Cosmos is x64, then the keyword TARGET
is used here to control the build.
Target | Effect |
---|---|
debug | build kernel for debug |
release | build kernel release |
Inspired from cargo (and others) philosophy.
Defaulting to debug.
make kernel [TARGET=$Target]
output: elf
file.
make [iso] [TARGET=$Target]
output: iso
file.
A configured QEMU run is provided.
make run
let's go again.
- Kernel architecture
- Kernel loaded higher-half
- Boot(strap)
- Multiboot 2
- Paging setup
- GDT setup
- IDT setup
- Interrupts handling
- Boot hook (arch-specific)
- VGA
- UART
- PIC (DISABLED)
- Physical Memory Management
- Virtual Memory Management
- kernel allocator
- ACPI (RSDP/SDT/...)
- APIC
- IOAPIC
- Timer
- TSS setup
- SMP init
- Pure hook
- Memory Abstractor
- Threads
- Basic Scheduling
- ELF Loader
- Syscall interface
- PS/2 Keyboard
- RTC
- Initrd
- Filesystem
- TTY
Not in the current scope:
- GUI
- PS/2 Mouse
Feel free to fork, use, improve.