{"id":13466927,"url":"https://github.com/StevenBaby/onix","last_synced_at":"2025-03-26T00:31:46.154Z","repository":{"id":39345973,"uuid":"445587336","full_name":"StevenBaby/onix","owner":"StevenBaby","description":"Onix - 操作系统实现","archived":false,"fork":false,"pushed_at":"2024-05-21T02:57:21.000Z","size":13150,"stargazers_count":746,"open_issues_count":3,"forks_count":150,"subscribers_count":17,"default_branch":"dev","last_synced_at":"2024-10-29T20:33:59.787Z","etag":null,"topics":["operating-system","os"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StevenBaby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-01-07T16:40:40.000Z","updated_at":"2024-10-28T10:46:17.000Z","dependencies_parsed_at":"2023-02-10T09:00:40.339Z","dependency_job_id":"1dcefd09-d21a-4ba1-911d-b2b528eeb5a0","html_url":"https://github.com/StevenBaby/onix","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenBaby%2Fonix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenBaby%2Fonix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenBaby%2Fonix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenBaby%2Fonix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StevenBaby","download_url":"https://codeload.github.com/StevenBaby/onix/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245566099,"owners_count":20636391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["operating-system","os"],"created_at":"2024-07-31T15:00:51.457Z","updated_at":"2025-03-26T00:31:41.225Z","avatar_url":"https://github.com/StevenBaby.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# Onix - 操作系统实现\n\n![](./docs/others/images/snapshot.png)\n\n- [本项目地址](https://github.com/StevenBaby/onix)\n\n- [相关 bilibili 视频](https://www.bilibili.com/video/BV1gR4y1u7or/)\n\n- [参考文献](./docs/others/参考文献.md)\n\n## 主要功能\n\n- 系统引导：\n    - [x] bootloader\n    - [x] multiboot2\n- 设备驱动：\n    - [x] PIC 8259 中断控制器\n    - [x] PIT 8254 定时计数器\n    - [x] 蜂鸣器\n    - [x] CMOS 时钟 / 实时时钟\n    - [x] CRTC 控制台 `0xb8000`\n    - [x] PS/2 键盘\n    - [x] 串口设备\n    - [x] CPU 功能检测\n    - [x] FPU 浮点处理单元\n    - [x] IDE 硬盘 (PIO)\n    - [x] 声霸卡驱动 (🐛 一些情况下播放卡顿)\n    - [x] 软盘驱动\n    - [x] PCI 总线枚举\n    - [x] IDE 硬盘 (UDMA)\n    - [x] e1000 网卡驱动\n    - [x] ATAPI 光盘驱动\n    - [ ] PS/2 鼠标 (🌱 panda)\n    - [ ] VESA 图形驱动 (🌱 panda)\n    - [ ] ACPI：控制关机和重启 [@lihanrui2913](https://github.com/lihanrui2913) (🌱 acpi)\n    - [ ] RTL8139 网卡驱动\n    - [ ] USB\n- 内存管理：\n    - [x] 保护模式和全局描述符\n    - [x] **页映射**（核心功能）\n    - [x] 堆内存管理\n- 任务管理：\n    - [x] **任务调度**（核心功能）\n    - [x] 同步与互斥 (锁)\n    - [x] 定时器\n    - [x] 信号机制\n- 用户程序：\n    - [x] ELF 文件解析\n    - [x] ELF 文件加载运行\n    - [ ] 动态链接库\n- 系统调用\n- 文件系统：\n    - [x] 管道\n    - [x] 套接字\n    - [x] Minix1 文件系统\n    - [x] FAT 12/16/32 文件系统 (🌱 fat32)\n    - [x] ISO9660 文件系统\n- 网络协议：\n    - [x] Ethernet 以太网协议\n    - [x] ARP 协议\n    - [x] IPv4 协议\n    - [x] ICMP 协议\n    - [x] UDP 协议\n    - [x] TCP 协议\n    - [x] DHCP 协议：局域网 IP 地址获取\n    - [x] DNS 协议：域名解析\n    - [x] HTTP 协议：简单的 HTTP 服务器\n- 开发环境：\n    - [x] WSL2 [@znyin](https://github.com/znyinyyniu)\n    - [ ] docker (🌱 docker)\n\n## 使用方法\n\n\u003e 目前不支持 USB 驱动，无法使用 U 盘直接在实体机启动，谨慎测试！\n\niso 文件的使用参考 [版本 1.0.0](./docs/13%20系统优化/179%20版本%201.0.0.md)；\n\n对于 `qemu` 模拟器，需要提前配置 `tap0` 设备，用于网络：\n\n    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\n\n## Pull Request 约定\n\n1. 确保每个修改的文件都是有意义的，不要添加与系统无关的文件；\n2. 确保每个 commit 都有足够的分量，对于无关紧要的 commit 可以合并在一起；\n3. Pull Request 请先提交到 dev 分支，若有新功能开发，再开新分支；\n\nCommit Decription 前面加上 emoji ❤️ 提高阅读性：\n\n- ✨ 视频录制：与 B 站某一视频相关\n- 🐛 漏洞修复：修改了系统中的某个 Bug\n- 🎈 功能开发：加入原系统中没有的新功能\n- 📖 文档整理：修改 docs 中的内容\n- 📔 学习笔记：记录学习过程中的一些问题或者感悟\n- 🍕 其他：若有与 commit 强相关的 emoji 也可以添加，如：💾 软盘驱动\n\n## 问题及答案\n\n- [问题及答案](./docs/others/问题及答案%20(Question%20and%20Answer).md)\n    - [gcc -m32 链接错误](./docs/others/问题及答案%20(Question%20and%20Answer).md#gcc--m32-%E9%93%BE%E6%8E%A5%E9%94%99%E8%AF%AF)\n    - [无法调试汇编代码](./docs/others/问题及答案%20(Question%20and%20Answer).md#%E6%97%A0%E6%B3%95%E8%B0%83%E8%AF%95%E6%B1%87%E7%BC%96%E4%BB%A3%E7%A0%81)\n\n## 相关软件版本参考\n\n- bochs \u003e= 2.7 [^bochs]\n- qemu \u003e= 6.2.0 [^qemu]\n- gcc \u003e= 11.2.0 [^gcc]\n- gdb \u003e= 12.1 [^gdb]\n- nasm \u003e= 2.15.05 [^nasm]\n- binutils \u003e= 2.38 [^binutils]\n- sfdisk \u003e= 2.39.3\n- vmware \u003e= 16.1 [^vmware]\n- vscode \u003e= 1.74.3 [^vscode]\n- ffmpeg \u003e= 6.0 [^ffmpeg]\n- python \u003e= 3.6 [^python]\n- pyelftools \u003e= 0.29 [^pyelftools]\n\n## Star History\n\n![Star History Chart](https://api.star-history.com/svg?repos=StevenBaby/onix\u0026type=Date)\n\n## 参考\n\n[^bochs]: \u003chttps://bochs.sourceforge.io\u003e\n[^qemu]: \u003chttps://www.qemu.org/docs/master/\u003e\n[^gcc]: \u003chttps://gcc.gnu.org/\u003e\n[^gdb]: \u003chttps://www.sourceware.org/gdb/\u003e\n[^nasm]: \u003chttps://www.nasm.us/\u003e\n[^binutils]: \u003chttps://www.gnu.org/software/binutils/\u003e\n[^vmware]: \u003chttps://www.vmware.com/products/workstation-pro.html\u003e\n[^vscode]: \u003chttps://code.visualstudio.com/\u003e\n[^ffmpeg]: \u003chttps://ffmpeg.org\u003e\n[^python]: \u003chttps://www.python.org/\u003e\n[^pyelftools]: \u003chttps://github.com/eliben/pyelftools\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStevenBaby%2Fonix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStevenBaby%2Fonix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStevenBaby%2Fonix/lists"}