- kernel
- x86, x86_64, riscv64
- C, C++, AT&T ASM
- cmake
- multiboot2, opensbi
SimpleKernel, a simple kernel for learning. Contains the basic functionality of an operating system
Kernels with different levels of completion are available, and you can start from where you like.
Each branch:
- boot: system startup, from the bootloader to the kernel entry
- printf: basic character output for debud
- parse_boot_info: reliminary parsing of the information passed by the bootloader
- pmm: physical memory management
- vmm: virtual memory management
- heap: heap management
- lib: part of c++ std/stl
- intr: interrupt management
- task: TODO
- filesystem: TODO
- device management: TODO
- syscall: TODO
- user mode: TODO
-
Common tools
Cross compiler
x86_64-elf-gcc
,riscv64-unknown-elf-gcc
,arm-none-eabi-gcc
Debug
x86_64-elf-gdb
,riscv64-unknown-elf-gdb
,arm-none-eabi-gdb
Build
cmake
Simulator
bochs
,qemu
-
For x86
Bootloader
grub
ISO
xorriso
-
For riscv64
Bootloader
opensbi
-
For arm
TODO
git clone https://github.com/Simple-XX/SimpleKernel.git
cd SimpleKernel/
bash ./run.sh
Screenshot
The whole project according to the functional modules delimited molecular directory, each subdirectory and then divided header file and source file directory, so that the architecture is clear and easy to understand.
-
Principle
The naming of the directory should accurately describe the basic function of the module, it is recommended to use lowercase letters and do not contain underline, dot and other special symbols;
Directories must be placed under the parent directory that they contain, and they need to be explicitly coupled to other directories.
-
Principle
New components are often dependent on existing components of the system, and the components that are directly dependent must be specified with minimal coupling.
-
Principle
Header file naming should accurately describe the contents of the module contained in the file to achieve the purpose of easy to understand.
Each push will be tested using Github Action.
-
git commit:
[tools/Git Commit 规范.pdf](./tools/Git Commit 规范.pdf)
-
code style
Specified by .clang-format
- concurrent
- File system
- drive
Free to PR!
《程序员的自我修养--链接、装载与库》(俞甲子 石凡 潘爱民)
JamesM's kernel development tutorials
How-to-Make-a-Computer-Operating-System
- digmouse233
- l*e
- fslongjin
MIT LICENCE