返回

文章详情

Moxnox 1.0:类似 NT 的、兼容 POSIX 的操作系统,运行于 Btrfs 之上

Hacker News2026年10月27日 23:53

Moxnox v1.0 Moxnox 是一个类似 NT 的、兼容 POSIX 的爱好操作系统,运行于 Btrfs,并能够自我托管。这意味着:它的设计,如系统调用的选择,是借鉴于 Windows NT 的……然而同时,它应该能够运行为类 Unix 系统编写的软件,前提是它们已在上面重新编译,并带有完整的 GNU 基础系统。它足够成熟,你可以在 Moxnox 上构建 Moxnox,并且它运行于大家都喜欢的 Linux 文件系统。版本 1.0 大约有 130,000 行 C++,并运行于 amd64 和 aarch64。Btrfs 代码适用于基本目的,但尚未经过实战考验。请勿尝试挂载除了临时文件系统之外的任何东西。运行 要在 qemu 中测试 Moxnox,下载 moxnox-amd64-1.0.img.gz 和 moxnox-kernel-amd64-1.0.efi。运行 gunzip moxnox-amd64-1.0.img.gz 以解压映像。然后:qemu-system-x86_64 -M q35 -enable-kvm -cpu host -m 1024 \ -smp cores=4,threads=1 \ -kernel moxnox-kernel-amd64-1.0.efi \ -append "root=/dev/sda" \ -device ich9-ahci,id=ahci -drive id=disk,file=moxnox-amd64-1.0.img,if=none \ -device ide-hd,drive=disk,bus=ahci.0 \ -nic user,model=virtio-net-pci \ -device qemu-xhci \ -device usb-kbd,id=kbd \ -device usb-tablet,id=tablet \ -serial stdio 如果你尝试任何耗费资源的操作,如自我托管,你需要将内存从 1024 MB 增加。对于 ARM,下面的命令应该可以工作:qemu-system-aarch64 -M virt -cpu cortex-a76 -m 1024 \ -smp cores=4,threads=1 \ -kernel moxnox-kernel-aarch64-1.0.efi \ -append "root=/dev/sda" \ -device ich9-ahci,id=ahci -drive id=disk,file=moxnox-aarch64-1.0.img,if=none \ -device ide-hd,drive=disk,bus=ahci.0 \ -nic user,model=virtio-net-pci \ -drive if=pflash,unit=0,file=/usr/share/qemu/edk2-aarch64-code.fd,readonly=on \ -device qemu-xhci \ -device usb-kbd,id=kbd \ -device usb-tablet,id=tablet \ -serial stdio 安装 首先,使用 gparted 或类似工具创建一个新的分区。32 GB 应该足够。我下面称之为 /dev/nvme0n1p99 - 不要搞错。确保你有最新版本的 btrfs-progs,因为我们不支持旧版本使用的某些默认设置。准备根驱动器:# mkfs.btrfs /dev/nvme0n1p99 # mkdir /mnt/moxnox # mount /dev/nvme0n1p99 /mnt/moxnox # cd /mnt/moxnox # wget https://github.com/maharmstone/moxnox/releases/download/v1.0/moxnox-amd64-1.0.tar.gz # tar -xvzf moxnox-amd64-1.0.tar.gz # rm moxnox-amd64-1.0.tar.gz # cd # umount /mnt/moxnox 复制内核:# mount /boot/efi # cd /boot/efi # wget https://github.com/maharmstone/moxnox/releases/download/v1.0/moxnox-kernel-amd64-1.0.efi 要安装启动条目,执行类似以下操作:# efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Moxnox" -l '\moxnox-kernel-amd64-1.0.efi' -u 'root=/dev/nvme0n1p99' efibootmgr 喜欢在之后更改启动顺序,这可能不是你想要的。块设备的名称在 Linux 和 Moxnox 上应该或多或少是一样的。"EFI" 文件实际上是一个多语种文件,同时也符合 Linux 启动协议,因此它应该也可以在非 EFI 的 GRUB 上工作。我没有测试过,如何设置这个留给读者作为练习。硬件支持 对于 amd64,所有内容都编译为 x86-64-v3,几乎覆盖自 2015 年以来制造的任何东西。Moxnox 如果检测到 AVX512,会自动使用并启用它。对于 qemu,你需要指定 q35 机器类型;默认的 pc 机器非常古老,没有 PCI Express。microvm 也可以。对于 aarch64,我们使用 LSE 原子操作,要求 ARMv8.1。这意味着 Raspberry Pi 5,但不包括任何早期型号。Moxnox 仅支持 ACPI,不支持设备树,因此对于 Pi,你还需要 https://github.com/worproject/rpi5-uefi。不幸的是,qemu 中没有 raspi5 机器类型,但我在 virt 下取得过成功,sbsa-ref 也可行。设备支持:块设备:NVMe、SATA、SDHCI(即 SD 卡)、virtio-block、USB 大容量存储 网络卡:virtio-net、RTL8168、RTL8125 输入设备:USB HID、PS/2 键盘、PS/2 鼠标、virtio-input 图形:virtio-gpu、GOP 帧缓冲、VBE、VGA 文本控制台(在非 UEFI 启动中传递 text=80x25)串口:virtio-console,x86 串口,PL011 ARM 串口 USB:XHCI 构建 最简单的构建方式是拉取 Docker 容器 maharmstone/moxnox-ci-amd64 或 maharmstone/moxnox-ci-aarch64,其中包含 x86_64-pc-moxnox 或 aarch64-pc-moxnox 的交叉编译器。然后在容器中:$ git clone https://github.com/maharmstone/moxnox $ cd moxnox CMake 将编译已检查出的任何子模块。对于最小系统:$ git submodule update --init --depth 1 ports/acpica/repo ports/freetype/repo ports/gnu-efi/repo ports/harfbuzz/repo ports/libpng/repo ports/mingw-w64/repo ports/zlib/repo ports/musl/repo ports/tre/repo 对于所有端口,这可能需要一些时间:$ git submodule update --init --recursive 然后:$ mkdir build $ cd build $ cmake -DCMAKE_TOOLCHAIN_FILE=amd64.cmake -GNinja ..

阅读全文 →

赞助内容

NordVPN Next-gen Antivirus

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

☕请我喝杯咖啡