BareMetal OS
Build scripts for BareMetal OS and its related utilities - The easiest way to create a BareMetal OS environment. These scripts will download and compile all of the components needed for using BareMetal OS.
Prerequisites
The scripts in this repo depend on a Debian-based Linux system like Ubuntu or Elementary. macOS is also supported to build and test the OS and Assembly applications if you are using Homebrew.
- NASM - Assembly compiler to build the loader and kernel, as well as the apps written in Assembly.
- QEMU - Computer emulator if you plan on running the OS for quick testing.
- GCC - C compiler for building C/C++ applications.
- Git - Version control software for pulling the source code from GitHub.
Optional:
- mtools - Utilities to access DOS disks in Unix. This is only required if you plan on using UEFI.
In Linux this can be completed with the following command:
sudo apt install nasm qemu-system-x86 gcc git
Summary
BareMetal OS consists of several different projects:
- Pure64 - The boot sector and software loader. Pure64 is responsible for getting the computer into a clean 64-bit state on boot up.
- BareMetal - The kernel.
- Monitor - A simple command line interface.
- BMFS - The BareMetal File System utility.
- BareMetal-Demo - Various test/example programs.
Initial configuration
git clone https://github.com/ReturnInfinity/BareMetal-OS.git
cd BareMetal-OS
./setup.sh
setup.sh
automatically runs the build and install scripts. Once the setup is complete you can execute the run.sh script to verify that everything installed correctly.
Rebuilding the source code
./build.sh
Installing the system to the disk image
./install.sh
This command installs the boot sector, loader (Pure64), kernel, and simple command line interface (Monitor) to the disk image. If you want to attach your own binary to the end of the kernel you can use ./install.sh mybinary.bin
Installing the demos to the disk image
./add-demos.sh
This command installs the various test/example programs to the disk image.
Test the install with QEMU
./run.sh
Test the install with QEMU via UEFI (Experimental)
./uefi-run.sh
This command relies on mtools
to create a disk image formatted with FAT.
Build a VMDK disk image for VMware
./vmdk.sh
Build a VDI disk image for VirtualBox
./vdi.sh
The VDI script rewrites the disk ID of the VDI file to avoid the disk warning in VirtualBox.
// EOF