Hi,

Firecracker[0] is a minimal virtual machine manager (a la QEMU)
written in Rust that uses KVM to start Linux VMs extremely quickly and
securely.  It is used by AWS Lambda and Fargate among other things to
make VM startup time comparable to containers.  I've built it for
Fedora x86_64 and shared it in a Copr repository[1] which includes
some example commands for starting VMs.

Making it build for Fedora required changes across a few components,
so I'm writing to ask if this is acceptable for inclusion in Fedora.
The Copr specs are all dumped in a Git repository[2] for readability.
Changes include:

  - The musl package adds /usr paths for compatibility with the
compiler --sysroot option.
  - The rust compiler adds musl target subpackages.
  - The kernel must set CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y to be
usable as a guest.
  - About two dozen Rust crates must be added to Fedora (but a handful
are just new versions of existing packages).
  - Unrelated, but in the Copr repo anyway: The musl package is fixed
to allow multilib installs, and Rust includes both 32- and 64-bit
targets.

I used upstream-preferred settings when adding things, but they may be
in conflict with Fedora guidelines.  Here are some concerns:

  - Firecracker can be built with Fedora's libc (glibc), but it is
officially unsupported upstream[3].  Functionality would be harmed by
not using musl, e.g. seccomp filters are not used.
  - Upstream Rust wants musl targets to be statically linked by
default[4].  It can be changed by patching (Gentoo does this) if
dynamic linking is still a priority with Rust binaries, but I haven't
tested that.
  - Firecracker uses two crates forked from crates.io, but they are
not vendored/bundled nor published to a registry.  I'm currently
manually bundling them as if they were vendored to avoid package name
conflicts since nothing else uses them, but I don't know the preferred
way to deal with those.

So does any of that sound like a showstopper for being included in
Fedora?  Is there any other interest in the project from the
community?

Thanks.

David

[0] https://firecracker-microvm.github.io/
[1] https://copr.fedorainfracloud.org/coprs/dm0/Firecracker
[2] https://github.com/dm0-/copr-firecracker
[3] 
https://github.com/firecracker-microvm/firecracker/blob/v1.3.0/tools/release.sh#L145
[4] 
https://github.com/rust-lang/rust/blob/1.67.1/compiler/rustc_target/src/spec/linux_musl_base.rs#L13
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to