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 硬件支持

MITGPL-3.0 许可证

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操作系统

screenshot

MOROS是由Vincent Ollivier编写的Rust爱好操作系统。

它针对具有x86-64架构和BIOS的计算机,因此主要来自2005年到2020年,但它也大多数仿真器(Bochs、QEMU和VirtualBox)上运行良好。

该项目始于Philipp Oppermann的《用Rust编写操作系统》第二版的第七篇博客文章,通过阅读OSDev wiki以及许多开源内核。

GitHub Actions Crates.io

功能

  • 外部引导加载程序(使用bootloader
  • x86 CPU支持(使用x86_64
  • 硬件中断(使用pic8259
  • PS/2键盘,具有可自定义布局(使用pc-keyboard
  • VGA文本模式,具有可自定义字体和颜色调色板
  • 串行输出(使用uart_16550
  • 分页
  • 堆分配(使用linked_list_allocator
  • ACPI关机(使用acpiaml
  • RTC时钟
  • PCI设备
  • ATA PIO模式
  • 随机数生成器(使用rand_hc
  • Intel PRO/1000、RTL8139和AMD PCNET网卡
  • DHCP/IP/TCP/UDP/DNS/HTTP网络协议(使用smoltcp
  • 基本的文件系统
  • 基本 shell
  • 基本 文本编辑器
  • 基本 lisp 解释器
  • 基本的 NASM 和 Rust 程序用户空间
  • 一些文件和 网络 命令
  • 一些 游戏

文档

文档可在 此处 获取

设置

您需要在宿主机系统上安装 gitgccmakecurlqemu-imgqemu-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 中使用 installdisk format

测试

在 QEMU 中运行测试套件

$ make test

许可证

MOROS 根据 MIT 许可证发布。

依赖项

~16MB
~281K SLoC