1 个不稳定版本
| 0.5.0 | 2024年1月17日 |
|---|
#166 在 #os
2MB
12K SLoC
设置
构建组件
# Clone the repo.
git clone git@github.com:uqbar-dao/kinode.git
# Configure dependency retrieval from GitHub
mkdir .cargo
echo "net.git-fetch-with-cli = true" > .cargo/config
# Get some stuff so we can build Wasm.
cd kinode
cargo install wasm-tools
rustup install nightly
rustup target add wasm32-wasi
rustup target add wasm32-wasi --toolchain nightly
cargo install cargo-wasi
# Build the runtime, along with a number of booted-at-startup WASM modules including terminal and key_value
# OPTIONAL: --release flag
cargo +nightly build --release
启动
获取 eth-sepolia-rpc API 密钥并将其作为参数传递。您可以在 alchemy.com 上免费获取。
确保不要同时为两个节点使用相同的家目录!您可以为家目录使用任何名称:这里我们只是使用 home。这里的 -- 用于分隔 cargo 参数和二进制参数。
TODO:文档功能标志 --simulation-mode
cargo +nightly run --release -- home --rpc wss://eth-sepolia.g.alchemy.com/v2/<your-api-key>
启动时,您将被提示导航到 localhost:8080。确保您的 ETH 钱包连接到 Sepolia 测试网络。登录应该是直接的,只需提交交易并遵循流程即可。如果您想注册新 ID,则需要 Sepolia 测试网代币 或邀请码。
发行版和运行时进程
基础操作系统安装包含某些运行时模块。这些模块以与用户空间进程相同的方式进行交互,但它们深深植根于系统中,并且它们在进程 ID 处提供的 API 假设由用户空间进程可用。所有这些都在 distro:sys 包中标识。
此操作系统发行版还预装了用户空间软件包。其中一些软件包与运行时紧密相关:terminal、homepage 和 kns_indexer。修改、删除或替换发行版用户空间软件包应仅在高专业化的用例中进行。
运行时发行版进程包括
eth:distro:syshttp_client:distro:syshttp_server:distro:syskernel:distro:syskv:distro:sysnet:distro:sysstate:distro:systerminal:distro:systimer:distro:syssqlite:distro:sysvfs:distro:sys
发行版用户空间软件包包括
app_store:syschess:syshomepage:syskns_indexer:systerminal:systester:sys(仅在编译时带有功能标志simulation-mode时安装)
系统发布者sys不是真正的节点ID,但也不是特殊值。在节点引导时从磁盘安装的软件包(无论是运行时还是用户空间),都不会验证其软件包ID或发布者节点ID。节点引导后安装的软件包将验证其发布者字段。
终端语法
-
按CTRL+C或CTRL+D可优雅地关闭节点
-
按CTRL+V可切换到详细模式(0-3,0为默认和最低详细程度)
-
按CTRL+J可切换到调试模式
-
按CTRL+S可在调试模式下逐个事件进行操作
-
按CTRL+L可切换到日志模式,将所有终端输出写入到
.terminal_log文件。默认情况下关闭,这将写入所有事件和详细打印,并带有时间戳。 -
按CTRL+A可跳转到输入的开始位置
-
按CTRL+E可跳转到输入的结束位置
-
向上箭头/向下箭头或CTRL+P/CTRL+N可移动到命令历史记录的上下文
-
按CTRL+R可搜索历史记录,按CTRL+R再次可切换搜索结果,按CTRL+G可取消搜索
-
格式为@<process_id>。<process_id>的格式为<process_name>:<package_name>:<publisher_node>。/message <address> <json>:发送一个进程间消息。- 示例:
/message our@net:distro:sys diagnostics our将由系统解释为您的节点名称- 还可以使用
/m执行相同的命令:/m our@net:distro:sys diagnostics
- 示例:
-
/app <address>:将终端设置为所有消息都发送到特定应用的模式。要清除此选择,请使用/app clear或简单地使用/app。这对于具有命令行界面的应用非常有用。- 示例:
/app our@net:distro:sys,然后/m diagnostics - 还可以使用
/a执行相同的命令:/a our@net:distro:sys - 发送多个消息的示例
/a ben.os@net:distro:sys/m hey there/m how are you?/a(退出应用模式)
- 示例:
-
/hi <name> <string>:向另一个节点的命令行发送文本消息。- 示例:
/hi ben.os hello world
- 示例:
-
/top <process_id>:显示关于进程的内核调试信息。留空进程ID以显示有关所有进程的信息并获取正在运行的进程总数。- 示例:
/top net:distro:sys - 示例:
/top
- 示例:
终端示例用法
下载和安装应用
/m our@main:app_store:sys {"Download": {"package": {"package_name": "<pkg>", "publisher_node": "<node>"}, "install_from": "<node>"}}
/m our@main:app_store:sys {"Install": {"package_name": "<pkg>", "publisher_node": "<node>"}}
依赖项
~116MB
~2M SLoC