toaruos

2025-12-11 0 675

toaruos

toaruos是X86-64 PC的“完整”操作系统,也是对ARMV8的实验支持。

尽管许多独立,爱好和研究OS的目标是尝试新设计,但toaruos旨在作为一种教育资源,提供了在主要台式机操作系统中发现的代表性缩影。

操作系统包括一个内核,引导加载程序,动态共享对象链接器,C标准库,其自己的合成窗口系统,动态字节码编译的编程语言,高级代码编辑器以及其他数十个其他实用程序示例应用程序。

没有外部运行时依赖关系,所有必需的源代码,总计约为100K(主要)C的总和,该存储库中包括了(除了单独使用的Kuroko)。

展示了toaruos的UI和一些应用。

历史

我已经从事toaruos已经十多年了,多年来,我的目标发生了变化。

当我在2010年12月刚开始该项目时,我的目的是“学习” – 通过从头开始学习一个类似Unix的系统。我曾是Compiz的撰稿人,Compiz是X11的首批广泛使用的窗户经理之一,几年前,自然而然地, toaruos在早期就获得了基于类似概念的GUI。

对于2015年最初的1.0发行版, toaruos并不是它已成为的“完全从头开始”的操作系统。 Newlib提供了LIBC,GUI建于开罗,Libpng和Freetype上。在2018年中期,我开始了一个新项目,以取代这些第三方组件,该项目最终完成并合并为toaruos 1.6。

通过该项目, toaruos还吸引了许多试图将其用作参考的初学者OS开发人员。然而, toaruos的内核对我来说是个个人尴尬的根源,在2021年4月,经过长时间的休假,我开始从事新的工作。结果是Misaka:新的64位启用SMP的内核。 Misaka于5月合并,并开始了1.99系列的Beta版本,直到toaruos 2.0。

特征

  • 通过共享库和dlopen动态链接的用户空间
  • 具有软件加速度和2000年代后期设计灵感的合成图形UI
  • 在VirtualBox和VMware工作站中的绝对鼠标和自动显示大小的VM集成
  • Unix样终端接口,包括富特征终端模拟器和几个熟悉的实用程序。
  • 可选的第三方端口,包括GCC 10.3,Binutils,SDL1.2,地震等。

著名的组件

  • Misaka (内核),内核/,混合模块化内核和操作系统的核心。
  • Yutani (窗口复合符),Apps/Compositor.c,管理窗口缓冲区,布局和输入路由。
  • BIM (文本编辑器),Apps/bim.c是具有语法突出显示的VIM启发的编辑器。
  • 终端,应用程序/终端,XTERM风格的终端模拟器,具有24位颜色支持。
  • LD.SO (动态链接器/加载程序),Linker/Linker.c,加载动态连接的精灵二进制文件。
  • ESH (Shell),Apps/esh.c,支持管道,重定向,变量等。
  • Kuroko (口译),Kuroko/,一种动态字节码编译的编程语言。

当前的目标

目前正在进行以下项目:

  • 重写网络堆栈以获得更大的吞吐量,稳定性和服务器支持。
  • 通过更好的调度和更智能的用户空间同步功能来提高SMP性能
  • 使用新的设备驱动程序为AHCI,USB,VIRTIO设备等支持更多硬件
  • 带回toaruos “ Legacy”的港口,例如Mupdf和Mesa。
  • 改善POSIX的覆盖范围,尤其是在信号,同步原语以及提供更常见的公用事业方面。
  • 继续改善与Newlib相比仍然不完整的C库,这是带回旧港口的主要问题。
  • 替换第三方开发工具,将OS到达自我托管的状态,仅加入C编译器。
  • 在Toarucc中实现C编译器工具链

建筑物 /安装

与Docker建造

希望从源构建toaruos一般用户建议在GitHub上订购存储库,并使用GitHub CI管道。

对于那些希望在适当配置的Linux主机上与Docker一起构建的人,可以使用一个构建容器。可以将toaruos存储库用作/root/misakautil/build-in-docker.sh可以在此容器中运行以完成汇编过程:

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\”>

 git clone https://**gi*thub.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等)。尝试使用QEMU的串行端口使make shell运行toaruos壳。

构建内部过程

Makefile使用kuroko工具auto-dep.krk为用户空间应用程序和库生成其他makefiles,从而根据#include Diactivers自动解决依赖关系。

在不确定的顺序中,构建了C库,内核,用户空间库和应用程序,并将其组合成压缩档案中,以用作Ramdisk,然后包装到ISO9660文件系统映像中。

项目布局

  • 应用程序– 用户空间应用程序,都是第一方。
  • 基础-Ramdisk根文件系统登台目录。包括base/usr/include的C标头,以及合成器和窗口装饰器的图形资源。
  • 引导– 带交互式菜单的BIOS和EFI加载器。
  • 构建– 平台端口的辅助构建脚本。
  • 内核– Misaka内核。
  • KUROKO- KUROKO解释器的suppoule结帐。
  • lib-用户空间库。
  • LIBC -C标准库实施。
  • 链接器– 用户空间动态链接器/加载程序,实现共享库支持。
  • 模块– 内核的可加载驱动器模块。
  • UTIL-实用脚本,工具链(Binutils/GCC)的登台目录。
  • .make-生成的makefiles。

文件系统布局

根文件系统设置如下:

  • bin :第一方应用程序。
  • cdrom :CD的安装点(如果有)。
  • dev :虚拟设备目录,由内核生成。
    • net :网络接口设备。
    • pex :数据包交换集线器,列出可访问的IPC服务。
    • pts :PTY次要,TTY的端点。
  • etc :配置文件,启动脚本。
  • home :用户目录。
  • lib :第一方图书馆
    • kuroko :KUROKO模块。
  • mod :可加载的内核模块。
  • proc :呈现内核状态的虚拟文件。
    • 1等:虚拟文件具有各个流程的状态信息。
  • src :源文件,请参见上面的“项目布局”部分。
  • tmp :以读/写TMPF的正常方式安装。
  • usr :用户空间资源
    • bin :第三方应用程序,通常为空,直到安装包装为止。
    • include :标题文件,包括第三方软件包的潜在文件。
    • lib :第三方图书馆。默认情况下应具有libgcc_s.so
    • share :各种资源。
      • bim :文本编辑器的语法突出显示和主题。
      • cursor :鼠标光标精灵。
      • fonts :truetype字体文件。现场CD船与Deja Vu Sans。
      • games :与游戏相关的资源文件(例如Doom Wads)的垃圾场。
      • help :帮助浏览器应用程序的文档文件。
      • icons :PNG图标,按大小分为其他目录。
      • ttk :窗口装饰和小部件库的Spritesheet资源。
      • wallpapers :JPEG壁纸。
  • var :运行时文件,包括软件包管理器清单缓存,PID文件,一些锁定文件等。

运行toaruos

VirtualBox和VMware工作站

在这两种虚拟机中,将具有最佳的toaruos用户体验,因为toaruos支持其自动显示大小和绝对鼠标定位。

为“其他” 64位客人设置新的VM,为其提供至少1GIB RAM,附加CD图像,删除或忽略任何硬盘,然后选择一个Intel Gigabit NIC。也建议使用两个或更多CPU。

在VirtualBox中运行的toaruos 。

在VMware工作站播放器中运行的toaruos 。

默认情况下,Bootloader将将标志传递到VirtualBox设备驱动程序,以禁用“无缝”支持,因为实现具有性能开销。要启用无缝模式,请在启动之前使用Bootloader菜单在启动之前检查“ VirtualBox无缝”选项。如果您遇到此功能问题,则菜单还具有禁用自动访客显示尺寸的选项。

Qemu

toaruos的大多数开发都发生在Qemu,因为它为硬件和最佳调试体验提供了最灵活的性能。 Ubuntu 20.04主机中推荐的QEMU命令行是:

 qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2

在没有KVM的主机平台上替换为-ACCEL -enable-kvm或-ACCEL HAXM替换-accel hvm-accel haxm ,或将其删除以在QEMU的TCG软件仿真下尝试。

请注意,QEMU命令行选项不稳定,这些标志可能会在较新版本中产生警告。

选项-M q35将用较新的PIIX芯片组仿真替换PIIX芯片组的仿真,该模拟具有切换SATA One的IDE控制器的副作用。这可能会导致更快的启动时间,而牺牲了toaruos在运行时无法阅读自己的CD,直到我开始完成AHCI驱动程序。

其他

toaruos已在真实硬件上成功测试。如果本机BIOS或EFI加载器无法运行,请尝试使用GRUB启动。 toaruos符合“ Multiboot”和“ Multiboot 2”规格,因此可以加载multibootmultiboot2命令,如下所示:

 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托管站点。

  • gitlab: toaruos / toaruos
  • github:klange/ toaruos
  • Bitbucket:klange/ toaruos
  • toaruos .org:klange/ toaruos

IRC

# toaruos on Libera( irc.libera.chat

常见问题解答

toaruos是自我托管吗?

可以通过从存储库中安装build-essential Metapackage来构建各个应用程序和库,这将吸引gccbinutils 。源可在实时CD的/src目录中提供与该存储库相似的布局,并且auto-dep.krk实用程序脚本也可用。

对于构建Ramdisks,最终核或CD图像,目前不可用一些组件。特别是,Ramdisks的构建脚本仍然用Python编写,并取决于其tarfile模块和zlib支持。以前, toaruos 1.X具有功能强大的编译器工具链,能够构建自己的内核,用户空间,库和引导加载程序,并通过与MakeFile相似的函数的Python脚本将它们变成工作的ISO CD映像。

由于缺乏适当的POSIX壳并实施, toaruos目前无法建立大多数端口。这些是该项目的最终目标。

toaruos是Linux分布吗?

不,一点也不。 toaruos的任何地方都没有代码,也没有将Linux源用作参考材料。

toaruos是一个完全独立的项目,此存储库中的所有代码 – 这是操作系统的整个代码库,包括其内核,引导加载程序,库和应用程序 – 是原始的,由我自己编写,并且在十年的时间内写下了少数贡献者。完整的来源历史记录可以通过该GIT存储库来跟踪toaruos何时可以追踪的Baremetal“ Hello World”。

当您说“完整” …

toaruos是完整的,因为它涵盖了OS的整个功能范围:它不仅仅是“内核”或“只是一个用户空间”。

从“完成”的意义上说, toaruos并不完整。

toaruos符合POSIX的含量吗?

尽管我的目标是足够支持POSIX接口以使软件被移植,但严格的标准实现并不是OS的主要目标,甚至可能是不希望的。

接受捐款吗?

toaruos是一个个人项目,而不是社区项目。应提前讨论代码形式的贡献。但是,在存储库之外的港口和其他工作是帮助的好方法。

您还可以通过为Kuroko做出贡献来提供帮助 – 这是为什么它作为单独存储库保存的部分原因。

下载源码

通过命令行克隆项目:

git clone https://github.com/klange/toaruos.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 toaruos https://www.zuozi.net/34054.html

Convbased Studio
下一篇: Convbased Studio
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务