https://github.com/xddcore/openos
OpenOS,一个面向ARM64的开源操作系统。
https://github.com/xddcore/openos
Last synced: 14 days ago
JSON representation
OpenOS,一个面向ARM64的开源操作系统。
- Host: GitHub
- URL: https://github.com/xddcore/openos
- Owner: xddcore
- License: gpl-3.0
- Created: 2023-05-18T11:21:50.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-05-26T20:58:31.000Z (about 3 years ago)
- Last Synced: 2025-02-23T13:46:33.495Z (over 1 year ago)
- Language: C
- Homepage:
- Size: 409 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenOS
>2023年5月,xdd说: 要把Linux研究得裤衩都不剩。于是,OpenOS产生了。
OpenOS(Open Source Operating System),一个面向ARM64的开源操作系统。 本项目旨在深入探究ARM64,Linux内核,操作系统原理等嵌入式工程师必备知识。
## 致谢:
Linux: https://kernel.org/
BenOS: https://github.com/runninglinuxkernel/BenOS
## 核心特性
1. 从0到1,一步步实现一个操作系统。
2. 功能模块经过Unit Test验证。
3. 代码通过Linux CheckPatch.pl脚本检查。
## 平台支持
| 平台 | 支持情况 |
| ---- | ---- |
| 树莓派4B | ✅ |
| 树莓派3B | ❌ |
| QEMU-aarch64(推荐) | ✅ |
| - | - |
## 使用指南
### 1.获取源码
```
git clone https://github.com/xddcore/OpenOS.git
```
### 2.构建开发环境(QEMU)
#### 2.1 构建OpenOS编译环境
```
cd OpenOS/
make setenv
```
#### 2.2 手动安装QEMU
>利用树莓派4b patch重新编译安装qemu-system-aarch64,使qemu支持仿真树莓派4b
```
cd ~
git clone https://github.com/0xMirasio/qemu-patch-raspberry4.git
cd qemu-patch-raspberry4
mkdir build
cd build
../configure
make -j8
sudo make install
```
#### 2.3 测试QEMU
```
qemu-system-aarch64 -machine help
#找一下raspi4b2g是否在支持列表中
```
#### 2.4 测试OpenOS
```
make clean
make menuconfig
make
make run
```
## TODO List
### Part1
- [ ] 1. 打印"Hello, World!"
- [ ] 2. 切换异常等级
- [ ] 3. 实现简易的printk打印函数
- [ ] 4. 中断实验
- [ ] 5. 进程创建实验
### Part2
- [ ] 1. 进程调度实验
- [ ] 2. 中断注册
- [ ] 3. 让进程运行在用户态
- [ ] 4. 添加系统调用
- [ ] 5. 实现一个简单的物理内存页面分配器
- [ ] 6. 实现一个简单的小块内存分配器
- [ ] 7. 建立恒等映射页表
- [ ] 8. 实现简单的虚拟内存管理
- [ ] 9. 实现缺页异常机制
- [ ] 10. 实现panic功能和打印函数调用栈
- [ ] 11. 实现用户空间的内存分配函数
- [ ] 12. 写时复制功能的实现
- [ ] 13. 进程生命周期管理
### Part3
- [ ] 1. 信号量
- [ ] 2. 软中断机制
- [ ] 3. 编写SD卡的驱动
- [ ] 4. 设计和实现虚拟文件系统层
- [ ] 5. 实现ext2文件系统
- [ ] 6. 实现execv系统调用
- [ ] 7. 实现简单的shell界面
- [ ] 8. 添加多核SMP的支持