mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-25 05:03:05 +00:00
f9b035d50c
This adds a new disk file type next to raw files and qcow images that represent an indirection to further raw disk files. The disk file itself is a proto file with references to file paths for other disks to open and their virtual offsets and lengths. The intention is to make it easy to assemble a single virtual hard disk out of several distinct partition files. In the particular case of Cuttlefish running Android in a VM, this is relevant as the Android build system distributes partitions as separate raw files. While the simple solution is to pass each partition as a separate raw disk, some functionality (like the bootloader) assumes there is a partition table with multiple distinct partitions on a single disk. Implementing composite disk support in the VMM bridges this gap through supporting the general-purpose case of a disk built out of multiple component files. If desired, this can be extended to support qcow files to support unusual configurations like a mixed qcow/raw disk. Enabled with the "composite-disk" feature. Bug: b/133432409 Change-Id: I2b0c47d92fab13b5dc0ca5a960c7cfd2b7145b87 Signed-off-by: Cody Schuffelen <schuffelen@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1667767 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
94 lines
2.6 KiB
TOML
94 lines
2.6 KiB
TOML
[package]
|
|
name = "crosvm"
|
|
version = "0.1.0"
|
|
authors = ["The Chromium OS Authors"]
|
|
edition = "2018"
|
|
|
|
[lib]
|
|
path = "src/crosvm.rs"
|
|
|
|
[[bin]]
|
|
name = "crosvm"
|
|
path = "src/main.rs"
|
|
|
|
[profile.release]
|
|
panic = 'abort'
|
|
overflow-checks = true
|
|
|
|
[workspace]
|
|
members = ["qcow_utils"]
|
|
exclude = [
|
|
"assertions",
|
|
"data_model",
|
|
"rand_ish",
|
|
"sync",
|
|
"sys_util",
|
|
"syscall_defines",
|
|
"tempfile",
|
|
]
|
|
|
|
[features]
|
|
default-no-sandbox = []
|
|
gpu = ["devices/gpu"]
|
|
gpu-forward = ["render_node_forward"]
|
|
plugin = ["protos/plugin", "crosvm_plugin", "protobuf"]
|
|
sandboxed-libusb = ["devices/sandboxed-libusb", "vm_control/sandboxed-libusb"]
|
|
tpm = ["devices/tpm"]
|
|
wl-dmabuf = ["devices/wl-dmabuf", "gpu_buffer", "resources/wl-dmabuf"]
|
|
x = ["devices/x"]
|
|
virtio-gpu-next = ["gpu_renderer/virtio-gpu-next"]
|
|
composite-disk = ["protos/composite-disk", "protobuf", "disk/composite-disk"]
|
|
|
|
[dependencies]
|
|
arch = { path = "arch" }
|
|
assertions = { path = "assertions" }
|
|
audio_streams = "*"
|
|
bit_field = { path = "bit_field" }
|
|
crosvm_plugin = { path = "crosvm_plugin", optional = true }
|
|
data_model = "*"
|
|
devices = { path = "devices" }
|
|
disk = { path = "disk" }
|
|
enumn = { path = "enumn" }
|
|
gpu_buffer = { path = "gpu_buffer", optional = true }
|
|
gpu_renderer = { path = "gpu_renderer", optional = true }
|
|
io_jail = { path = "io_jail" }
|
|
kernel_cmdline = { path = "kernel_cmdline" }
|
|
kernel_loader = { path = "kernel_loader" }
|
|
kvm = { path = "kvm" }
|
|
kvm_sys = { path = "kvm_sys" }
|
|
libc = "=0.2.44"
|
|
libcras = "*"
|
|
msg_socket = { path = "msg_socket" }
|
|
net_util = { path = "net_util" }
|
|
p9 = { path = "p9" }
|
|
protobuf = { version = "2.3", optional = true }
|
|
protos = { path = "protos", optional = true }
|
|
qcow = { path = "qcow" }
|
|
rand_ish = { path = "rand_ish" }
|
|
remain = "*"
|
|
render_node_forward = { path = "render_node_forward", optional = true }
|
|
resources = { path = "resources" }
|
|
sync = { path = "sync" }
|
|
sys_util = "*"
|
|
vhost = { path = "vhost" }
|
|
vm_control = { path = "vm_control" }
|
|
|
|
[target.'cfg(target_arch = "x86_64")'.dependencies]
|
|
x86_64 = { path = "x86_64" }
|
|
|
|
[target.'cfg(any(target_arch = "aarch64", target_arch = "arm"))'.dependencies]
|
|
aarch64 = { path = "aarch64" }
|
|
|
|
[dev-dependencies]
|
|
sys_util = "*"
|
|
|
|
[patch.crates-io]
|
|
assertions = { path = "assertions" }
|
|
audio_streams = { path = "../../third_party/adhd/audio_streams" } # ignored by ebuild
|
|
data_model = { path = "data_model" }
|
|
libcras = { path = "../../third_party/adhd/cras/client/libcras" } # ignored by ebuild
|
|
poll_token_derive = { path = "sys_util/poll_token_derive" }
|
|
sync = { path = "sync" }
|
|
sys_util = { path = "sys_util" }
|
|
syscall_defines = { path = "syscall_defines" }
|
|
tempfile = { path = "tempfile" }
|