鸭子
具有图形窗口管理器的Hobby Unix状OS和X86 PC的应用程序,并带有制作中的AARCH64端口。

演示|功能|应用|端口|如何构建
等候接听
目前,鸭子的开发被搁置。不过,请随意分叉,然后弄乱它!
尝试鸭子
本地虚拟化
最近的版本可以从“发行”页面下载。另外,可以从Duckos Github工作流的文物中下载最新鸭子的磁盘图像。然后,可以使用QEMU或您选择的软件虚拟化或模拟这一点。
在浏览器中模仿
另外,由于通过复制的V86项目,您可以在浏览器中尝试使用Duckos的版本。在本地运行它的速度要慢得多,并且没有像Doom这样的移植软件的副本。您可以在这里尝试!
特征
- 窗口管理器 /复合符以及基于视图的UI工具包用于创建应用程序
- IP网络堆栈上带有UNIX插座和E1000以太网驱动程序的IP网络堆栈上的基本TCP/UDP
- 对AC97声卡的声音支持
- 诸如Doom,公用事业等许多程序端口以及SDL等库
- 二进制的动态链接和加载
- 板上调试功能,例如Ptrace和采样探查器
- 软件3D渲染库
- 在一些真实的硬件上运行
- WIP AARCH64端口,在Raspberry Pi 3B上启用了第1阶段的端口:)
未来计划
- 完成AARCH64端口
- 改进内核IPC系统提高效率
- 更好的字体渲染(向量字体,不同尺寸等)
- 自主
- 更稳定和速度
- 更好的文件系统缓存实现,可以在需要时释放内存并定期刷新
- 更多内核和用户空间单元测试
- 更好的内核,库和应用程序的文档
- 更多的内核和用户空间调试工具,因此每当发生segfault发生时,我不必在QEMU调试器中度过几个小时,这是由于一个简单的错误,可以避免我的系统中有一些额外的咖啡
- 多处理器(多核)支持
- 慢慢过渡从内核到用户空间的各种模块(la microkernel)
- 将生锈加入混合物(?)
服务
这些代码可以在服务中找到。
- init(/bin/init):鸭子的初始化系统。
- 池塘(/bin/pond):Duckos的窗户经理/合成器。
- Quack(/bin/Quack):Duckos的声音服务器。
- DHCP客户端(/bin/dhcpclient):用于分配IP地址的DHCP客户端。
应用
这些代码可以在程序/应用程序中找到。
- 计算器(/apps/calculator.app):基本计算器。
- 终端(/apps/terminal.app):基于Libui的终端应用程序。
- 系统监视器(/apps/monitor.app):一个基本的系统监视器显示内存和CPU利用率。
- 4连续(/apps/4inarow.app):一个基本的四英寸行游戏。与两个玩家或对付计算机。
- SANDBAR(/bin/sandbar):一个基本的“任务栏”,在屏幕底部显示启动应用程序的一行按钮。
- 文件(/apps/files.app):基本文件资源管理器应用程序。
- 查看器(apps/viewer.app):可以查看图像并播放声音文件的基本媒体查看器
- lib3d演示(apps/3demo.app):lib3d库的演示。默认情况下显示立方体;可用于查看OBJ文件。
- 编辑器(/apps/editor.app):一个用于编辑文本文件的基本应用。
- 关于(/apps/about.app):显示一些系统信息。
- DuckSweeper(/Apps/DuckSweeper.App):一个基于网格的鸭子游戏;)
CLI程序
这些代码可以在程序/Coreutils中找到。与通常的嫌疑人一起,Duckos还有:
- DSH(/bin/dsh):一个基本的外壳,支持管道,重定向和命令召回。
- 打开(/bin/open):使用适当程序从命令行打开文件和应用程序的实用程序。
- 播放(/bin/play):播放音频文件。
- 日期(/bin/date):显示日期和时间。
- 配置文件(/bin/profile):配置文件运行应用程序并输出flamegraph/speedscope兼容文件。
- 您可以在主机上运行
scripts/debugd.py (安装了SpeedScope),然后将-r参数传递给配置文件,以通过网络直接将输出发送到主机,并在SpeedScope中将其打开。
当您在没有参数的情况下运行这些论点的程序将为您提供正确的用法。
库
- LIBC:标准C库。
- libm:标准C库的数学部分。
- libpond:用于与Pond Window Manager / Compositor接口的库。
- Libgraphics:一个提供了一些用于处理图形格式加载等图形的实用程序的库。
- Libui:应用程序的UI框架。
- libtui:终端应用程序的框架。
- LIBTERM:处理终端的框架。
- Libduck:包含常用类和实用程序的库,例如参数和配置文件解析。
- Libriver:IPC库与D-Bus没有不同的IPC库,该库为远程功能调用和数据传递提供了一个框架。
- Libapp:提供方法来检索有关已安装和运行应用程序的信息的库。
- libsys:为检索系统信息(即procfs)提供更高级别的C ++抽象。
- LIBSOUND:为音频应用程序提供了一个框架,并与声音服务器Quack进行了框架。
- LIB3D:提供基本软件3D渲染功能。
- libmatrix:提供矩阵数学实用程序。
- libexec:提供精灵支持。
- libdebug:提供调试功能。
端口
可以通过运行端口来安装端口。SH以所需的端口作为参数。还将建立和安装所需的依赖项。
一些更令人兴奋的端口是:
- 厄运
- 您需要提供自己的厄运wadfile,然后将其放入/apps/doom.app/目录中。 (有关更多详细信息,请参见“构建说明”。)
- Binutils
- 海湾合作委员会
- SDL2
- 另外,sdl2_gfx,sdl2_image和sdl2_ttf
建筑物 /跑步
贡献
学分
- Blanham的liballoc 1.1镜子,用于内核堆分配实现(这是开放域,因此,如果您想使用它,我强烈建议您使用它)
- Serenityos为很多灵感
- gohufont的字体(根据WTFPL许可)
执照