Show HN: 我自己写的 Hobby OS 终于可以在我的老式 IBM ThinkPad 上运行了
Hobby 32位操作系统项目,专注于 i386 架构上的网络功能。探索文档 » 查看演示 · 报告 Bug · 请求功能
目录
关于项目
32位 Hobby 操作系统,具有图形界面、多任务和网络功能!
开始时间:2022年5月12日
(回到顶部)
登录
有 3 个默认用户:system、admin 和 guest。admin 的密码是 'admin',而 guest 没有密码。目前,admin 和 guest 之间没有区别。 您可以使用 'admin' 命令创建一个用户:
admin create <username> <password>
构建工具
此项目使用 C & Assembly 构建内核、实用程序和构建系统。C++ 用于用户空间应用程序,Make 用于编译。使用 Docker 进行跨平台编译。
(回到顶部)
硬件
在以下设备上测试过:Lenovo x240, Asus Eee PC series, Dell Optiplex 780, Samsung N150 Plus, Samsung NP-NC10, IBM Thinkpad a21p
|
---|---
开始使用
准备工作
跨平台:使用 Docker 编译镜像文件,使用 QEMU 进行模拟。对于本地编译,您需要:
- i386-elf-gcc, i386-elf-ld 和 i386-elf-g++ (用于 MacOS)。
- build-essential 和 gcc-multilib (用于 Linux / WSL (ubuntu))
- 还需要:grub2, xorriso 和 xxd (用于使用 Grub 作为引导加载程序)
安装
要编译内核及其所需的程序,您只需运行 make img
和 make qemu
来打开 QEMU
Linux
- 克隆仓库
git clone https://github.com/joexbayer/RetrOS-32.git
- 检查是否安装了所有依赖项(仅适用于基于 debian 的发行版)
./debian.sh
- 初始化 Git 子模块(C 编译器)
git submodule update --init --recursive
- 编译并创建镜像
make compile
make img
- 启动 QEMU
make qemu
- 使用 GRUB (可选)
make grub
MacOS
目前,MacOS 无法本地编译构建工具,因为它们依赖于 32 位 x86 代码。如果您仍然希望编译操作系统,Docker 是最简单的方法。
- 克隆存储库
git clone https://github.com/joexbayer/RetrOS-32.git
- 初始化 Git 子模块(C 编译器)
git submodule update --init --recursive
- 使用 Docker 构建
docker-compose up --build
Windows
使用 Docker(参见 MacOS 部分)或 WSL(参见 Linux 部分)。 (回到顶部)
使用方法
要运行 RetrOS-32:
- http://copy.sh/v86/ : 上传 .img 文件作为硬盘镜像。
- QEMU:
make qemu
或qemu-system-i386 <image name>
- 真实硬件:将 .iso 文件刻录到 USB 或 CD(使用 GRUB iso)。
(回到顶部)
项目结构 (待定)
NETOS - 项目
├── Dockerfile
├── LICENSE.txt
├── Makefile
├── apps (用户空间应用程序)
│ ├── Makefile
│ ├── <app>
│ ├── libcore.a
│ ├── libgraphic.a
│ ├── libnet.a
│ ├── readme.md
│ └── utils
│ └── *.cpp
├── bin
│ └── *.o
├── boot (自定义引导加载程序)
│ ├── bootloader.s
│ └── multiboot.ld
├── docker-compose.yml
├── docs (文档)
│ ├── *.md
├── drivers (内核驱动程序)
│ └── *.c
├── fs (文件系统)
│ ├── Makefile
│ ├── bin
│ └── *.c
├── graphics
│ └── *.c
├── include
│ ├── arch
│ │ └── *.h
│ ├── fs
│ │ └── *.h
│ ├── gfx
│ │ └── *.h
│ ├── lib
│ │ └── *.h
│ ├── net
│ │ └── *.h
│ └── *.h
├── kernel (主内核源文件)
│ ├── arch
│ │ └── *.c
│ ├── kthreads
│ │ └── *.c
│ └── *.c
├── legacy (旧代码)
├── lib (库)
│ └── *.c
├── net (网络代码)
│ └── *.c
├── readme.md
├── rootfs (操作系统的根文件系统)
├── tests (测试代码)
│ ├── Makefile
│ ├── bin
│ ├── *_test.c
│ └── readme.md
└── tools (构建工具)
├── scripts
└── bin
└── *.c
路线图
- 自定义引导加载程序 & GRUB 兼容
- Stage 2 引导加载程序
- 壁纸
- 可挂载镜像
- 用户
- 多线程抢占式调度
- GDT & TSS 内核/用户空间分离
- 中断处理
- PS/2 键盘 & 鼠标, PIT, VESA (640x480x8), RTC, 串口驱动, E1000
- PCI
- 8Bit RGB 到 8Bit VGA
- 文件系统
- 纯文本模式 VGA
- 网络栈
- Ethernet, IP, ARP, UDP
- Socket API
- 接口
- Loopback
- DHCP
- DNS
- TCP
- Netcat 风格命令
- Webserver
- FTP
- IRC
- SSH
- Telnet
- HTTP
- HTML
- ATA IDE 驱动
- Ext2 (类似) 文件系统
- FAT16, 支持最大 32mb 的文件。
- 读/写
- Atapi
- 内存
- 32 位虚拟内存
- kalloc / kfree (内核)
- malloc / free (用户空间)
- 图形
- 窗口管理器
- GFXLib
- 双缓冲帧渲染
- 鼠标事件
- 动态调整大小
- 全屏
- Widgets Library
- 自定义 HTML 到 Widgets
- 终端, 窗口服务器, 进程信息, Finder。
- 库 (printf, memcpy 等)
- IPC
- 系统调用
- C 编译器 / 解释器到字节码
- 自定义 VM 来运行字节码。
- 具有语法高亮显示的编辑器
- 计算器
- 3D 游戏
- 贪吃蛇游戏 (仅文本模式)
- 用户空间线程 (共享虚拟内存)
- 通过 TCP 的远程虚拟终端
- LZ 压缩库
- 工具
- 构建
- 同步/迁移工具
- mkfs
- 测试
- 创建和编码图标和壁纸
查看 开放的问题,获取建议功能(和已知问题)的完整列表。 (回到顶部)
许可证
在 MIT License 下分发。 参见 LICENSE.txt
了解更多信息。
(回到顶部)
联系方式
Joe Bayer 项目链接: https://github.com/joexbayer/RetrOS-32 (回到顶部)
鸣谢
使用此空间列出您认为有用的资源,并希望表示感谢。 我已经包括了一些我最喜欢的开始!
(回到顶部)
关于
一个用于 i386 架构的具有图形、多任务、网络和 32 位 C 编译器的 x86 32 位 Hobby 操作系统。
主题
c kernel assembly os osdev retros32
资源
许可证
Stars
Watchers
Forks
Releases 2
RetrOS-32 v0.0.5 最新版本 Apr 26, 2025 + 1 release
Contributors 2
语言
页脚
页脚导航
你现在无法执行此操作。