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 维护。