#meta #educational

app rustmetos

Rustmetos,仅用于教育目的的用Rust编写的元操作系统

1个稳定版本

1.0.0 2022年1月14日

#434 in 操作系统

MIT 许可证

12KB
226

RustMetOS

要启动它,请使用rustup安装标准Rust编译器,然后在以下部分中运行以下命令以构建某些组件。

构建

标准分发存档

您还需要安装Python以运行构建脚本。Python 3.7应该是最低要求

Unix

cd {Root of the project}
cd rustmetos_std
python3 build.py
cp target/archives/standard.zip ../standard_dist.zip

Windows

cd {Root of the project}
cd rustmetos_std
py -3 build.py
copy target\archives\standard.zip ..\standard_dist.zip

Rustmetos二进制文件

Unix / Windows

cd {Root of the project}
cd rustmetos
cargo build --release

上述操作应在项目的根目录下的rustmetos/target/release/目录中创建一个rustmetosrustmetos.exe文件。

只需运行生成的可执行文件,并在提示标准分发存档时,提供之前使用命令构建的存档的绝对路径。在执行上述步骤后,存档应位于项目的根目录中。

指南

管理此系统的简单指南。让我们从安装和构建完成后开始。现在我们处于Rustmetos Shell,正如加载init配置后所述。

让我们研究标准安装的目录结构。标准安装附带了一些在根目录下的目录,其中一个是重要的/bin//conf/。第一个包含用于管理系统的二进制文件,后者包含基本配置。其中一个是init.conf。默认情况下,它包含以下内容

[exec]
name=sh

在上面的配置中,它定义了一个名为exec的部分,该部分定义了在程序开始时运行的可执行文件。默认情况下,它是内部硬编码为internal:core_shell,以便用户至少有某种方式在没有安装的情况下与系统交互。sh是它的扩展,具有多个其他功能。

您可以始终删除配置,或者您可以在sh中输入boot set internal:core_shell,这将修改此配置以在启动时启动核心shell。

在核心壳中,可以输入 help 来列出所有命令。核心壳中的命令是具体的,预计不会在功能上得到改进,但 sh 就不同了。它预计会随着时间的推移而改进,并具有多个功能。在核心壳中你可以做一件非常重要的事情,那就是 reset。一旦输入,主目录就会被销毁,下一次启动时才能重新创建。系统失去了所有记忆,就像新的一样。

在本指南下方,你可以找到标准分布中提供的命令列表,并按创建顺序排列。

标准命令

sh

简称为壳。直接调用它,它将带你到一个交互式提示符,可以用来执行在核心壳中可以执行的各种更强大的任务。

在核心壳中调用它

exec sh

boot

boot 命令为 init.confexec 部分提供了一个简单的配置修改实用工具。目前它允许执行一个命令,即 set 启动可执行文件。

你可能想用它来在核心壳和 sh 或任何其他自定义可执行文件(如 init 系统之间切换)。

sh 切换到核心壳

boot set internal:core_shell

从核心壳切换到 sh

exec boot set sh

read

从文件中读取并打印到控制台。它更多的是 cat {file} 的一个副本,但比 cat 功能要弱得多。你可以用它来将任何通常为文本格式的文件读取到标准输出。

sh 中读取 init.conf

home
read conf/init.conf

unzip

将 zip 文件解压缩到提供的目录中。例如,给定一个名为 example.zip 的文件,你可以使用它将内容提取到文件夹中。

sh 中将 example.zip 解压缩到名为 my_example 的文件夹中

unzip example.zip my_example

贡献

贡献是任何开源项目的必要动力和核心。这个项目最初只是为了教育,因为我需要某种目的来学习 Rust。在开发过程中,我遇到了多种情况,只是为了帮助我更好地学习和理解 Rust。因此,这个项目对我来说是学习 Rust 的动力,但任何贡献都受欢迎,因为我有我的缺点,我很乐意了解它们。

最好的贡献方式是改进现有的软件或改进这个单页文档。次要的帮助方式是向标准分布引入更多的可执行文件。

依赖关系

~2–11MB
~96K SLoC