mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-21 10:09:07 +00:00
60 lines
1.9 KiB
Markdown
60 lines
1.9 KiB
Markdown
The Chrome OS Virtual Machine Monitor
|
|
[`crosvm`](https://chromium.googlesource.com/chromiumos/platform/crosvm/)
|
|
is a lightweight VMM written in Rust. It runs on top of KVM and
|
|
optionally runs the device models in separate processes isolated with
|
|
seccomp profiles.
|
|
|
|
|
|
## Build/Install
|
|
|
|
The `Makefile` and `Dockerfile` compile `crosvm` and a suitable
|
|
version of `libminijail`. To build:
|
|
|
|
```sh
|
|
make
|
|
```
|
|
|
|
You should end up with a `crosvm` and `libminijail.so` binaries as
|
|
well as the seccomp profiles in `./build`. Copy `libminijail.so` to
|
|
`/usr/lib` or wherever `ldd` picks it up. You may also need `libcap`
|
|
(on Ubuntu or Debian `apt-get install -y libcap-dev`).
|
|
|
|
You may also have to create an empty directory `/var/empty`.
|
|
|
|
|
|
## Use with LinuxKit images
|
|
|
|
You can build a LinuxKit image suitable for `crosvm` with the
|
|
`kernel+squashfs` build format. For example, using `minimal.yml` from
|
|
the `./examples` directory, run (but also see the known issues):
|
|
|
|
```sh
|
|
linuxkit build -format kernel+squashfs -decompress-kernel minimal.yml
|
|
```
|
|
|
|
The `-vmlinux` switch is needed since `crosvm` does not grok
|
|
compressed linux kernel images.
|
|
|
|
Then you can run `crosvm`:
|
|
```sh
|
|
crosvm run --disable-sandbox \
|
|
--root ./minimal-squashfs.img \
|
|
--mem 2048 \
|
|
--socket ./linuxkit-socket \
|
|
minimal-kernel
|
|
```
|
|
|
|
## Known issues
|
|
|
|
- With 4.14.x, a `BUG_ON()` is hit in `drivers/base/driver.c`. 4.9.x
|
|
kernels seem to work.
|
|
- With the latest version, I don't seem to get a interactive console.
|
|
- Networking does not yet work, so don't include a `onboot` `dhcpd` service.
|
|
- `poweroff` from the command line does not work (crosvm does not seem
|
|
to support ACPI). So to stop a VM you can use the control socket
|
|
and: `./crosvm stop ./linuxkit-socket`
|
|
- `crosvm` and its dependencies compile on `arm64` but `crosvm` seems
|
|
to lack support for setting op the IRQ chip on the system I
|
|
tested. I got: `failed to create in-kernel IRQ chip:
|
|
CreateGICFailure(Error(19))`.
|