
CEST OS. Your modern simple operating system from scratch.
Overview
Demo
https://cest.sanchezcarlosjr.com/
Code
Keywords
operating system, kernel
Introduction
Background
Goals
Domain understanding
Functional requirements
- A shell with input from an ASCII keyboard and output to the screen.
Non-Functional Requirements
- Arch x86-64 bits.
- English.
- Our tech stack is NASM, clang, Make, C, and C++.
- Since we follow standards, we deploy on the UEFI. Our operating system will be incompatible with BIOS.
- We use QEMU for testing purposes because it is easier for kernel development than other options such as VirtualBox.
- We follow POSIX.
The Open Group Base Specifications Issue 7, 2018 edition. (2022, September 11). Retrieved from https://pubs.opengroup.org/onlinepubs/9699919799.2018edition
Design
- Monolithic structure.
- An user.
- General-purpose operating system.
- No networking.
- x86-64 arquitechture.
- OS’s input is a keyboard and its output is video, nothing else.
cest
│
└───boot # uefi boot
startup.h
└───lib # libraries such that users can build on top of them
└───libc # standard C library
stdio.h
stdlib.h
string.h
└───kernel # load arquitechture specific interfaces
└───interrupt
└───memory
└───proc
Lessons
Step 0 Install tools
We suppose you know how to install the docker.
- Clone repository
git clone [email protected]:sanchezcarlosjr/cest.git
- docker compose up
Assignment
Process
References
ecomaikgolf. (2022, October 29). alma. Retrieved from https://github.com/ecomaikgolf/alma
https://forum.osdev.org/viewtopic.php?f=1&t=32412
Absurdponcho. (2022, October 29). PonchoOS. Retrieved from https://github.com/Absurdponcho/PonchoOS/tree/main
[edk2] Handling hardware interrupts in EFI. (2022, October 29). Retrieved from https://edk2-devel.narkive.com/ht2Bda8v/edk2-handling-hardware-interrupts-in-efi
JSLinux. (2021, January 09). Retrieved from https://bellard.org/jslinux
AT&T assembly