# SimpleKernel
**Repository Path**: ccstl/SimpleKernel
## Basic Information
- **Project Name**: SimpleKernel
- **Description**: Simple kernel for learning operating systems. 用于学习操作系统的简单内核,fork自https://github.com/Simple-XX/SimpleKernel.git并保持同步
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-10-30
- **Last Updated**: 2024-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README




[](https://github.com/996icu/996.ICU/blob/master/LICENSE)
[](https://996.icu)
[English](https://github.com/SimpleXX/SimpleKernel/blob/master/README_en.md) | [中文](https://github.com/SimpleXX/SimpleKernel/blob/master/README.md)
# SimpleKernel
## 关键词
- Kernel
- C/C++
- Linux-like
- Multiboot2
## 简介
SimpleKernel,一个用来练手的简单内核。提供了各个阶段完成度不同的内核,你可以从自己喜欢的地方开始。
## 开发环境
- Ubuntu Linux
- brew
- x86_64-elf-binutils
- x86_64-elf-gcc
- xorriso
- grub
- bochs
- bochs-x
Ubuntu 20.04 测试通过
- Arch Linux
- brew
- x86_64-elf-binutils
- x86_64-elf-gcc
- mtools
- xorriso
- grub
- bochs
Manjaro 5.6.15-1 测试通过
- Mac
- brew
- x86_64-elf-binutils
- x86_64-elf-gcc
- xorriso
- grub
- bochs
macOS 10.15.7 测试通过
## 如何运行
```shell
git clone https://github.com/SimpleXX/SimpleKernel.git
cd SimpleKernel/
bash ./run.sh
```
运行截图

## 目录结构
- 原则
整个工程按照功能模块划分子目录,每个子目录再划分头文件和源文件目录,以便架构清晰、易懂。
### 目录设计
- 原则
目录的命名能准确描述模块的基本功能,建议用小写字母且不含下划线、点等特殊符号;
目录必须放于相包含的父目录之下,并需要明确与其他目录间的耦合性。
- 示例
kernel:系统内核部分;
libs:依赖库;
### 依赖关系
- 原则
新添加组件往往依赖于系统原有组件,必须以最小耦合的方式明确所直接依赖的组件。
### 头文件
#### 文件命名
头文件命名能准确描述文件所包含的模块内容,达到通俗、易懂的目的。
## CMake
## 测试
### 自动集成
每次 push 会使用 Github Action 进行测试,可以通过编译即可。
## 代码风格
- git commit 规范:
https://zhuanlan.zhihu.com/p/182553920
- 代码样式
由 tools/clang-format 指定
## 镜像文件
simplekernel.img 是 1.44 软盘,我们的内核就在这里。
## TODO
- 并发
- 文件系统
- 设备驱动
## 贡献者
[MRNIU](https://github.com/MRNIU)
[cy295957410](https://github.com/cy295957410)
[rakino](https://github.com/rakino)
[xiaoerlaigeid](https://github.com/xiaoerlaigeid)
## 贡献
请阅读 CONTRIBUTING.md。
## 感谢
此项目参考了很多优秀的项目和资料
[osdev](https://wiki.osdev.org)
[GRUB 在 Mac 上的安装](https://wiki.osdev.org/GRUB#Installing_GRUB_2_on_OS_X)
[multiboot](https://www.gnu.org/software/grub/manual/multiboot/multiboot.html)
《程序员的自我修养--链接、装载与库》(俞甲子 石凡 潘爱民)
[JamesM's kernel development tutorials](http://www.jamesmolloy.co.uk/tutorial_html/1.-Environment%20setup.html)
[xOS](https://github.com/fengleicn/xOS)
[hurlex](http://wiki.0xffffff.org/posts/hurlex-8.html)
[howerj/os](https://github.com/howerj/os)
[cfenollosa/os-tutorial](https://github.com/cfenollosa/os-tutorial)
[omarrx024/xos](https://github.com/omarrx024/xos)
[PurpleBooth/project-title](https://gist.github.com/PurpleBooth/109311bb0361f32d87a2%23project-title)
[0xAX weblong](http://0xax.blogspot.com/search/label/asm)
[How-to-Make-a-Computer-Operating-System](https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System)
[coding-style](https://www.kernel.org/doc/Documentation/process/coding-style.rst)
[DNKernel](https://github.com/morimolymoly/DNKernel)
[c-algorithms](https://github.com/fragglet/c-algorithms)
[Linux内核中的中断栈与内核栈的补充说明](http://blog.chinaunix.net/uid-23769728-id-3077874.html)
[Linux进程管理 (1)进程的诞生](https://www.cnblogs.com/arnoldlu/p/8466928.html)
[SynestiaOS](https://github.com/SynestiaOS/SynestiaOS)
## 捐助者
- [digmouse233](https://github.com/digmouse233)
- l*e
## 支持作者
请我喝杯咖啡吧!
(ps: 请注明 GitHub id 以便加入捐献者名单
## 版权信息
此项目使用 MIT 许可证