- 系统引导:
- bootloader
- multiboot2
- 设备驱动:
- PIC 8259 中断控制器
- PIT 8254 定时计数器
- 蜂鸣器
- CMOS 时钟 / 实时时钟
- CRTC 控制台
0xb8000
- PS/2 键盘
- 串口设备
- CPU 功能检测
- FPU 浮点处理单元
- IDE 硬盘 (PIO)
- 声霸卡驱动 (🐛 一些情况下播放卡顿)
- 软盘驱动
- PCI 总线枚举
- IDE 硬盘 (UDMA)
- e1000 网卡驱动
- ATAPI 光盘驱动
- PS/2 鼠标 (🌱 panda)
- VESA 图形驱动 (🌱 panda)
- ACPI:控制关机和重启 @lihanrui2913 (🌱 acpi)
- RTL8139 网卡驱动
- USB
- 内存管理:
- 保护模式和全局描述符
- 页映射(核心功能)
- 堆内存管理
- 任务管理:
- 任务调度(核心功能)
- 同步与互斥 (锁)
- 定时器
- 信号机制
- 用户程序:
- ELF 文件解析
- ELF 文件加载运行
- 动态链接库
- 系统调用
- 文件系统:
- 管道
- 套接字
- Minix1 文件系统
- FAT 12/16/32 文件系统 (🌱 fat32)
- ISO9660 文件系统
- 网络协议:
- Ethernet 以太网协议
- ARP 协议
- IPv4 协议
- ICMP 协议
- UDP 协议
- TCP 协议
- DHCP 协议:局域网 IP 地址获取
- DNS 协议:域名解析
- HTTP 协议:简单的 HTTP 服务器
- 开发环境:
- WSL2 @znyin
- docker (🌱 docker)
目前不支持 USB 驱动,无法使用 U 盘直接在实体机启动,谨慎测试!
iso 文件的使用参考 版本 1.0.0;
对于 qemu
模拟器,需要提前配置 tap0
设备,用于网络:
qemu-system-i386 -m 32M -audiodev pa,id=snd -machine pcspk-audiodev=snd -device sb16,audiodev=snd -rtc base=localtime -chardev stdio,mux=on,id=com1 -serial chardev:com1 -netdev tap,id=eth0,ifname=tap0,script=no,downscript=no -device e1000,netdev=eth0 -drive file=onix_1.0.0.iso,media=cdrom,if=ide -boot d
- 确保每个修改的文件都是有意义的,不要添加与系统无关的文件;
- 确保每个 commit 都有足够的分量,对于无关紧要的 commit 可以合并在一起;
- Pull Request 请先提交到 dev 分支,若有新功能开发,再开新分支;
Commit Decription 前面加上 emoji ❤️ 提高阅读性:
- ✨ 视频录制:与 B 站某一视频相关
- 🐛 漏洞修复:修改了系统中的某个 Bug
- 🎈 功能开发:加入原系统中没有的新功能
- 📖 文档整理:修改 docs 中的内容
- 📔 学习笔记:记录学习过程中的一些问题或者感悟
- 🍕 其他:若有与 commit 强相关的 emoji 也可以添加,如:💾 软盘驱动
- bochs >= 2.7 1
- qemu >= 6.2.0 2
- gcc >= 11.2.0 3
- gdb >= 12.1 4
- nasm >= 2.15.05 5
- binutils >= 2.38 6
- vmware >= 16.1 7
- vscode >= 1.74.3 8
- ffmpeg >= 6.0 9
- python >= 3.6 10
- pyelftools >= 0.29 11