MCPcopy Index your code
hub / github.com/StevenBaby/onix

github.com/StevenBaby/onix @v1.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.1 ↗ · + Follow
995 symbols 3,037 edges 180 files 303 documented · 30% updated 2y agov1.0.1 · 2023-10-25★ 8623 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Onix - 操作系统实现

主要功能

  • 系统引导:
    • [x] bootloader
    • [x] multiboot2
  • 设备驱动:
    • [x] PIC 8259 中断控制器
    • [x] PIT 8254 定时计数器
    • [x] 蜂鸣器
    • [x] CMOS 时钟 / 实时时钟
    • [x] CRTC 控制台 0xb8000
    • [x] PS/2 键盘
    • [x] 串口设备
    • [x] CPU 功能检测
    • [x] FPU 浮点处理单元
    • [x] IDE 硬盘 (PIO)
    • [x] 声霸卡驱动 (🐛 一些情况下播放卡顿)
    • [x] 软盘驱动
    • [x] PCI 总线枚举
    • [x] IDE 硬盘 (UDMA)
    • [x] e1000 网卡驱动
    • [x] ATAPI 光盘驱动
    • [ ] PS/2 鼠标 (🌱 panda)
    • [ ] VESA 图形驱动 (🌱 panda)
    • [ ] ACPI:控制关机和重启 @lihanrui2913 (🌱 acpi)
    • [ ] RTL8139 网卡驱动
    • [ ] USB
  • 内存管理:
    • [x] 保护模式和全局描述符
    • [x] 页映射(核心功能)
    • [x] 堆内存管理
  • 任务管理:
    • [x] 任务调度(核心功能)
    • [x] 同步与互斥 (锁)
    • [x] 定时器
    • [x] 信号机制
  • 用户程序:
    • [x] ELF 文件解析
    • [x] ELF 文件加载运行
    • [ ] 动态链接库
  • 系统调用
  • 文件系统:
    • [x] 管道
    • [x] 套接字
    • [x] Minix1 文件系统
    • [x] ISO9660 文件系统
  • 网络协议:
    • [x] Ethernet 以太网协议
    • [x] ARP 协议
    • [x] IPv4 协议
    • [x] ICMP 协议
    • [x] UDP 协议
    • [x] TCP 协议
    • [x] DHCP 协议:局域网 IP 地址获取
    • [x] DNS 协议:域名解析
    • [x] HTTP 协议:简单的 HTTP 服务器
  • 开发环境:
    • [x] 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

Pull Request 约定

  1. 确保每个修改的文件都是有意义的,不要添加与系统无关的文件;
  2. 确保每个 commit 都有足够的分量,对于无关紧要的 commit 可以合并在一起;
  3. Pull Request 请先提交到 dev 分支,若有新功能开发,再开新分支;

Commit Decription 前面加上 emoji ❤️ 提高阅读性:

  • ✨ 视频录制:与 B 站某一视频相关
  • 🐛 漏洞修复:修改了系统中的某个 Bug
  • 🎈 功能开发:加入原系统中没有的新功能
  • 📖 文档整理:修改 docs 中的内容
  • 📔 学习笔记:记录学习过程中的一些问题或者感悟
  • 🍕 其他:若有与 commit 强相关的 emoji 也可以添加,如:💾 软盘驱动

问题及答案

相关软件版本参考

Star History

Star History Chart

参考

Core symbols most depended-on inside this repo

printf
called by 121
src/lib/printf.c
running_task
called by 85
src/kernel/task.c
ip_addr_copy
called by 70
src/net/addr.c
memset
called by 41
src/lib/string.c
time
called by 40
src/lib/syscall.c
iput
called by 39
src/fs/inode.c
close
called by 35
src/lib/syscall.c
memcpy
called by 34
src/lib/string.c

Shape

Function 828
Class 130
Enum 37

Languages

C88%
C++11%
Python1%

Modules by API surface

src/lib/syscall.c75 symbols
src/kernel/console.c35 symbols
src/kernel/memory.c34 symbols
src/kernel/ide.c34 symbols
src/fs/minix/minix.c30 symbols
src/net/socket.c25 symbols
src/fs/fsyscall.c25 symbols
src/builtin/osh.c25 symbols
src/kernel/task.c24 symbols
src/kernel/floppy.c22 symbols
src/kernel/e1000.c22 symbols
src/kernel/execve.c20 symbols

For agents

$ claude mcp add onix \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact