Plaza 新闻汇总

IncludeOS:零开销运行应用程序

IncludeOS 允许您在云端运行应用程序,而无需操作系统。IncludeOS 将操作系统功能添加到您的应用程序中,使您可以创建高性能、安全且资源高效的虚拟机。

IncludeOS 应用程序的启动时间仅需数十毫秒,并且仅需要几兆字节的磁盘和内存。

在 Linux 或 macOS 上使用 IncludeOS 运行服务无需安装 IncludeOS,但您需要根据将要运行的服务安装一些依赖项。您可以从尝试我们最简单的 hello_world 服务开始。此服务需要以下依赖项:

* Conan 包管理器

* cmake、make、nasm

* clang,或者在 Linux 上使用 gcc。 clang 6.0 和 gcc 7.3 提供预构建的包

* qemu

* python3 包:psutil、jsonschema

有了上述依赖项,您应该能够在几分钟内构建应用程序。

示例:

```bash

$ conan config install https://github.com/includeos/conan_config.git

$ git clone https://github.com/includeos/hello_world.git

$ mkdir build_hello_world

$ cd build_hello_world

$ conan install ../hello_world -pr

$ source ./activate.sh

$ cmake ../hello_world

$ cmake --build .

$ boot hello

```

启动的 hello world 服务如下所示:

```

================================================================================

IncludeOS 0.14.1-1093 (x86_64 / 64-bit)

+--> Running [ Hello world - OS included ]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Hello world

[ main ] returned with status 0

```

有关详细说明,请参阅 GitHub README。安装完成后,我们建议查看并启动一些演示示例,以熟悉系统。

我们努力简化快速创建实用服务的流程。以下代码将设置一个简单的 TCP 回显服务,并愉快地与任何连接的用户通信:

```c++

#include <os>

#include <iostream>

#include <net/interfaces>

void Service::start()

{

// 获取已自动配置的 IP 堆栈

auto& inet = net::Interfaces::get(0);

// 在端口 7(回显端口)上设置 TCP 回显服务器

auto& server = inet.tcp().listen(7);

server.on_connect([] (auto conn) {

// 在控制台上记录传入连接:

std::cout << "Connection " << conn->to_string() << " established\n";

// 接收到数据时,回显

conn->on_read(1024, [conn] (auto buf) {

conn->write(buf);

});

});

}

```

虚拟机的网络配置可以位于名为 config.json 的 JSON 文件中,放置在同一文件夹中。根据您的需要,它应该如下所示:

```json

{

"net" : [

{

"iface": 0,

"config": "dhcp-with-fallback",

"address": "10.0.0.42",

"netmask": "255.255.255.0",

"gateway": "10.0.0.1"

}

]

}

```

**安全性**

有关安全相关的问题,请发送电子邮件至 [email protected]。您可以使用我们的 PGP 密钥加密电子邮件。

此项目由 Alfred Bratterud 维护。

原文地址
2024-12-18 00:31:11