14个版本 (7个破坏性更新)
0.10.4 | 2024年6月20日 |
---|---|
0.10.3 | 2024年3月20日 |
0.10.2 | 2023年12月22日 |
0.10.1 | 2023年9月27日 |
0.1.0 | 2019年12月29日 |
#150 in 硬件支持
630KB
19K SLoC
包含 (ELF exe/lib, 25KB) dsk/bin/sleep,(ELF exe/lib, 23KB) dsk/bin/exec,(ELF exe/lib, 20KB) dsk/bin/hello,(ELF exe/lib, 2KB) dsk/bin/clear,(ELF exe/lib, 2KB) dsk/bin/halt,(ELF exe/lib, 2KB) dsk/bin/print 和更多。
MOROS:神秘的Rust操作系统
MOROS是由Vincent Ollivier编写的Rust爱好操作系统。
它针对具有x86-64架构和BIOS的计算机,因此主要来自2005年到2020年,但它也大多数仿真器(Bochs、QEMU和VirtualBox)上运行良好。
该项目始于Philipp Oppermann的《用Rust编写操作系统》第二版的第七篇博客文章,通过阅读OSDev wiki以及许多开源内核。
功能
- 外部引导加载程序(使用bootloader)
- x86 CPU支持(使用x86_64)
- 硬件中断(使用pic8259)
- PS/2键盘,具有可自定义布局(使用pc-keyboard)
- VGA文本模式,具有可自定义字体和颜色调色板
- 串行输出(使用uart_16550)
- 分页
- 堆分配(使用linked_list_allocator)
- ACPI关机(使用acpi 和 aml)
- RTC时钟
- PCI设备
- ATA PIO模式
- 随机数生成器(使用rand_hc)
- Intel PRO/1000、RTL8139和AMD PCNET网卡
- DHCP/IP/TCP/UDP/DNS/HTTP网络协议(使用smoltcp)
- 基本的文件系统
- 基本 shell
- 基本 文本编辑器
- 基本 lisp 解释器
- 基本的 NASM 和 Rust 程序用户空间
- 一些文件和 网络 命令
- 一些 游戏
文档
文档可在 此处 获取
设置
您需要在宿主机系统上安装 git
、gcc
、make
、curl
、qemu-img
和 qemu-system-x86_64
。
克隆仓库
$ git clone https://github.com/vinc/moros
$ cd moros
使用 make setup
或以下命令安装所需的工具
$ curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
$ rustup show
$ cargo install bootimage
用法
构建镜像到 disk.img
$ make image output=video keyboard=qwerty
在 QEMU 中运行 MOROS
$ make qemu output=video nic=rtl8139
通过将引导加载程序和内核复制到硬盘或 U 盘在 x86 计算机上本地运行(但当前没有 USB 驱动程序,因此在这种情况下文件系统将不可用)
$ sudo dd if=target/x86_64-moros/release/bootimage-moros.bin of=/dev/sdx
MOROS 启动后如果未检测到文件系统,将以无盘模式打开控制台。以下命令将在硬盘上设置文件系统,允许您退出无盘模式并以普通用户登录
> install
使用 dd
时,请小心不要覆盖您的操作系统的硬盘,并且如果您不使用仿真器,请勿在 MOROS 中使用 install
或 disk format
。
测试
在 QEMU 中运行测试套件
$ make test
许可证
MOROS 根据 MIT 许可证发布。
依赖项
~16MB
~281K SLoC