Skip to content

davidcallanan/os-series

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Write Your Own 64-bit Operating System Kernel From Scratch

This respository holds all the source code for this YouTube tutorial series.

You can find the revision for a specific episode on this page.

Please make sure to select the revision corresponding to the episode you are working on. The code for each revision might not match the video content exactly, as some corrections and adjustments are made from time to time.

You can find pre-built ISO files for this kernel at this repository.

Considering supporting this work via my Patreon page.

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 myos-buildenv

Build

Enter build environment:

  • Linux or MacOS: docker run --rm -it -v "$(pwd)":/root/env myos-buildenv
  • Windows (CMD): docker run --rm -it -v "%cd%":/root/env myos-buildenv
  • Windows (PowerShell): docker run --rm -it -v "${pwd}:/root/env" myos-buildenv
  • Please use the linux command if you are using WSL, msys2 or git bash
  • 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
  • If you are using Qemu, please close it before running this command to prevent errors.

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!)

  • qemu-system-x86_64 -cdrom dist/x86_64/kernel.iso
  • Note: Close the emulator when finished, so as to not block writing to kernel.iso for future builds.

If the above command fails, try one of the following:

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 myos-buildenv -f