PageKey Operating System

Back to Projects

About PKOS

Have you ever thought about how computers work at the lowest level? How do we actually talk to CPUs and hardware? This project is all about exploring where the rubber meets the road by creating our own operating system that talks directly to the CPU, with no other software abstractions in-between.

Dev Logs / Lessons

These videos capture lessons learned as various parts of the OS are developed.
OS21: More PCI + Getting Started with Storage (IDE, SATA)

Our entire world runs on computers, but few understand how they work at the lowest level. Everything, from your phone and laptop to the flight controllers on an airliner, has at least one computer chip in it called the CPU, which tells it what to do.

6 months ago • July 10, 2023

Blog Post
OS20: Researching PCI (Peripheral Component Interconnect)

In this video, we make massive improvements to stdlib, add memset and memcpy, and most importantly, allow ourselves to get out of VGA (graphics) mode once we enter it.

10 months ago • February 19, 2023

Blog Post
OS19: More VGA + stdlib/memory improvements

In this video, we make massive improvements to stdlib, add memset and memcpy, and most importantly, allow ourselves to get out of VGA (graphics) mode once we enter it.

over 1 year ago • September 12, 2022

Blog Post
OS18: Shredding the Makefile

So long, old friend.

over 1 year ago • August 22, 2022

OS17: Unit Testing C Code with Gtest, LCOV, Genhtml

In this video, we set up unit testing for our C code using Gtest, generate coverage data with gcov and LCOV, and finally generate a nice HTML coverage report for us to browse with genhtml.

over 1 year ago • August 15, 2022

OS16: Integration Test with QEMU in CI/CD Using Pytest

In this video, we implement a simple integration test in GitLab CI/CD to automate our input to QEMU using `pytest` and Python's `subprocess` package.

over 1 year ago • August 8, 2022

OS15: Writing a Simple VGA Driver (Bare-Metal Graphics)

Our OS just got a lot more colorful. In this post, we figure out how to draw on the screen by switching to VGA mode and manually editing the video memory.

over 1 year ago • May 3, 2022

Blog Post
OS14: Organizing Our OS Code

In this video, we reorganize the entire project, taking it from cluttered to modular in less than 10 minutes.

over 1 year ago • April 9, 2022

Blog Post
OS13: Docker Dev Environment

This video shows off our shiny new Docker development environment, and this new PageKey Solutions website!

almost 2 years ago • February 12, 2022

OS12: Basic Keyboard Driver (x86 Interrupts)

In this video, we learn about interrupts and write our own basic keyboard driver!

over 3 years ago • August 12, 2020

OS11: Calling Assembly from C

Join us in this video to find out how we can call a function in assembly from our kernel in C. This will allow us to do things in raw assembly when needed, and then we can pop back to the comfortable world of C when finished!

over 3 years ago • July 29, 2020

OS10: Running on Real Hardware

Time for some real hardware! Let's load this OS up and try it out on an old laptop.

over 3 years ago • July 15, 2020

OS9: Multiboot (Bootloader Breakup)

In this video, we break up with our old bootloader :-( Don't worry, life without it is much better! :-)

over 3 years ago • July 1, 2020

OS8: Calling C from Assembly

In this video, we run our first miniature kernel, written in C.

over 3 years ago • June 17, 2020

OS7: Protected Mode - Making the Jump!

We really did it. We made the jump to 32-bit protected mode.

almost 4 years ago • March 11, 2020

OS6: Reading the Disk

How do we read the disk? We better find out before we go into protected mode!

almost 4 years ago • February 26, 2020

OS5: Going Over print_hex

In this video, we go over the challenge program Print Hex using 16-bit assembly.

almost 4 years ago • February 12, 2020

OS4: Deciphering BIOS Challenges

Let's go over the challenges from the last video.

almost 4 years ago • January 29, 2020

OS3: Hone the Power of the BIOS!

We delve into and modify the example code, I explain a few assembly concepts, and I give you some challenges!

almost 4 years ago • January 15, 2020

Blog Post
OS2: First Bootloader

In this video, we install qemu and nasm so that we can build our first bootloader and run it.

almost 4 years ago • January 1, 2020

Blog Post
OS1: Installing VirtualBox and Debian

In this video, we'll set up VirtualBox and install a Debian VM so that we can use Linux on Windows.

about 4 years ago • December 23, 2019