CPL-1 kernel init log on i686 CPUs
CPL-1 Operating System is a hobby operating system project with the goal of creating lightweight and portable operating system that can build itself. It is called like that as the kernel for i686 target runs in ring 1 to avoid variable length interrupt frames (previously CPL-1 was only for i686 processors, so that was quite influential).
Currently there is only support for i686 CPUS with PIC 8259 interrupt controller and PCI configuration space access mechianism v1.0
- Process Subsystem
- Virtual File System
- NVMe controllers driver
- FAT32 readonly filesystem support
- Basic userspace support
- PS/2 keyboard driver
- VBE framebuffer driver
- Custom C standard library (very WIP)
- Basic shell and utilities
To build CPL-1 kernel for i686 target, you need to build GCC cross-compiler for i686-elf
target (don't forget to add to PATH) and install NASM. Additionally, util-linux and mtools are needed to create FAT32 partition.
Step 1. Configure the system. To generate the default config, run
python3 build-manager.py configure
Step 2. Build system
python3 build-manager.py build
Step 3. Run system
python3 build-manager.py run
Step 4. Clean up
python3 build-manager.py clean
While the code is a bit messy in places, PRs are more than welcome! A few things to note:
- Format your code with clang-format using
.clang-format
config in the repo. If you are using vscode, you can just install vscode extensions - When comitting, use the following format for commit names:
subsystem: Description
. - Join discord if you have any questions with regards to how to contribute etc
CPL-1 was relicensed to GPLv3.