KerlaRust 编写的操作系统内核

联合创作 · 2023-09-29

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 / (_) | |  | | (_| |_|
|_| |_|\___|_|_|\___/    \_/\_/ \___/|_|  |_|\__,_(_)

此功能处于早期阶段。

浏览 4
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑
举报