Thanks for the contribution! See below for questions. In message: [PATCH v4 1/1] crosvm: add recipe for ChromeOS Virtual Machine Monitor (VMM) on 19/02/2026 Keerthivasan Raghavan wrote:
> Introduces a new recipe for integrating crosvm into the > meta-virtualization layer. crosvm is a lightweight, Rust-based virtual We can drop the "meta-virtualization layer" from the description, we know the layer just by it being here :) > machine monitor originally developed for ChromeOS, and provides an > alternative to traditional VMMs such as QEMU. > > Adding crosvm to meta-virtualization offers users of the layer a modern, > secure-by-design VMM option suited for embedded, containerized, and edge > computing deployments. We can drop the marketing for crosvm from the commit. Users will make their own choice on what they want to use, so we don't need the elevator pitch. > > Build tested using meta-qcom MACHINE(qcs9100-ride-sx, aarch64) > and meta-qcom-distro DISTRO(qcom-distro-kvm). Runtime is validated by > running VM till boot-to-shell. The kernel and rootfs used are same > as that of the target. Which unfortunately means I'd have no way of being able to build and test it myself. Getting this working under genericarm64 or better qemuarm64 machine definitions (at list minimal functionality is critical for being able to support it). > > Command used to run the VM: > crosvm --log-level "debug,disk=off" run \ > --disable-sandbox /boot/Image \ > --block /rootfs.img,root \ > -p "console=ttyS0 root=/dev/vda rw" I've started creating a pytest infrastructure for new packages (and eventually the old ones) in the layer. If we get a machine working that is more generic, we can add those. At a minimum a README along side the recipe with testing instructions should be done. > > Signed-off-by: Keerthivasan Raghavan <[email protected]> > --- > recipes-devtools/crosvm/crosvm-crates.inc | 966 ++++++++++++++++++++++ > recipes-devtools/crosvm/crosvm_0.1.0.bb | 26 + > 2 files changed, 992 insertions(+) > create mode 100644 recipes-devtools/crosvm/crosvm-crates.inc > create mode 100644 recipes-devtools/crosvm/crosvm_0.1.0.bb > > diff --git a/recipes-devtools/crosvm/crosvm-crates.inc > b/recipes-devtools/crosvm/crosvm-crates.inc > new file mode 100644 > index 00000000..5cc3fa9e > --- /dev/null > +++ b/recipes-devtools/crosvm/crosvm-crates.inc > @@ -0,0 +1,966 @@ > +# Autogenerated with 'bitbake -c update_crates crosvm' > + > +# from Cargo.lock > +SRC_URI += " \ > + crate://crates.io/addr2line/0.21.0 \ > + crate://crates.io/adler/1.0.2 \ > + crate://crates.io/ahash/0.8.6 \ > + crate://crates.io/aho-corasick/0.7.18 \ <snip> > + crate://crates.io/zerocopy-derive/0.8.14 \ > + crate://crates.io/zeroize/1.5.7 \ > + crate://crates.io/zstd/0.13.2 \ > + crate://crates.io/zstd-safe/7.2.1 \ > + crate://crates.io/zstd-sys/2.0.13+zstd.1.5.6 \ > +" > + > +SRC_URI[addr2line-0.21.0.sha256sum] = > "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" > +SRC_URI[adler-1.0.2.sha256sum] = > "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" > +SRC_URI[ahash-0.8.6.sha256sum] = > "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" <snip> > +SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = > "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" > +SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = > "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" > +SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = > "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" > +SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = > "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" > diff --git a/recipes-devtools/crosvm/crosvm_0.1.0.bb > b/recipes-devtools/crosvm/crosvm_0.1.0.bb > new file mode 100644 > index 00000000..4cbe9879 > --- /dev/null > +++ b/recipes-devtools/crosvm/crosvm_0.1.0.bb > @@ -0,0 +1,26 @@ > +SUMMARY = "crosvm" crossvm is a little bit short for SUMMARY :) > + > +DESCRIPTION = "Rust-based KVM virtual machine monitor with a minimal, \ > + security-focused architecture and sandboxed device processes." > + > +HOMEPAGE = "https://github.com/google/crosvm" > + > +LICENSE = "BSD-3-Clause-Clear" With that many crates. Are there really no variation in the license at all ? Note: other recipes are guilty of this as well, and it's on my list to fix the up as well. > +LIC_FILES_CHKSUM = > "file://${COMMON_LICENSE_DIR}/BSD-3-Clause-Clear;md5=7a434440b651f4a472ca93716d01033a" > + > +inherit cargo pkgconfig cargo-update-recipe-crates features_check > + > +SRC_URI = > "gitsm://chromium.googlesource.com/crosvm/crosvm.git;branch=main;protocol=https" I'm on the record as really not liking gitsm fetched repos (see the ones I've expanded in meta-virtualization previously), since it makes it very hard to bump the components of have visibility into what is being cloned. I probably won't insist on it, but have you tried breaking this down into the individual clones ? > +SRCREV = "b04c13a65b93034010b20612e3566d4f9d83c4f0" > + > +PKGV = "0.1.0+git${SRCPV}" I think there are some stragglers in the layer, and maybe it is my memory of PV crossing with PKGV (I prefer we use PV), but do we need the ${SRCPV} ? the +git normally triggers it to be filled in. > + > +DEPENDS += "libcap wayland wayland-native protobuf-native wayland-protocols" With the hard dependency on wayland, is this always graphical ? > + > +REQUIRED_DISTRO_FEATURES = "kvm" > + > +COMPATIBLE_HOST = "(aarch64|x86_64).*-linux.*" > + > +BBCLASSEXTEND = "native" Why the native variant ? Bruce > + > +require crosvm-crates.inc > -- > 2.34.1 >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#9601): https://lists.yoctoproject.org/g/meta-virtualization/message/9601 Mute This Topic: https://lists.yoctoproject.org/mt/117952091/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/meta-virtualization/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
