obhq/obliteration
GitHub: obhq/obliteration
一个使用 Rust 从零重写的实验性 PS4 内核,通过定制虚拟化技术让 PS4 系统软件在 PC 上运行。
Stars: 782 | Forks: 24

## 关于
[](https://github.com/obhq/obliteration/actions/workflows/main.yml)
[](https://obkrnl.zulipchat.com)
Obliteration 是一个使用 Rust 重写的免费开源 PlayStation 4 内核。我们的目标不是在 PlayStation 4 上运行,而是通过专门为 Obliteration 优化的定制虚拟化技术栈,在 Windows、Linux 和 macOS 上运行转储的 PlayStation 4 系统软件。

该项目最初是 [Kyty](https://github.com/InoriRus/Kyty) 的一个硬分叉。随后我们决定参考 Kyty 和 [Uplift](https://github.com/idc/uplift),从零开始重写整个项目,以帮助我们启动这项工作。
我们的最终目标是成为一个宽松许可的、针对游戏优化的免费开源操作系统,并能在多种硬件上运行。我们想要构建它的原因如下:
- Windows 过于臃肿,而且 Microsoft 一直在往里面塞入太多的东西。
- Linux 对初学者来说是一场噩梦。其许可证也使其不适合作为专有硬件的选择。
- macOS 的硬件选择有限,且价格过于昂贵。同样的价格可以买到配备高端显卡的 PC。
- FreeBSD 和其他系统并非为游戏设计。它们的目标要么是服务器,要么是通用桌面。
所以既然我们已经在构建操作系统内核,我们希望借此机会超越 PlayStation 4 模拟器的范畴。
项目的 Logo 和图标由 [VocalFan](https://github.com/VocalFan) 设计。
## 状态
目前我们还无法运行任何游戏。我们已经拥有了一个可运行的 [64 位](https://en.wikipedia.org/wiki/Long_mode)内核以及用于运行它的 VMM。该内核已成功设置 [GDT](https://en.wikipedia.org/wiki/Global_Descriptor_Table)、[TSS](https://en.wikipedia.org/wiki/Task_state_segment)、[IDT](https://en.wikipedia.org/wiki/Interrupt_descriptor_table) 和 [syscall](https://en.wikipedia.org/wiki/System_call) 指令。目前我们正在开发 [UMA](https://man.freebsd.org/cgi/man.cgi?query=uma) 系统。一旦完成,我们将开始从我们的[旧版用户模式内核](https://github.com/obhq/obliteration/tree/main/legacy/src)迁移代码,然后执行 `mini-syscore.elf`。
进度较慢的原因是我们试图在不进行存根(stubbing)的情况下尽可能完整地实现内核。
## 主要特性
- 跨平台,为每个平台提供原生二进制文件。
- 通过直接使用 [Windows Hypervisor Platform](https://learn.microsoft.com/en-us/virtualization/api/#windows-hypervisor-platform)、[KVM](https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine) 或 [Hypervisor Framework](https://developer.apple.com/documentation/hypervisor),配合定制虚拟设备优化的 MMIO,实现接近原生的性能。
- 内核行为与 PlayStation 4 内核几乎完全一致。尽管目前还不能运行任何游戏,但我们相信这一选择将使我们能够拥有极高的兼容性。
## 系统要求
- 支持 [SLAT](https://en.wikipedia.org/wiki/Second_Level_Address_Translation) 的 CPU。
- 16 GB 内存。
- 64 位操作系统。
## 获取每日构建版
请注意,如上所述,目前我们还无法运行任何游戏。但如果您想尝试或协助测试,可以在[此处](https://github.com/obhq/obliteration/actions/workflows/main.yml)下载最新提交的二进制文件。您**必须**登录 GitHub,否则将无法下载文件。
我们的开发人员使用 Linux,因此 Windows 和 macOS 用户可能会遇到一些未实现的功能。欢迎提交 PR 来实现这些功能,或者如果您愿意成为测试者,可以报告问题,我们会尝试为您实现以便测试。
## 构建与开发
有关 Obliteration 开发及从源代码构建的信息,请参阅我们的[开发者文档](https://dev.obliteration.net)。
### UI 图标
我们的 UI 使用了来自 https://materialdesignicons.com 的图标。
## 许可证
所有源代码均根据 MIT 许可证或 Apache 许可证 2.0 版;或两者之一进行许可。
除非您明确声明,否则根据 Apache-2.0 许可证的定义,您有意提交以包含在 Obliteration 中的任何贡献均应按上述方式双重许可,不附带任何额外条款或条件。
请注意,如果其他 PlayStation 4 模拟器的代码是根据 MIT 或 Apache-2.0 以外的许可证授权的,除非您是该代码的作者,否则我们无法接受任何此类代码。
标签:Kyty, Obliteration, PlayStation 4, PS4, Rust, Uplift, VMM, x86-64, 云资产清单, 仿真器, 内核, 内核开发, 可视化界面, 实验性项目, 底层开发, 开源, 操作系统, 游戏, 游戏主机, 系统开发, 系统架构, 系统软件, 网络流量审计, 虚拟化, 虚拟机监控程序, 逆向工程, 通知系统