Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kettle11/pacifickernel

A minimalist x86-64 C kernel.
https://github.com/kettle11/pacifickernel

kernel os

Last synced: 7 days ago
JSON representation

A minimalist x86-64 C kernel.

Awesome Lists containing this project

README

        

# Pacific Kernel

A minimalist C kernel.

At present the kernel does the following:
* Boots up in an emulator
* Sets up a GDT table
* Jumps to long mode
* Prints to screen some basic messages
* Handles interrupts and exceptions
* Counts time upwards
* Handles keyboard input

The code for this kernel is far from polished. At the moment there is lack of structure, few comments, and numerous warnings ignored. Do not use this as a reference for what good code looks like. At this point in time the purpose of this kernel is to serve as a scratchpad for myself to learn how kernels really work in a hands-on manner.

To build:

1. Build a cross compiler (based on the steps here: http://wiki.osdev.org/GCC_Cross-Compiler)

I. Download GCC 7.2.0 and put it in the PacificOS/external folder

II. Download Binutils binutils-2.28 and put it in the PacificOS/external folder

III. Run the build_gcc_for_pacific.sh script inside PacificOS/external (this is just a script that automates the steps in the OS dev wiki article)

2. In the PacificOS directory run "make" to build and "make run" to make then run.

To get to this point I used the following resources:

1. https://os.phil-opp.com/multiboot-kernel/
Excellent tutorial for learning the basics, but I diverged when the author switched to Rust.

2. http://wiki.osdev.org/Expanded_Main_Page
Lots of great info here even if much of the wiki spends time explaining how scary OS development is.

3. http://www.osdever.net/bkerndev/Docs/intro.htm
A little outdated, but a great step by step overview of the different parts of a basic kernel.