SerenityOS 是一款为桌面电脑设计的图形化类 Unix 操作系统。它致敬了 90 年代的用户界面设计,并结合了现代 Unix 系统的强大功能。SerenityOS 借鉴了其他操作系统的优秀理念,旨在打造一个兼具美观和易用的系统。SerenityOS 将 90 年代的软件美学与 2000 年代末 *nix 系统的强大功能结合在一起。
特性
- 支持现代 x86 64 位内核,支持抢占式多线程
- 内置浏览器,支持 JavaScript、WebAssembly 等技术
- 安全功能,如硬件保护、用户权限限制、W^X 内存、(K)ASLR 等
- 系统服务,包括 WindowServer、LoginServer、AudioServer 等
- 良好的 POSIX 兼容性,支持多种 Unix 实用工具
- 虚拟文件系统和 ext2 文件系统
- 支持 IPv4、TCP、UDP 的网络堆栈
- 开发工具,如内核支持的分析工具、CrashReporter 等
- 广泛的文件格式支持,包括 PNG、JPEG、MP3 等
- 统一的设计风格和灵活的主题系统
- 各种游戏和日常 GUI 程序
安装
前提条件,确保您已安装所有依赖项:
Debian / Ubuntu
sudo apt install build-essential cmake curl libmpfr-dev libmpc-dev libgmp-dev e2fsprogs ninja-build qemu-system-gui qemu-system-x86 qemu-utils ccache rsync unzip texinfo libssl-dev
可选:安装 fuse2fs
以在无需 root 权限的情况下构建映像。
GCC 13 或 Clang 17
构建主机工具需要支持 C++23 的编译器,推荐使用 gcc-13
或 clang-17
。
在 Ubuntu 24.04 及更高版本中,gcc-13
可通过以下命令安装:
sudo apt update
sudo apt install gcc-13 g++-13
QEMU 6.2 或更高版本
QEMU 6.2 在 Ubuntu 22.04 可用。较早版本的 Ubuntu 可能需要运行 Toolchain/BuildQemu.sh
来构建推荐的 QEMU 版本。
CMake 版本 3.25.0 或更高
构建工具将尝试从源代码构建 CMake,如果系统中的 CMake 版本低于 3.25.x,您可能需要手动删除旧的 CMakeCache.txt 文件:
rm Build/*/CMakeCache.txt
Windows
SerenityOS 可以使用 WSL 2 版本在 Windows 上进行构建和运行。WSL 1 版本不支持 ext2 文件系统,因此不适用。
WSL 2 的系统要求:
- Windows 10 版本 2004 或更高版本(操作系统版本号 19041 或更高)
安装 WSL 2:
有关如何安装 WSL 2 的指南,请参阅官方教程。(此处省略链接,可自行搜索)
检查 WSL 版本:
安装完成后,请确保您要使用的 Linux 发行版(以及新的默认发行版)均为 WSL 2 版本。
wsl -l -v
可以列出所有已安装的 Linux 发行版及其版本。wsl --set-version <发行版名称> <版本号>
可以将某个发行版转换为另一个版本。wsl --set-default-version 2
可以将所有新安装的 Linux 发行版都设置为默认的 WSL 2 版本(可选)。
获取构建工具:
接下来,前往 BuildInstructions.md
文档,并根据您选择的 Linux 环境,按照其中的说明获取所需的构建工具。
文件系统性能注意:
在 Windows 主机文件系统上进行大量 IO 操作(例如编译大型 C++ 项目)时,WSL 2 的文件系统性能会比较差。有关详细信息,请参阅 WSL GitHub 项目上的相关议题。(此处省略链接,可自行搜索)
微软团队在此议题中建议:
- 如果可以,请将您的项目存储在 WSL 2 的 Linux 文件系统中。
这实际上意味着您需要将项目克隆并构建到诸如 /home/用户名/serenity
的目录下。然后,您可以通过 \\wsl$
访问 Linux 文件系统,例如,您的项目将位于 \\wsl$\home\用户名\serenity
。
设置 QEMU:
- 从官方网站下载并安装最新的 QEMU 二进制文件。(此处省略链接,可自行搜索)
- 至少需要安装以下组件:工具、用于 i386 和 x86_64 架构的系统仿真器,以及 DLL 库。
运行 SerenityOS:
执行 Meta/serenity.sh run
命令即可像往常一样构建并运行 SerenityOS。
硬件加速 (可选):
以上步骤会以软件虚拟化模式运行 QEMU,速度会比较慢。QEMU 可以通过 Windows Hypervisor Platform (WHPX) 支持 Windows 上的硬件加速。
- 通过“启用或关闭 Windows 功能”或在提升权限的 PowerShell 会话中运行以下命令启用 Windows Hypervisor Platform (WHPX) 功能:
dism /Online /Enable-Feature /All /FeatureName:HypervisorPlatform
启用 WHPX 功能后,您可能需要重新启动计算机。
启用完成后,您可以像往常一样使用 Meta/serenity.sh run
命令启动虚拟机,并享受硬件加速带来的性能提升。
Arch Linux / Manjaro
运行以下命令安装所需依赖项:
sudo pacman -S --needed base-devel cmake curl mpfr libmpc gmp e2fsprogs ninja qemu-desktop qemu-system-aarch64 ccache rsync unzip
可选:安装 fuse2fs
用于无需 root 构建镜像。
SerenityOS
需要安装以下端口:bash cmake curl e2fsprogs gawk genext2fs git ninja patch python3 qemu rsync
。
如果使用 LLVM 构建,安装 llvm
端口;使用 GCC 构建,安装 gcc gmp mpc
端口。
由于 Shell 中 POSIX shell 支持尚未完成,需要创建从 /bin/sh
到 /usr/local/bin/bash
的符号链接。