- CrosVM是Chrome操作系统中,用于创建虚拟机的应用。是一个Rust编写的轻量级的虚拟机。借助于CrosVM
用户可以很容易的在ChromeOS中运行Linux、Android以及Windows应用程序
概述
- 目前crosvm实现了virtio wayland协议,实现了对linux虚拟机wayland协议支持
Linux内核主线没有virtio_wl驱动,只有在chromiumos有virtio_wl驱动实现。
https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-4.19/drivers/virtio/virtio_wl.c
virtwl_guest_proxy
virtio_wl.ko
控制协议
#参考chromeos-4.19/include/uapi/linux/virtio_wl.h
VIRTIO_WL_CMD_VFD_NEW = 0x100,
VIRTIO_WL_CMD_VFD_CLOSE,
VIRTIO_WL_CMD_VFD_SEND,
VIRTIO_WL_CMD_VFD_RECV,
VIRTIO_WL_CMD_VFD_NEW_CTX,
VIRTIO_WL_CMD_VFD_NEW_PIPE,
VIRTIO_WL_CMD_VFD_HUP,
VIRTIO_WL_CMD_VFD_NEW_DMABUF,
VIRTIO_WL_CMD_VFD_DMABUF_SYNC,
VIRTIO_WL_CMD_VFD_SEND_FOREIGN_ID,
VIRTIO_WL_CMD_VFD_NEW_CTX_NAMED,
VIRTIO_WL_RESP_OK = 0x1000,
VIRTIO_WL_RESP_VFD_NEW = 0x1001,
VIRTIO_WL_RESP_VFD_NEW_DMABUF = 0x1002,
VIRTIO_WL_RESP_ERR = 0x1100,
VIRTIO_WL_RESP_OUT_OF_MEMORY,
VIRTIO_WL_RESP_INVALID_ID,
VIRTIO_WL_RESP_INVALID_TYPE,
VIRTIO_WL_RESP_INVALID_FLAGS,
VIRTIO_WL_RESP_INVALID_CMD,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
前端
后端
- 后端crosvm实现了对wayland支持,参考:
https://crosvm.dev/book/devices/wayland.html
Cuttlefish WL
- Cuttlefish在启动时,已经使用virtio-wayland,用于host、guest间传递frame,该特性仅在crosvm支持,qemu不支持
#默认启动命令行
--wayland-sock=/cuttlefish_runtime.1/internal/frames.sock
环境搭建
Kernel 5.16
Rootfs
运行