Skip to content

le0kar0ub1/Cosmos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cosmos

Another birth of a x86_64 kernel named COSmOS (yeah, word count double).

Dependencies

  • make (dev under v4.3)
  • grub-mkrescue (dev under v2.04)
  • mtools (GNU mtools) (dev under 4.0.24)
  • libisoburn

Install

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

Build

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.

Kernel build

make kernel [TARGET=$Target]

output: elf file.

ISO build

make [iso] [TARGET=$Target]

output: iso file.

Run

A configured QEMU run is provided.

make run

ROADMAP

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

Epilogue

Feel free to fork, use, improve.