vm_tools: Make concierge boot vm's that are DLCs.

This change allows concierge to query dlcservice in order to determine
the paths of the rootfs and kernel. This is intended to rework
crrev.com/c/2329207.

We maintain the behaviour that trusted vm's must not take their path
directly from the proto. We instead assert that dlcservice is trusted
equivalently to concierge itself, and so asking it for a path conveys
"trust"

BUG=chromium:953544
TEST=patch in crrev.com/i/3226524 and boot the VM

Cq-Depend: chromium:2377042
Change-Id: I82487874bc1626018f10639338e3e43ed4025456
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2367298
Tested-by: Nic Hollingum <hollingum@google.com>
Commit-Queue: Nic Hollingum <hollingum@google.com>
Reviewed-by: Abhishek Bhardwaj <abhishekbh@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Reviewed-by: Fergus Dall <sidereal@google.com>
Auto-Submit: Nic Hollingum <hollingum@google.com>
Cr-Mirrored-From: https://chromium.googlesource.com/chromiumos/platform2
Cr-Mirrored-Commit: 688989880123b36444654c0dbd9586ab5c287818
1 file changed
tree: 0b1d782cef0f13775f13d8c0360a4339fbcc34fb
  1. constants/
  2. dbus/
  3. src/
  4. switches/
  5. .gitignore
  6. BUILD.gn
  7. build.rs
  8. Cargo.toml
  9. LICENSE
  10. OWNERS
  11. README.md
  12. system_api.pc
README.md

This directory (platform2/system_api) contains constants and definitions like D-Bus service names that are shared between Chromium and Chromium OS.

This directory is only for things like headers and .proto files. No implementation should be added.

When writting a .proto file make sure to use:

option optimize_for = LITE_RUNTIME;

This will force usage of a lite protobuf instead of a full/heavy weight protobuf. The browser only links against the light version, so you will get cryptic link errors about missing parts of Message if you define a protobuf here and then try to use it in Chrome. Currently CrOS links against the full protobuffer library, but that might change in the future.

When declaring a protobuf, avoid use of required unless it is exactly what you mean. “Required is Forever” and very rarely should actually be used. Consult Protocol Buffer Basics: C++ for a detailed of this issue.