返回

文章详情

一个受QNX启发的操作系统,具有可选择的内核

Hacker News2026年6月28日 22:21

QSOE 这是一个受QNX启发的操作系统,具有可选择的内核。新闻:QSOE 0.1 发布 —— 统一双内核系统的首次公开发布(2026年6月)。阅读公告 → QSOE 以两种变体发布,共享一个用户空间和一个构建系统。QSOE/N 在 Skimmer 上运行,这是一个为该项目从零开始编写的微内核(设计上为对称多处理);QSOE/L 以 seL4 作为内核。两种变体在编译后都提供可直接在例如 U-Boot 加载器中使用的内核和 initrd 文件。用户空间在两种变体中 100% 完全相同;每个内核生成的唯一部分是 taskman(任务管理器)和 libc.so(C库),在源代码级别大约有85%是共享的,仅在与内核相碰的薄层处分化。设计遵循 QNX Neutrino 传统:小内核,其他所有都在用户空间,同步消息传递 IPC,以及用于服务的资源管理器模型。QSOE 以 SiFive HiFive Unmatched(FU740)上的 64 位 RISC-V(RV64,Sv39)为目标,QEMU 用于日常开发。现在,两种 QSOE 变体都可以在真实硬件上启动。根据 Apache-2.0 发布。下载 QSOE 可以从源代码构建或从预构建的二进制文件安装。每个发布的现成镜像均在 github.com/qsoe-dev/dl 上发布(当前发布:0.1)。文件包括:skimmer.bin — Skimmer 微内核:QSOE/N 变体的内核。一个原始二进制镜像,由加载程序(或 QEMU)与下面的用户空间包一起加载。modpkg.cpio — 模块包:作为 CPIO 存档的共享 QSOE 用户空间(taskman、init、C库、shell、驱动程序和实用程序)。QSOE/N 在 skimmer.bin 旁边将其作为 initrd 启动。qsoe-l-qemu.elf — 作为单个自包含的 ELF 提供的 QSOE/L 变体(基于 seL4 内核)用于 QEMU 虚拟机。它将 elfloader、seL4 内核、taskman 和用户空间结合在一起——无需其他任何东西即可启动。qsoe-l-sifive.elf — 相同的 QSOE/L 镜像,为 SiFive HiFive Unmatched(FU740)板构建。mrbml-riscv64.efi — mr-bml,QSOE 自有的引导程序(RISC-V 的 EFI 应用程序)。它可以加载任一变体并驱动真实硬件上的启动菜单。nvme.img.gz — 一个准备运行的自引导 QEMU 磁盘映像(GPT)。它的 EFI 分区包含 mr-bml,而磁盘上的根目录包含两个内核——因此 QEMU 直接启动到 mr-bml 菜单,无需 -kernel。查看 QSOE 运行的最快方式;见下文的 QEMU 下运行。virtio.img.gz — 一个仅在 QEMU 下运行 QSOE/L 时使用的伴随根磁盘(因为 stock seL4 在 QEMU 的 NVMe 需求之前,所以它从 virtio 磁盘加载根目录)。对于 QSOE/N 或真实硬件不需要。在简短的说:要在 QEMU 中运行它,获取 nvme.img.gz(加上 QSOE/L 的 virtio.img.gz)并查看 QEMU 下运行。要将其放到真实硬件上,您需要 mrbml-riscv64.efi 加上内核——QSOE/N 使用 skimmer.bin + modpkg.cpio,QSOE/L 使用其中一个 qsoe-l-*.elf 镜像——并查看安装。QEMU 下运行 看到 QSOE 运行的最快方式——无硬件,无需 -kernel 操作。nvme.img 下载是一个自引导的 UEFI 磁盘:QEMU 的固件从中运行 mr-bml,并且 mr-bml 的菜单直接从磁盘启动任一变体。您需要 qemu-system-riscv64 —— QSOE/N 需要的版本为 11.0.1 或更新(其 NVMe 需要 AIA 中断控制器)。edk2 RISC-V UEFI 固件——在 Debian/Ubuntu 上,qemu-efi-riscv64 包。启动器 run-nvme.sh 来自 os 存储库——它为每个变体包装了正确的 QEMU 机器、固件和磁盘,以便您不必这样做。运行它 # 解压镜像(仅在需要 QSOE/L 时添加 virtio.img.gz) gunzip nvme.img.gz virtio.img.gz # 指定启动器并从菜单选择变体 NVME_IMG=./nvme.img VIRTIO_IMG=./virtio.img ./run-nvme.sh 传递 n 或 l 以跳过菜单(./run-nvme.sh n)。脚本会自动选择匹配的 QEMU 机器——在带有 NVMe 根目录的 AIA 机器上运行 QSOE/N,在带有 virtio 根磁盘的 PLIC 机器上运行 QSOE/L。mr-bml 菜单和系统控制台都会显示在您的终端上;选择一个变体并启动至登录:提示。使用密码 QSOE 作为 root 登录。安装 真实硬件,真实磁盘。QSOE 0.1 可以在 SiFive HiFive Unmatched(FU740)上启动;SpaceMiT K3 是一个未来的目标。这假设一块已运行 Linux 的板——你将把文件放在其现有的 EFI 和启动分区上,因此对板的固件要有一定的了解。启动模型很简单:mr-bml 住在 EFI 系统分区;它从 ext2/3/4 分区读取其菜单和内核;所选变体随后从 fs-qrv 分区挂载其自己的根目录。步骤 将 mrbml-riscv64.efi 复制到您的 ESP 作为 EFI/BOOT/BOOTRISCV64.EFI(UEFI 可移动介质路径),或使用 efibootmgr 注册为启动条目。在您的引导/根文件系统中,创建 /boot/qsoe/ 并将内核复制到那里:QSOE/N 的 skimmer.bin + modpkg.cpio,QSOE/L 的 qsoe-l-sifive.elf。创建 /boot/mr-bml/mr-bml.cfg,每个变体一条条目——例如:# /boot/mr-bml/mr

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡