用生锈写的操作系统。
要构建操作系统,请确保使用nightly生锈。由于使用了一些不稳定的旗帜和属性,这些旗帜和属性仅在nightly构建中可用。
注意:已在
.cargo/config.toml中指定了目标。
cargo build注意:如果为定制目标编译,则可以使用
--target <target>标志覆盖目标。
cargo build --target x86_64-fractal_os.json要创建可引导图像,我们使用Bootloader依赖项。在旁边,我们将使用bootimage工具来编译内核和引导加载程序,然后将它们链接在一起。
确保安装了启动图。
cargo install bootimage注意:要运行bootImage并构建引导加载程序,您需要安装
llvm-tools-previewRustup组件。
rustup component add llvm-tools-preview安装了依赖项和工具后,您可以运行货物启动图以创建可引导磁盘映像。
cargo bootimage生成可启动图像文件后,您可以在诸如QEMU之类的模拟器上轻松运行分形。
qemu-system-x86_64 -drive format=raw,file=target/x86_64-fractal_os/debug/bootimage-fractal_os.bin您也可以在BootImage Runner的帮助下使用货物跑步者运行它。
cargo run以上将指向可启动图像的最后构建,并启动QEMU实例。您还可以提供特定的目标并通过QEMU选项。
cargo run --target < target > -- [QEMU options] --的一切都将传递给Qemu。
要运行Fractalos的自定义测试框架,您可以运行货物测试命令。
cargo test这将运行所有单元和集成测试。
注意:集成测试位于
/tests目录下,而单元测试在/src混凝土实现文件中是独立的。
内核正在使用compiler_builtins板条箱及其mem实现。然而,功能非常不优化。目前有一个针对此问题的公共公关,因此要么需要使用我们自己的memcmp和memcpy等功能的实现,要么等到此PR合并为止。
作为具有EEE背景(电力和电子工程)背景的软件工程师,我一直很喜欢找出什么使事情发痒,还有什么更好的方法可以找出操作系统如何与所有硬件一起使用,而该软件除了编写自己的硬件之外?
同时,探索是什么使干净操作系统的所有元素成为什么因素,我也在学习Rust。我发现它非常愉快。
这些只是要实施的一些必需品。没有顺序。