Feral是一个单片的内核,就像一个小型业余爱好项目,可以从头开始构建一个完整的操作系统,即使这很慢。
野性旨在在具有相当兼容的BIOS的最新PC系统上运行。目前,尽管港口正在进行中,但野性不支持UEFI。
目前,野性在传统的PC兼容微型计算机中存在两个8259a图片的存在。在Modern Micros上,您的南桥(例如X399或X470)可能具有兼容性。将来,Feral打算继续利用较新的处理器功能,例如APIC,最终是Xapic和X2APIC。此外,野性将支持对称的多处理。
目前,正在测试的硬件包括带4“ X4”主板的PC和一个带有4GB RAM的N3700 CPU(“ Braswell”),带有2500U的17z笔记本电脑(前面提到的Zen 1),将来,X5-Z8350,带有2GB的RAM(“ Cherry Trail”)。
将来,Feral旨在在Aarch64(BCM2711),Power(SFORZA)和RV64GC(U540)硬件上运行,其中端口以该顺序写入某个位置。
在建筑上,Feral是一个简单的整体内核,在建筑上与Mach和Plan 9具有许多相似之处,尤其是后者。野性更喜欢将大多数功能放入驱动程序中,而不是直接烘烤到内核本身,以提高灵活性,并将资源视为网络位置和插座,以更好地反映现代过程和存储的工作方式。
例如,要打开文件,一个人查询文件服务器,该文件是由内核拥有的过程,该过程打开了接受传入流量的套接字。然后,它可以根据插座打开的方式来读取或写入或写入。
主要思想是将微动物的模块化和灵活性嫁接到传统的整体内核体系结构中,牺牲执行诸如重新启动文件系统驱动程序之类的能力,同时保留诸如清洁架构,驱动器分层和多个驱动程序提供者之类的好处。
野性是为我创造的,以了解有关操作系统设计的更多信息,同时又偏离了传统的“ Make Make *Nix克隆”的方式:这并没有错,但是我想探索将硬件和系统功能公开为程序的不同方法,除了仅在某个地方制作文件外。此外,我想探索新的操作系统与传统系统的不同,同时易于将现有软件移植到传统系统。
尽管此图像已过时,但由于其中一些子系统应该被吸收到内核中,因此在大多数情况下,这对于目的是准确的: 
野性现在使用cmake构建。对于X86_64构建的常见情况,包括一个实用程序脚本和vm_test.sh中的QEMU,以及在vm_test_gdb.sh中启用的GDB存根。
对于手动构建,您必须将clang用作C编译器。对于没有EFI支持的X86-64-PC目标,您可以使用-DCMAKE_TOOLCHAIN_FILE=cmake/x86_64-pc.cmake parameter。这将构建适合“ Feralker”的内核,并且需要一些其他步骤来创建可引导的ISO文件。有关详细信息,请参见vm_test.sh文件。
野性应在实施X86-64指令集(即至少K8 CPU)和至少1GB的系统内存的任何PC上舒适地运行。将来将降低此内存需求,但是目前需要在设置内核时使事情变得容易一些。
Feral希望PC存在与VGA兼容的显示适配器。因此,您需要某种形式的视频适配器,才能在VGA模式下运行。大多数消费级CPU和GPU至少在其GPU中实现了这一点。
目前,野性仅在Zen 1 1950x顶部的虚拟机上进行测试,以及少数较小的Zen 1机器。这可能是野性在其他硬件上运行良好,但没有进行测试。
应该以避免不必要的字符(即“ Inc” vs'Include'的方式命名文件夹。同样,对于给定的模块,文件夹名称应反映前缀,以便内存管理在“ MM”中,并且对象管理在“ OB”中,等等。
在模块之间应导出功能,通常应具有(子系统)(函数 - 孔)(可选 - argument-type)的命名约定,例如“ KestartProcessor”。当该函数是特定于架构的时,则应将其与其属于的体系结构进行前缀,例如“ AARCH64STARTPAGGING()”或“ X86SETUPIDT()”。有关更多详细信息,请参见格式
此外,功能应使用宏中的宏来清楚地标识一个函数对参数的作用。这些宏一无所获,只能在那里提供帮助。
轻量级核心内核。驱动程序中的大部分功能。与Libos交流的过程(Syscalls转到一张内核表,该表告诉Libos司机这是被调用的。)
驾驶员处理系统调用,以允许运行“外国”程序未修改,例如GCC的GNU Mach版本,或者在火星上设置的每个人都喜欢的DOS游戏。
稳定,内核ABI。第三方司机应在较小的修订中工作。使用PNEXT指针进行任何严重更改。
包括稳定的版本控制文件系统,因此意外的deltree不会永远删除所有内容。假设用户不进行备份。
(最终)为GPU的“ Vega”和“ Navi”家族创建完全符合Vulkan的驱动程序。
支持X86-64虚拟化扩展(“ Pacifica”)。
诸如Chroot监狱或容器之类的东西,以使野性对服务器操作有用。
有一天可以使用一些有趣的事情?