Skip to content

isinare/BootableKernel

Repository files navigation

BootableKernel

This is a small personal learning project for exploring how a kernel boots on bare metal. It uses NASM assembly, a multiboot-compatible setup, and GRUB to boot a minimal kernel in QEMU.

What it does

Currently, the kernel boots in a simple 32-bit environment and prints "Hello World This is my first bootable kernel!!!" to the screen. The project also includes files for both 32-bit and 64-bit multiboot v2 boot setups as part of the learning process.

Project structure

  • boot.asm - the kernel entry point and simple VGA output
  • multiboot_header.asm - multiboot v2 header for GRUB
  • multiboot_header_32bit.asm - 32-bit multiboot v2 example
  • linker.ld - linker script for the kernel layout
  • makefile - build commands
  • build/isofiles/boot/grub/grub.cfg - GRUB boot configuration

Build and run

Run the following commands from the project root:

make
qemu-system-x86_64 -kernel kernel.bin

Purpose

This project is meant to help me learn low-level programming, bootloaders, and kernel basics.

Future ideas

  • add a simple print function for writing multiple lines to the screen
  • add a basic keyboard input loop

Websites referred to

About

Bare-Metal x86 Kernel is a minimal, educational operating system built from scratch to learn the fundamentals of low-level systems engineering. It boots on x86 hardware via the GNU Multiboot specification and GRUB, bypassing standard software layers to write text directly into the hardware's VGA video memory buffer.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages