KerlaRust 编写的操作系统内核
Kerla 是用 Rust 编写的操作系统内核,旨在与 Linux ABI兼容,也就是说,无需任何修改即可运行 Linux 二进制文件。
- 实现 *NIX 进程概念:上下文切换、信号
fork(2)
、execve(2)
、wait4(2)
、 等。 - 支持常用的系统调用,如
write(2)
,stat(2)
,mmap(2)
,pipe(2)
,poll(2)
, ... - 目前不支持磁盘:initramfs 作为根文件系统挂载。
- 伪文件系统:tmpfs 和 devfs。
- 基于 smoltcp 的 TCP/IP 支持。
- 实现 tty 和伪终端 (pty)。
- 支持 QEMU 和 Firecracker(带有 virtio-net 设备驱动程序)。
- 支持 x86_64。
- 基于 Docker 的 initramfs 构建系统。
演示:SSH 进入 Kerla
可以通过 ssh 使用 Kerla,每个 TCP 连接在 Firecracker 上自动启动一个专用的 microVM。
$ ssh root@kerla-demo.seiya.me
运行 Docker 镜像(实验性)
您可以将 Docker 映像作为根文件系统(而不是作为容器!)在 Kerla 内核上运行,而不是我们从initramfs
目录构建的 initramfs 。
例如,要运行 nuta/helloworld 映像 ( Dockerfile ),请尝试以下命令:
$ make IMAGE=nuta/helloworld run
...
[ 0.029] syscall: execve(439398, 4393b8, 4393c8, 8, 2f2f2f2f2f2f2f2f, 8080808080808080)
[ 0.030] syscall: arch_prctl(1002, 4055d8, 0, 20000, 0, ff)
[ 0.031] syscall: set_tid_address(4057f0, 4055d8, 0, 20000, 0, ff)
[ 0.033] syscall: ioctl(1, 5413, 9ffffeed0, 1, 405040, 9ffffeef7)
_ _ _ _ _ _
| |__ ___| | | ___ __ _____ _ __| | __| | |
| '_ \ / _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| | | | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___/ \_/\_/ \___/|_| |_|\__,_(_)
此功能处于早期阶段。
评论