Files
blankos/README.md
2024-07-22 11:07:52 +02:00

2.6 KiB

BlankOS

Rewritten monolithic version of Blank OS for the x86 processor architecture. Features a framebuffer, serial port driver, GDT, IDT. The OS relies on an old, legacy version of GRUB as the bootloader (eltorito). This should be GRUB 2 compatible. Emulation was tested on Arch Linux 6.9.7-arch1-1. 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 to be ran using the kernel.

Next steps for this project will be:

  • ISRs and making the PIC work
  • Keyboard driver
  • User programs
  • Shell
  • Kernel libc
  • Filesystem support

Usage

Dependencies

For Debian-based distros:

sudo apt install gcc nasm make bochs

Then change display-library to sdl2 in the bochsrc.txt file.

For Arch-based distros:

sudo pacman -S nasm gcc make
git clone https://aur.archlinux.org/bochs.git

Then follow these instructions to compile Bochs with X support. Alternatively you can use Bochs with SDL but you'll have to change the bochsrc.txt file accordingly.

Building and running

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

This will start a new Bochs debugger instance. To proceed with the kernel execution, you will have to type c in the shell spawning Bochs. Serial output will be saved under the com1.out file, this way you can debug the kernel by viewing its log messages. To quit, type q. Feel free to open issues or pull requests.

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, not UEFI mode. Then, switch the boot mode to "Legacy" in your BIOS utility.

Then, use the Makefile target real to build a "real"-capable ISO disk image. The image will have GRUB2 installed on it, using the grub-mkrescue utility (make sure to install it before) which is dependent on xorriso (install it too).

Once the ISO file is generated, you can write it on a disk using this command:

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!

⚠️ 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!