From 75d120efcd7829a4d0fe7d8b42474fa4ea3fe655 Mon Sep 17 00:00:00 2001 From: xamidev <121681048+xamidev@users.noreply.github.com> Date: Sat, 24 Aug 2024 19:02:42 +0200 Subject: [PATCH] Rewrite: documentation --- README.md | 36 +++--------------------------------- docs/DEVELOPERS.md | 13 +++++++++++++ docs/USERS.md | 19 +++++++++++++++++++ 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 0d958d3..8ba54f7 100644 --- a/README.md +++ b/README.md @@ -2,26 +2,9 @@ # 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. +Rewritten monolithic, ring 0, lower-half, singletasking kernel for the x86 processor architecture, using GRUB 2 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: @@ -54,19 +37,6 @@ 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) - -``` -make debug -``` - -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](docs/USERS.md), and the other one is the Developer's Manual, labelled [DEVELOPERS.md](docs/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. *(The docs might not always be up-to-date)* @@ -82,7 +52,7 @@ Two other documents are available to help you understand the project better. One - Ralf Brown's Interrupt List - the [little book about OS development](https://littleosbook.github.io/) by Erik Helin and Adam Renberg -### Roadmap +### Features / Roadmap - [X] Booting with GRUB - [X] Common basic structures (IDT, GDT, ISRs, IRQs) @@ -95,7 +65,7 @@ Two other documents are available to help you understand the project better. One - [ ] Getting to Ring-3 (userspace) - [ ] Multitasking (via round robin scheduling) - [ ] Advanced/other drivers (video, SB16, RTC, Ethernet) -- [ ] UEFI support +- [X] UEFI support - [ ] ELF parsing - [ ] System calls - [ ] GUI diff --git a/docs/DEVELOPERS.md b/docs/DEVELOPERS.md index 34a2609..760e985 100644 --- a/docs/DEVELOPERS.md +++ b/docs/DEVELOPERS.md @@ -14,6 +14,19 @@ The source code is available in folder `src`. You will find subfolders correspon No system calls are available, as the OS runs in kernel-space. +## Debugging the kernel (QEMU w/ GDB) + +``` +make debug +``` + +In another shell: + +``` +gdb kernel.elf +(gdb) target remote localhost:1234 +``` + ## Making programs for the OS ### Step 1 - Making the program and the entry point diff --git a/docs/USERS.md b/docs/USERS.md index 5759364..1185b0c 100644 --- a/docs/USERS.md +++ b/docs/USERS.md @@ -2,6 +2,25 @@ ## Getting started +First, let me introduce you some features of this project. + +## 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... + ### Installation and emulation/execution Please refer to the relevant sections in the project `README.md` available in the root folder.