Skip to content

'Reentrant' RunCVM and other fixes/improvements

Compare
Choose a tag to compare
@struanb struanb released this 01 Jan 15:14
· 39 commits to main since this release

This release makes RunCVM 'reentrant'. In other words, an 'inner' RunCVM container/VM guest can now be launched by Docker running within an 'outer' RunCVM container/VM guest. No major tricks are needed to effect this, except that RunCVM code is now mounted and ran from a different location within the guest (/.runcvm/guest) than on the host (still /opt/runcvm), so that in the case where a guest is also a host, RunCVM can be safely freshly installed on the guest without interfering with the RunCVM code bind-mounted from its host.

This will allow testing RunCVM development releases within a RunCVM guest launched on a host using a production release.

This change is facilitated by upgrades to elf-patcher.sh to support creating fully relocatable ELF binaries (i.e. binaries where all paths to dynamic libraries are relative) designed to run natively within the guest, and using ld to run the same binaries when needed on the host.

This release also:

  • Adds RunCVM vs Kata comparison documentation to README (closing #9)
  • Fixes various issues including missing terminfo database, and several minor bugs
  • Upgrades alpine and debian kernels both to varients of Linux v6
  • Improves alpine boot speed by several seconds
  • Adds new integration tests and refactors existing tests
  • Refactors the qemu command line arguments to group related options together and make the arguments altogther much easier to parse by eye, replace serial console with virtconsole, and to explicitly configure VM CPU sockets == specified vCPUs (with --cpus)

Short log

dda9328 Fix: correct integration test logging
e80f2ed Integration test resilience improvement
204e99f Fix footnote formatting
9233e97 Fix: Run cleanup within each test so correct per-test resources get cleaned
891f825 Fix: Call error-resistant cleanup on EXIT
5325da5 RunCVM vs Kata comparison documentation
1814043 New integration test, testing docker run/exec env vars
0f0afad New integration test, testing docker run/exec with -u and -w
7451672 Refactor out common logic from integration test into framework.sh
015c83a Whitespace change: break out arguments to separate lines
a2848e2 Fix: Never assign fallible expressions in local var declarations
3990691 Install terminfo database for QEMU curses library
20d3cea Mount /opt/runcvm in-container to /.runcvm/guest
2a8b493 Add timestamp to runtime debug logs
89d2758 elf-patcher.sh improvements for alternative architectures and relocatable binaries
df143a7 Refactored VM launch
38a1d0f Tidy and identify experimental virtiofsd options
b426140 New test exit codes
c880ac5 Bump Debian kernel version to Bookworm's 6.1.0
7fcc854 Improve alpine kernel boot speed
e395bf5 Bump alpine build system and kernel to 3.18
e1bfcb2 Fix memory allocated to Docker swarm nodes