Skip to content

LeftarCode/bubelos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BubelOS

Prerequisites

  • GCC 10.x required for building EDK2(stable/202011)

Clone repo

git clone --recurse-submodules https://github.com/LeftarCode/bubelos

Building

1. EDK 2

cd externals/edk2
source edksetup.sh
make -C BaseTools
cd -

2. OVMF image (very, very, veryyyyy long ~1h)

You may use your own pre-built OVMF image. If not, it's worth building a image with EDK2.

./externals/edk2/OvmfPkg/build.sh -a X64 -t GCC5 -b RELEASE -D PKG_OUTPUT_DIR=$PKG_OUTPUT_DIR

3. Kernel image

./build.sh

Run OS in QEMU

  • Spawn UEFI shell:
qemu-system-x86_64 -cpu qemu64 -net none -m 2G -machine q35 -drive if=pflash,format=raw,unit=0,file=./externals/edk2/Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd,readonly=on  -drive if=pflash,format=raw,unit=1,file=./externals/edk2/Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fd -drive file=./build/uefi.img,if=ide
  • Single OVMF image:
qemu-system-x86_64 -cpu qemu64 -net none -m 4G -machine q35 -bios ./externals/edk2/Build/OvmfX64/RELEASE_GCC5/FV/OVMF.fd -drive file=./build/uefi.img,if=ide

TODO

  • Migrate to newer EDK2.
  • Fix style (debug prints, passing and returning params).
  • Add status print to every error message.
  • Make more GC in Bootloader.

About

BubelOS is an educational operating system featuring a bootloader written in EDKII. It's an experimental playground where I'll periodically add new features and explore OS development concepts.

Topics

Resources

License

Stars

Watchers

Forks

Contributors