Skip to content

j1banez/emyx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Emyx

Emyx is an ealry-stage operating system with a kernel and libc written from scratch.

Kernel shell screenshot

Progression

  • Bootable ISO (GRUB/Multiboot)
  • VGA text-mode terminal output
  • UART serial debug (COM1)
  • GDT and IDT setup and load
  • CPU exceptions (0-31) with panic diagnostics
  • PIC remap and IRQ controller helpers (mask/unmask, EOI)
  • IRQ0 timer ticks (PIT configured)
  • IRQ1 keyboard press decoding
  • Kernel shell with utility commands (help, clear, ticks, irq, panic, reboot)
  • Physical memory managment
  • Virtual memory managment (identity paging)
  • Basic kernel heap allocator (kmalloc, kfree)

Prerequisites

  • Cross toolchain for i686-elf (i686-elf-gcc, i686-elf-ar, ...)
  • grub-mkrescue
  • qemu-system-i386

Toolchain setup notes: docs/cross-compiler.md

Quick start

git clone https://github.com/j1banez/emyx.git
cd emyx
make run

Use make help for more information.

Debug

make gdb

# In another terminal
gdb kernel/emyx.kernel

In GDB:

(gdb) target remote :1234
(gdb) b kmain
(gdb) c
(gdb) bt
(gdb) info registers
(gdb) n
[...]

About

Experimental operating system built from scratch

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors