Amora is a simple x86 kernel being developed from scratch as a side project for learning purposes.
Currently the kernel has a booloader written in Assembly which sets the GDT, enters protected mode and load a kernel written in C. The kernel has a simple screen driver and handlers for interrupts and the IRQ, which is partly written in Assembly. The PIT interrupt (IRQ0) has been implemented, giving the kernel a periodic interrupt that will be used by the process scheduler later.
- Booloader
- Screen driver
- Partial Interrupt handler
- Partial IRQ handler
- Timed interrupt with PIT
- Keyboard Interrupt handler
- Keyboard driver
- Flat Paging
- Memory handler
- Multitasking
- VFS
- File system
- User mode
You just need to run
$ make
to compile the code. A file called os-image will be created. You can either copy it to a floppy disk or a hard drive with
# dd bs=512 if=os-image of=/dev/sdX
where sdX is your floppy disk or hard drive device name. However, if you do not have a floppy disk lying around or a spare hard drive, you can run it in qemu (assuming you have it installed) with
$ make run
In order to debug the kernel, we can use qemu+gdb. You can run
$ make debug
to start qemu in debugging mode, with the processor stopped. It will wait for a gdb connection, which can be established with target remote :1234
typed in gdb.
- Operational Systems: Design and Implementation by Andrew Tanenbaum
- Principles of Computer System Design by Jerome Saltzer
- MIT Xv6
- Writing a Simple Operational System by Nick Blundell
- James Molloy's Kernel Development Tutorials
- OSDev.org wiki
- Bona fide OS Developer