KerlaRust 編寫的操作系統(tǒng)內(nèi)核
Kerla 是用 Rust 編寫的操作系統(tǒng)內(nèi)核,旨在與 Linux ABI兼容,也就是說,無需任何修改即可運行 Linux 二進制文件。
- 實現(xiàn) *NIX 進程概念:上下文切換、信號
fork(2)、execve(2)、wait4(2)、 等。 - 支持常用的系統(tǒng)調(diào)用,如
write(2),stat(2),mmap(2),pipe(2),poll(2), ... - 目前不支持磁盤:initramfs 作為根文件系統(tǒng)掛載。
- 偽文件系統(tǒng):tmpfs 和 devfs。
- 基于 smoltcp 的 TCP/IP 支持。
- 實現(xiàn) tty 和偽終端 (pty)。
- 支持 QEMU 和 Firecracker(帶有 virtio-net 設備驅(qū)動程序)。
- 支持 x86_64。
- 基于 Docker 的 initramfs 構(gòu)建系統(tǒng)。
演示:SSH 進入 Kerla
可以通過 ssh 使用 Kerla,每個 TCP 連接在 Firecracker 上自動啟動一個專用的 microVM。
$ ssh [email protected]
運行 Docker 鏡像(實驗性)
您可以將 Docker 映像作為根文件系統(tǒng)(而不是作為容器?。┰?Kerla 內(nèi)核上運行,而不是我們從initramfs目錄構(gòu)建的 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 / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___/ \_/\_/ \___/|_| |_|\__,_(_)
此功能處于早期階段。
評論
圖片
表情
