/PoloOS

Messing about with an X64 OS Kernel

Primary LanguageC

PoloOS 64-bit Operating System Kernel

This is based on the initial tutorial series >> this YouTube tutorial series.

Prerequisites

  • A text editor such as VS Code.
  • Docker for creating our build-environment.
  • Qemu for emulating our operating system.

Setup

Build an image for our build-environment:

  • docker build buildenv -t poloos-buildenv

Build

Enter build environment:

  • Linux or MacOS: docker run --rm -it -v "$pwd":/root/env poloos-buildenv
  • Windows (CMD): docker run --rm -it -v "%cd%":/root/env poloos-buildenv
  • Windows (PowerShell): docker run --rm -it -v "${pwd}:/root/env" poloos-buildenv
  • NOTE: If you are having trouble with an unshared drive, ensure your docker daemon has access to the drive you're development environment is in. For Docker Desktop, this is in "Settings > Shared Drives" or "Settings > Resources > File Sharing".

Build for x86 (other architectures may come in the future):

  • make build-x86_64

To leave the build environment, enter exit.

Emulate

You can emulate your operating system using Qemu: (Don't forget to add qemu to your path!). Note you may get an error regarding the BIOS, the -L switch should solve that.

  • qemu-system-x86_64 -cdrom dist/x86_64/kernel.iso -L "C:\Program Files\qemu"
  • NOTE: When building your operating system, if changes to your code fail to compile, ensure your QEMU emulator has been closed, as this will block writing to kernel.iso.

Alternatively, you should be able to load the operating system on a USB drive and boot into it when you turn on your computer. (I haven't actually tested this yet.)

Cleanup

Remove the build-evironment image:

  • docker rmi poloos-buildenv -f

Test Builds