2024-08-19 12:50:17 +02:00
2024-08-18 12:19:16 +02:00
2024-08-19 12:50:17 +02:00
2024-08-08 13:11:34 +02:00

showcase

BlankOS

Rewritten monolithic, ring 0, lower-half, singletasking kernel for the x86 processor architecture, using GRUB (eltorito) as bootloader. Emulation was tested on QEMU using Arch Linux 6.9.7-arch1-1, and on real hardware too. The long-term goal of this OS is to be capable of running user programs and having its own complete kernel C library so that users can write their own C programs and expand the system!

Features

  • Serial port driver (output & debug)
  • Framebuffer driver (output)
  • PS/2 Keyboard and PIC driver (input)
  • PIT (system clock/timer) driver
  • Working IDT, GDT, ISRs, and IRQs
  • Kernel panicking (exception handling)
  • A kernel-space shell
  • Cool color output!!
  • Some small working kernel-space programs, such as...
  • A brainfuck interpreter
  • An arithmetic calculator
  • ROT13 and Morse cipher programs
  • Conway's Game of Life
  • And some more...

Usage

Download the latest BlankOS disk image from the "Releases" tab, and start it using the QEMU emulator:

qemu-system-i386 blankOS-i386-0.3.55.iso

Building from source

git clone https://github.com/xamidev/blankos
make toolchain
make
make run

The toolchain target will download the appropriate cross-compiling tools, and the run target will make a disk image for emulation or real hardware testing. Some operations require root access. Always audit the code yourself before running anything as root!

Running on real hardware

To run the OS on real hardware, you'll first need to have a BIOS-compatible computer. Some of the new laptops with graphical "BIOSes" only support UEFI now. So make sure to get a computer that can boot into BIOS mode. You'll have to switch the boot mode to "Legacy" in your BIOS/UEFI utility.

Burn your image file onto a USB stick:

sudo dd bs=4M if=blankos.iso of=/dev/sdX status=progress oflag=sync

Replace sdX with your USB drive name (you can find it by doing sudo fdisk -l). Tada! You now have a working BlankOS USB stick. Go ahead and try it out!

Debugging (QEMU w/ GDB)

qemu-system-i386 -s -S -drive file=blankos.iso,format=raw

In another shell:

gdb kernel.elf
(gdb) target remote localhost:1234

Documentation

Two other documents are available to help you understand the project better. One is the User's Manual, labelled USERS.md, and the other one is the Developer's Manual, labelled DEVELOPERS.md. They are full of useful resources around Blank OS. You'll learn how to use the system and how to contribute to it.

Resources

⚠️ Disclaimer

This is a hobbyist operating system kernel and it comes without any warranty whatsoever! It isn't capable of anything really. Feedback and contributions are highly appreciated!

Roadmap

  • Booting with GRUB
  • Common basic structures (IDT, GDT, ISRs, IRQs)
  • Common drivers (framebuffer, keyboard, serial, timer)
  • Kernel-space utilities (shell, simple programs)
  • Filesystem (FAT32 or VFS ramdisk)
  • Changing the default VGA font
  • Paging/Page Frame Allocation
  • TCP/IP Network stack
  • Getting to Ring-3 (userspace)
  • Multitasking (via round robin scheduling)
  • Advanced/other drivers (video, SB16, RTC, Ethernet)
  • UEFI support
  • ELF parsing
  • System calls
  • GUI
  • POSIX and ANSI specification compatibility
Description
Simple i386 hobby operating system
Readme Unlicense 2 MiB
2024-10-07 19:31:25 +02:00
Languages
C 95.2%
Assembly 3%
Makefile 1.7%