ToaruOS是一个适用于x86-64 PC的"完整"操作系统,并对ARMv8提供实验性支持。
虽然许多独立、业余和研究性操作系统都旨在尝试新设计,但ToaruOS的目的是作为一种教育资源,提供主要桌面操作系统功能的代表性缩影。
该操作系统包括内核、引导加载程序、动态共享对象链接器、C标准库、自己的合成窗口系统、动态字节码编译编程语言、高级代码编辑器以及数十个其他实用程序和示例应用程序。
没有外部运行时依赖,所有必需的源代码(主要是C语言,共计约10万行)都包含在此存储库中,除了单独存放的Kuroko。
ToaruOS的用户界面和一些应用程序演示。
我已经开发ToaruOS超过十年了,这些年来我的目标也发生了变化。
2010年12月我首次启动这个项目时,我的目标是"边学边做"——通过从头开始制作一个类Unix系统来学习它。 几年前我曾是Compiz的贡献者,Compiz是X11上最早广泛使用的合成窗口管理器之一,ToaruOS自然而然地很早就获得了基于类似概念构建的GUI。
在2015年发布1.0版本时,ToaruOS还不是后来成为的"完全从头开始"的操作系统。 Newlib提供了libc,GUI则建立在Cairo、libpng和Freetype之上。 2018年年中,我开始了一个新项目来替换这些第三方组件,最终完成并合并成为ToaruOS 1.6。
在整个项目过程中,ToaruOS也吸引了不少初学者OS开发者尝试将其作为参考。 然而,ToaruOS的内核一直是我个人的尴尬之源,2021年4月,在长时间搁置后,我开始着手开发一个新的内核。 结果就是Misaka:一个新的64位、支持SMP的内核。Misaka于5月合并,开启了通往ToaruOS 2.0的1.99系列beta版本。
dlopen功能。以下项目目前正在进行中:
希望从源代码构建ToaruOS的普通用户建议在Github上fork仓库并使用Github CI流水线。
对于那些希望在配置适当的Linux主机上使用Docker进行本地构建的人,可以使用构建容器。ToaruOS仓库应该作为绑定挂载点挂载到/root/misaka,然后在这个容器内运行util/build-in-docker.sh来完成编译过程:
git clone https://github.com/klange/toaruos
cd toaruos
git submodule update --init kuroko
docker pull toaruos/build-tools:1.99.x
docker run -v `pwd`:/root/misaka -w /root/misaka -e LANG=C.UTF-8 -t toaruos/build-tools:1.99.x util/build-in-docker.sh
这样构建后,你可以运行各种实用目标(make run等)。尝试make shell以使用QEMU的串口运行ToaruOS shell。
Makefile使用Kuroko工具auto-dep.krk为用户空间应用程序和库生成额外的Makefile,根据#include指令自动解析依赖关系。
以不确定的顺序构建C库、内核、用户空间库和应用程序,将它们组合成一个压缩归档文件用作ramdisk,然后打包成ISO9660文件系统镜像。
base/usr/include中的C头文件,以及合成器和窗口装饰器的图形资源。根文件系统设置如下:
bin:第一方应用程序。cdrom:CD的挂载点(如果可用)。dev:由内核生成的虚拟设备目录。
net:网络接口设备。pex:数据包交换中心,列出可访问的IPC服务。pts:PTY从设备,TTY的端点。etc:配置文件、启动脚本。home:用户目录。lib:第一方库
kuroko:Kuroko模块。mod:可加载内核模块。proc:展示内核状态的虚拟文件。
1等:包含各个进程状态信息的虚拟文件。src:源文件,见上面的"项目布局"部分。tmp:通常挂载为读写tmpfs。usr:用户空间资源
bin:第三方应用程序,通常在安装包之前为空。include:头文件,可能包括第三方包的头文件。lib:第三方库。默认应该有libgcc_s.so。share:各种资源。
bim:文本编辑器的语法高亮和主题。cursor:鼠标光标精灵图。fonts:TrueType字体文件。Live CD附带Deja Vu Sans。games:游戏相关资源文件的集中地,如Doom wads。help:帮助浏览器应用程序的文档文件。icons:PNG图标,按大小分为不同目录。ttk:窗口装饰器和小部件库的精灵表资源。wallpapers:JPEG壁纸。var:运行时文件,包括包管理器清单缓存、PID文件、一些锁文件等。ToaruOS在这两个虚拟机中能提供最佳的终端用户体验,因为ToaruOS支持它们的自动显示大小调整和绝对鼠标定位功能。
为"其他"64位客户机设置新的虚拟机,至少提供1GiB RAM,附加CD镜像,移除或忽略任何硬盘,并选择Intel千兆网卡。还建议使用两个或更多CPU。
ToaruOS在VirtualBox中运行。
ToaruOS在VMware Workstation Player中运行。
默认情况下,引导加载程序会向VirtualBox设备驱动程序传递一个标志以禁用"无缝"支持,因为该实现会带来性能开销。要启用无缝模式,请在引导前使用引导加载程序菜单勾选"VirtualBox无缝"选项。菜 单中还有选项可以禁用自动客户机显示大小调整,以防你在使用此功能时遇到问题。
ToaruOS的大部分开发都在QEMU中进行,因为它提供了最灵活的硬件选择和最佳的调试体验。在Ubuntu 20.04主机上推荐使用以下QEMU命令行:
qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2
在没有KVM的主机平台上,将-enable-kvm替换为-accel hvm或-accel haxm,或者删除它以尝试在QEMU的TCG软件模拟下运行。
请注意,QEMU命令行选项并不稳定,这些标志在较新版本中可能会产生警告。
选项-M q35将用较新的模拟替换PIIX芯片组模拟,这会将IDE控制器切换为SATA控制器。这可能会导致更快的启动时间,但代价是ToaruOS在运行时无法读取自己的CD,直到我完成AHCI驱动程序。
ToaruOS已在真实硬件上成功测试。如果原生BIOS或EFI加载程序无法正常工作,请尝试使用Grub引导。ToaruOS符合"Multiboot"和"Multiboot 2"规范,因此可以使用multiboot或multiboot2命令加载,如下所示:
multiboot2 /path/to/misaka-kernel root=/dev/ram0 migrate vid=auto start=live-session
module2 /path/to/ramdisk.igz
set gfxpayload=keep
ToaruOS 在 ThinkPad T410 上从 USB 存储器原生运行。
ToaruOS 的所有第一方部分均按照伊利诺伊大学/NCSA 许可证的条款提供,这是一种类 BSD 的宽松许可证。 除非另有说明,这是本存储库中所有文件的原始和唯一许可证 - 仅仅因为某个文件没有版权声明并不意味着它不受此许可证约束。 ToaruOS 旨在作为一个教育参考,我鼓励使用我的代码,但请 务必遵守许可证的要求。 您可以根据 NCSA 许可证重新分发代码,也可以修改代码并以其他条款(如 GPL 或专有许可证)进行再许可,但您必须始终包含许可证中指定的版权声明,并向最终用户提供完整的许可证文本(它只有几段)。
虽然 ToaruOS 的大部分内容都是我自己完全编写的,但请务必在相关地方包括其他作者,例如 Mike 的音频子系统 或 Dale 的字符串函数。
ToaruOS 的某些组件,如 Kuroko 或 bim,有不同但兼容的条款。
ToaruOS 定期镜像到多个 Git 托管站点。
Libera (irc.libera.chat) 上的 #toaruos 频道
通过安装存储库中的 build-essential 元包(它将引入 gcc 和 binutils),可以构建单独的应用程序和库。
源代码在 live CD 上的 /src 目录中,布局类似于本存储库,auto-dep.krk 实用脚本也可用。
对于构建 ramdisk、最终内核或 CD 镜像,某些组件目前不可用。
特别是,ramdisk 的构建脚本仍然用 Python 编写,依赖于其 tarfile 模 块和 zlib 支持。
以前,使用合适的编译器工具链,ToaruOS 1.x 能够构建自己的内核、用户空间、库和引导加载程序,并通过一个 Python 脚本将这些转换为可工作的 ISO CD 镜像,该脚本执行类似于 Makefile 的功能。
由于缺乏适当的 POSIX shell 和 Make 实现,ToaruOS 目前无法构建其大部分移植软件。这些是项目的最终目标。
不,完全不是。ToaruOS 中没有任何来自 Linux 的代码,也没有使用 Linux 源代码作为参考材料。
ToaruOS 是一个完全独立的项目,本存储库中的所有代码 - 包括操作系统的整个代码库,包括其内核、引导加载程序、库和应用程序 - 都是原创的,由我自己和少数贡献者在十年的时间里编写的。 完整的源代码历史,可以通过这个 git 存储库追溯到 ToaruOS 还只是一个裸机"hello world"的时候。
ToaruOS 在涵盖操作系统的全部功能范围方面是完整的:它不仅仅是"一个内核"或"一个用户空间"。
ToaruOS 在"完成"的意义上并不完整。
虽然我的目标是支持 POSIX 接口,以便能够移植软件,但严格实施标准并不是操作系统的主要目标,完全符合可能甚至是不可取的。
ToaruOS 是一个个人项目,而不是一个社区项目。以代码形式的贡献应该事先讨论。然而,存储库之外的移植和其他工作是帮助的好方法。
您也可以通过为 Kuroko 做出贡献来提供帮助 - 这也是为什么它被保存为一个单独的存储库。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格 式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协 作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频