1 个不稳定版本
0.5.0 | 2024年1月17日 |
---|
#166 在 #os
2MB
12K SLoC
设置
构建组件
# Clone the repo.
git clone [email protected]: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:sys
http_client:distro:sys
http_server:distro:sys
kernel:distro:sys
kv:distro:sys
net:distro:sys
state:distro:sys
terminal:distro:sys
timer:distro:sys
sqlite:distro:sys
vfs:distro:sys
发行版用户空间软件包包括
app_store:sys
chess:sys
homepage:sys
kns_indexer:sys
terminal:sys
tester: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