Ethereal

sasdallasBSD-3-Clause活跃维护

从零手写的操作系统内核,用 C 和汇编实现,能跑起多种移植软件,适合折腾 OS 开发和学习内核原理。

A from-scratch operating system capable of running a variety of ports

ethereal-1.1.0发布于 2025-08-06 01:59 UTC239star +4 / 7 天17fork同步于 2026-11-11 00:01 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/sasdallas/Ethereal-Toolchain
make all
硬件要求按 README 说明

README 未说明具体 CPU/内存/显存要求;支持 xHCI USB 控制器、AHCI/NVMe 磁盘(IDE 驱动质量较差)、E1000 与 RTL8169 网卡,需在 QEMU 等虚拟机或兼容硬件上启动。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

从零自研内核的爱好型操作系统,非 Linux,自带窗口管理器与用户态

从零手写的操作系统内核,用 C 和汇编实现,能跑起多种移植软件,适合折腾 OS 开发和学习内核原理。

核心能力

  • 自研 Hexahedron 内核,支持 SMP 多核
  • Celestial 窗口管理器与配套用户态程序
  • 页缓存加速磁盘同步,支持 AHCI/NVMe 磁盘
  • xHCI USB 与 E1000/RTL8169 网卡驱动
  • 基于 ACPICA 的完整 ACPI 支持,可关机休眠

容易踩的坑

默认启用 ACPICA,需先下载 acpica-unix-20240927.tar.gz 解压到 external/acpica/acpica-src,或在 conf/build/.mk 中设 USE_ACPICA=0;需先安装 Ethereal 专用工具链及 grub-common、xorriso、qemu-system、meson、ninja;缺少文件系统驱动,建议用 LiveCD 启动,且启动失败属常见情况需调 GRUB 内核参数。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本ethereal-1.1.0
  1. ethereal-1.1.0Ethereal v1.1.0 Lilypad最新正式版2025-08-06 · 2025-08-06 01:59 UTC

    Ethereal v1.1.0 Lilypad

    New Features

    • EXT2 reading driver
    • Desktop taskbar with support to load from a directory
    • Font viewer application
    • Widget library + message boxes
    • Power control
    • Rounded rectangles
    • MBR partitioning support
    • Wallpaper switching
    • Faster window manager rendering (runs at 60 FPS by default now)

    Running

    Ethereal requires around 256MB of RAM. Example commands:

    Using the command qemu-system-x86_64 -cdrom Ethereal.iso -smp 4 -m 1G will launch non-KVM unoptimized Ethereal

    Using the command qemu-system-x86_64 -cdrom Ethereal.iso -smp 4 -enable-kvm -m 1G and selecting Hexahedron (Enable I/O APIC) will launch KVM optimized Ethereal

    Full Changelog: https://github.com/sasdallas/Ethereal/compare/ethereal-1.0.0...ethereal-v1.1.0

  2. ethereal-1.0.0Ethereal v1.0.0 Moonlight2025-07-27 · 2025-07-27 21:56 UTC
    查看更新说明

    Ethereal v1.0.0 (codename Moonlight)

    The very first release of the Ethereal Operating System.

    Features

    • SMP-enabled kernel
    • Window manager with accelerated draw math
    • Graphics library with SSE-accelerated sprite drawing/blending
    • Full libc and suite of applications
    • Support for TCP/UDP (IRC client built-in)

    Running

    Using the command qemu-system-x86_64 -cdrom Ethereal.iso -smp 4 will launch non-KVM unoptimized Ethereal

    Using the command qemu-system-x86_64 -cdrom Ethereal.iso -smp 4 -enable-kvm and selecting Hexahedron (Enable I/O APIC) will launch KVM optimized Ethereal

    Ports

    Ports will be coming soon. Watch the Ethereal ports repository for patch releases. Bochs, SDL, curl, DOOM and more are now supported.

    Special Thanks

    Thanks to @tayoky for his patches to stdio/wchar functions.
    Thanks to @Bananymous for his help on porting/general kernel advice.

  3. v1.3-apricity-actuallyreduceOS v1.3 Apricity2024-09-10 · 2024-09-10 00:24 UTC
    查看更新说明

    reduceOS v1.3 Apricity

    Build 9644 (compilation date 09/09/2024 7:14 PM CST) - RELEASE CONFIGURATION

    The word "apricity" can be translated as "the warmth of the sun in winter". It's a fitting name for this OS project, and I'm glad to have it. Especially because this is the release where reduceOS, becomes an OS.

    What's new?

    Full ELF loading, EXT2/FAT support, VFS, C library support, drivers, better initial ramdisk support, better kernel design, and a fi;; process scheduler

    Now that reduceOS can load and run programs, it can officially be classified as an OS, but we've got much more to go. Rest assured though, full steam ahead!

    What's for the future?

    Who can tell? There's so much potential here!

    How do I run reduceOS?

    It's best to used the attached ISO file in an emulator (reduceOS works on QEMU and Bochs), but we also have some basic real hardware capabilities:
    If you want to run reduceOS on real hardware, try adding the --force_vga option after the multiboot directive in the GRUB config file. It will force VGA text mode.
    Polyaniline does not appear to be working at the moment, so I have not attached it. I have also decided not to attach a kernel ELF file or the initial ramdisk.

    Thank you all for your support! I hope this project continues to flourish - I'll do my best to make sure it ends up that way! :heart:

    Full Changelog: https://github.com/sasdallas/reduceOS/compare/v1.3-apricity...v1.3-apricity-actually

  4. v1.3-apricity-prerelease2reduceOS v1.3-prerelease2pre-release2024-08-24 · 2024-08-24 22:42 UTC
    查看更新说明

    reduceOS v1.3-prerelease2

    Build 7230 (compilation date 08/24/2024, 5:30 PM Central) - RELEASE configuration

    ALPHA RELEASE - NOT FOR PRODUCTION

    This is the second prerelease of reduceOS v1.3 Apricity.
    It includes a process scheduling/management system, ELF loading, symbol tables, multi-threading, a new and improved debugging system, and much more.

    As I said in prerelease #1, there is a lot of stuff in v1.3, and this will be the last prerelease of it.

    As well as that, this build includes the v1.0 prototype of the non-working Polyaniline bootloader (it technically works but can only load 64-bit kernels and their ramdisks), which is codenamed Redline.

    Thank you for your support! Have fun :)

    WARNING: This is an alpha build of reduceOS. DISK DAMAGE CAN OCCUR. BY DOWNLOADING THIS SOFTWARE, THE USER ACCEPTS ALL RESPONSIBILITY OF WHAT MAY HAPPEN TO THEIR DISKS/COMPUTERS.

    Full Changelog: https://github.com/sasdallas/reduceOS/compare/april-fools...v1.3-apricity-prerelease2

  5. v1.3-apricity-prerelease1reduceOS v1.3-prerelease1pre-release2024-08-03 · 2024-08-03 20:28 UTC
    查看更新说明

    reduceOS v1.3-prerelease1

    Build 3110 (compilation date 08/03/2024, 3:23 PM Central) - RELEASE configuration

    ALPHA RELEASE - NOT FOR PRODUCTION

    This is the first pre-release of reduceOS v1.3 Apricity.
    It includes filesystem (EXT2 and FAT12/16/32) support, a VFS implementation, new printf(), and a ton of other cool things.

    There is much more to come, but v1.3 is going to be pretty big, so I thought using a prerelease would be good.

    Thank you for your support! Have fun :)

    NOTE: Initial ramdisk support does not work right now. However, it is still REQUIRED for boot.

    Full Changelog: https://github.com/sasdallas/reduceOS/compare/v1.2-vaporwave...v1.3-apricity

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Ethereal

    A custom all-in-one hobby operating system.

    What is Ethereal?

    Ethereal is a project with the goal of creating a fully functional OS with all components a modern OS would have.

    It is not Linux-based, nor does it share any code with Linux at all. Rather, it uses a custom OS kernel.

    Screenshots

    Ethereal Latest
    Ethereal


    Modern, 1080p desktop environment


    Ethereal older main desktop environment with DOOM

    Ethereal but REALLY on IRC
    Ethereal on Libera chat (#ethereal)

    Features

    • Full SMP-enabled kernel
    • Advanced page cache that makes disk syncing fast
    • Custom window manager (Celestial) and userspace
    • USB support for xHCI controllers
    • AHCI/NVMe disk support (technically IDE too, albeit a very poorly written driver)
    • Networking stack with E1000 and RTL8169 network card driver
    • Support for the mlibc C library
    • Full ACPI support with the ACPICA library (with backup MinACPI library that doesn't have AML parsing)

    Project structure

    • base: Contains the base filesystem. Files in base/initrd go in the initial ramdisk (for non-LiveCD boots) and files in base/sysroot go in sysroot.
    • buildscripts: Contains buildscripts for the build system
    • conf: Contains misc. configuration files, such as architecture files, GRUB configs, extra boot files, etc.
    • drivers: Drivers for Hexahedron, copied based on their configuration.
    • external: Contains external projects, such as ACPICA. See External Components.
    • hexahedron: The main kernel project
    • libkstructures: Contains misc. structures, like lists/hashmaps/parsers/whatever
    • libc: Contains mlibc
    • userspace: Contains the userspace libraries and programs in Ethereal

    AI policy

    Ethereal does not permit coding assisted by LLMs to be present in the online repo.
    If such code does make it, it should be removed immediately.

    My personal stance on AI is that its a tool with specific usages.

    Artificial intelligence is good at:

    • Reading through large codebases (assuming a human double-checks) such as Linux or NetBSD.
    • Generating small, single-use test programs that never make it to upstream.
    • Teaching certain small foreign concepts or asking small questions (when this information is not readily accessible)

    Artificial intelligence is horrible at:

    • Generating any type of kernel code
    • Explaining why it is doing something/what something does
    • Not overcomplicating the simplest of topics

    Due to the above no AI code should ever be present in Ethereal.

    As I have noticed (from myself and others) people tend to "overdose" on AI and become dependent on it.
    This only hurts you in the long run, causing your ability to program to falter.

    For your own sake, please avoid using AI in the wrong ways.

    PRs containing AI-generated or suspected AI-generated code can be closed at any time.

    THERE IS NO VIBECODING IN ETHEREAL.

    Code notice

    Ethereal's codebase is the result of over 2 years of effort.

    In some areas, the code is extremely concise, well-written, and optimized.
    In other areas, it isn't - I learned as I made this project.

    Take caution if using Ethereal as a source to learn how to make your own OS.

    Building

    ACPICA notice (READ THIS BEFORE BUILDING)

    If you use ACPICA (it is on by default), you must download the tarfile from here and extract it to external/acpica/acpica-src

    Alternatively, you can edit conf/build/<arch>.mk and set USE_ACPICA to 0.

    As of now the benefits of ACPICA is the ability to shutdown the system and hibernate, with support for the PCI IRQ routing table coming later (+ batteries).

    Building

    To build Ethereal, you will need an Ethereal toolchain for your target architecture.
    The Ethereal toolchain can be found at the repository

    Other packages required: grub-common, xorriso, qemu-system, meson, ninja

    Edit buildscripts/build-arch.sh to change the target build architecture.
    Running make all will build an ISO in build-output/ethereal.iso

    Currently, Ethereal's lack of filesystem drivers means that LiveCD boots are usually the best option.
    The initial ramdisk in a LiveCD is the sysroot, and if the OS detects the boot it will copy the initial ramdisk into RAM.

    Kernel arguments

    A lot of times, Ethereal fails to load. This is expected. Please start a GitHub issue.

    You can solve some problems by using 'e' to open a GRUB configuration and adding some kernel arguments to the end of the multiboot entry.
    Here is a small list:

    • --debug=: Options are console and none. If console, will redirect kernel debug output to the screen. Useful for debugging
    • --noload=: Comma-separated list of driver (.sys) files to not load. Problematic drivers: usb_xhci.sys, ahci.sys, ps2.sys (if you don't support PS/2),
    • --no-acpica: Disable the ACPICA library and fallback to MinACPI implementation. Only useful in extreme cases.
    • --no-acpi: Disable all ACPI implementations. Disables SMP as well.
    • --disable-smp: Enable ACPI, but disable SMP
    • --no-psf-font: Don't load the PSF font from initrd

    External components

    Certain external components are available in external, libc, and other parts of the kernel. Here is a list of them and their versions:

    Certain external components are by the same developer, however may follow a different license:

    Credits

    A lot of Ethereal's design was inspired by ToaruOS by klange - thank you!

    The "grab" cursor from ToaruOS is used in Celestial (art asset is located at base/sysroot/usr/share/cursors/grab.bmp).

    Ethereal's virtual memory manager design and other parts was inspired by Astral by @mathewnd

    Some code from Astral was also used, credited where appropriate. A license file is included in external/.

    The Ethereal logo, Mercury theme, as well as all art assets not specified were designed by the artist ArtsySquid

    Licensing

    Hexahedron and all other non-external components of Ethereal fall under the terms of the BSD 3-clause license (available in LICENSE).
    All files, unless specified in the copyright header, fall under this license. Any file without a copyright header is NOT protected by BSD 3-clause.

    LICENSING ISSUES: If a file is found without proper commenting, immediately contact me (preferably through a public channel such as GitHub issues for transparency) directly to resolve it.

    Ethereal's goal has NEVER been to take code, however if it does happen please contact me!