Writing an operating system for x86_64 for fun on top of Limine boot protocol. Most of the ideas in this OS is from xv6.
- Serial port I/O
- Userspace
- syscalls
- Interrupt handler
- Cooperative scheduling
- Round robin scheduling
- Wait
- Shell
- Floating Point
- 80387
- SSE
- AVX
- Preemptive scheduling
- File System
- NVMe driver
- CrowFS file system
- Device Files
- File open/closing
- File read
- File append
- File creation
- Folder creation
- File removal
- Rename
- Relative paths
- Page cache
- CMOS RTC
- VGA/Framebuffer
- BMP viewer
- Framebuffer console
- PS2 Keyboard Driver
- Multiprocessor/SMP
- DOOM
At first, you need to clone this project and submodules. This means that you should execute such a command to clone this project:
git clone --recurse-submodules -j2 https://github.com/HirbodBehnam/CrowOSFor the build dependencies, you can use the following command in Ubuntu to get everything:
apt install qemu-system-x86 build-essential gdisk git mtoolsNext, you only need to run make qemu to run the OS under emulation. You can use make qemu-kvm in order to run the OS with virtualization.
For debugging, use make qemu-gdb and run gdb in another window. gdb will automatically connect to qemu and stop.
Limine needs at least 128MB of RAM in order to show the boot menu. The OS itself tho should run on lower amounts of RAM. For the CPU, it should work on almost all 64bit Intel Core CPUs. I tested it with Penryn CPUs under QEMU and it looks like that it is working fine.