Skip to content

Releases: arighi/virtme-ng

v1.24

03 May 10:55
Compare
Choose a tag to compare

A new release of virtme-ng is out!

The most noticeable changes include the support for the loop network type and the possibility to specify the --network command multipe times, both useful for kernel selftests testing (thanks to Jiri Pirko).

Moreover, there is a boot-time improvement in environments where the kvm acceleration is not available, such as container, cloud environments, etc. (using the q35 arch in qemu - thanks to Ricardo Ribalda for driving this topic).

Notably, this new version is expected to enhance the performance of GitHub workflows that use virtme-ng.

Detiled ChangeLog below.

== virtme-ng ChangeLog ==

Andrea Righi (10):
      Merge pull request #100 from jfernandez/virtiofsd-arch
      Merge pull request #102 from lorenzo-stoakes/ljs-fix-cross-compile-heuristic
      Merge pull request #103 from jpirko/net_loop
      Merge pull request #105 from l-0-l/patch-2
      Merge pull request #104 from l-0-l/patch-1
      virtme-ng-init: resync submodule
      Merge pull request #109 from arighi/update-virtme-ng-init
      virtme: default to q35 architecture when kvm is not available
      Merge pull request #110 from arighi/q35-arch
      virtme-ng v1.24

Jiri Pirko (2):
      virtme: introduce loop network type
      virtme: allow user to ask for multiple network devices

Jose Fernandez (1):
      Add additional path for virtiofsd executable

Lorenzo Stoakes (1):
      config: avoid accidentally specifying invalid cross-compile

l-0-l (2):
      Update README.md
      Update README.md

== virtme-ng-init ChangeLog ==

Andrea Righi (1):
      add Cargo.lock

virtme-ng v1.23 is out

29 Mar 08:21
Compare
Choose a tag to compare

A new version of virtme-ng is out to address a few bug fixes, especially a breakage with QEMU 8.2.2 (kudos to @matttbe and @ishitatsuyuki for investigating and figuring out the fix), that is the most noticeable change.

There is also a small behavior change with --kconfig, that will always override the .config if present (since there is not reason to use --kconfig and not update the .config).

Moreover, it is now possible to force the legacy cgroup v1 using the option -a "SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1": the vng init script will mimic systemd behavior and mount cgroup v1, instead of v2.

Detailed ChangeLog:

== virtme-ng ChangeLog ==

Andrea Righi (11):
      setup.py: properly detect when the virtme-ng-init submodule is missing
      init: allow to mount legacy cgroupfs (v1)
      Merge pull request #85 from arighi/support-cgroup-v1
      virtme-ng-init: resync submodule
      Merge pull request #93 from arighi/fix-virtme-ng-init-console
      Merge pull request #94 from matttbe/home
      Merge pull request #91 from matttbe/config
      Merge pull request #96 from matttbe/config
      Merge pull request #98 from matttbe/docker-privileged
      Merge pull request #99 from matttbe/qemu-8.2.2
      virtme-ng v1.23

Matthieu Baerts (NGI0) (9):
      init: set the HOME env var if root
      config: always append virtme configs
      config: override the kernel config if asked
      config: option not to update if there is a config file
      vng: override kconfig with '--force'
      vng: --kconfig: override the .config
      readme: docker: recommend using --privileged option
      readme: docker: add virtiofsd
      qemu: remove unnecessary '-serial none' arg

== virtme-ng-init ChangeLog ==

Andrea Righi (4):
      virtme-ng-init: allow to mount legacy cgroupfs (v1)
      Merge pull request #7 from matttbe/home
      virtme-ng-init: properly configure terminal line settings
      add Cargo.lock

Matthieu Baerts (NGI0) (1):
      init: set the HOME env var if root

virtme-ng v1.22 is out

24 Feb 09:18
Compare
Choose a tag to compare

Very calm release, only bug fixes this time, but I wanted to cut a new version anyway to make sure that no other people are hitting the permission errors with sudo.

Most noticeable changes:

  • fix potential sudo errors (in openSUSE, Fedora, CachyOS)
  • propagate /proc/sys/fs/nr_open from host to guest
  • more robust parsing of upstream kernel versions
  • small command help improvements
== virtme-ng ChangeLog ==

Andrea Righi (11):
      Merge pull request #73 from WOnder93/fix-traceback-config
      Merge pull request #74 from WOnder93/fix-setup
      virtme: propagate /proc/sys/fs/nr_open from host to the guest
      virtme-ng: hide additional sudo settings
      Merge pull request #77 from arighi/propagate-nr-open
      virtme-ng: more robust parsing of upstream versions
      virtme-ng: improve help of --run command
      virtme-ng: print a hint to exit from the virtme-ng session
      Merge pull request #82 from arighi/improve-help
      Merge pull request #83 from paulmenzel/fix-typo-in-warning-in-setup.py
      virtme-ng v1.22

Ondrej Mosnáček (2):
      virtme: fix traceback with --kdir when .config doesn't exist
      setup.py: fix logic around the virtme_ng_init submodule

Paul Menzel (1):
      setup.py: Fix typo in *submodule* in warning

== virtme-ng-init ChangeLog ==

Andrea Righi (4):
      virtme-ng-init: handle command line option nr_open
      virtme-ng-init: apply limits after mounting kernel filesystems
      virtme-ng-init: hide additional sudo settings
      virtme-ng-init: print a hint to exit from virtme-ng

virtme-ng v1.21 is out

16 Feb 15:03
Compare
Choose a tag to compare

This new version of virtme-ng includes some new enhancements focused at improving its integration in CI/CD environments, alongside with the usual set of miscellaneous fixes.

Most noticeable changes in this release:

  • When running in script mode do not hang in case of kernel panic, but return the special error code 255 (this allows to automate catching kernel panics)
  • Redirect kernel log to stderr on the host when running in interactive mode: this allows to easily save the kernel log to a file (or pipe it to another tool), simply by runing a vng -vr 2>/tmp/kernel.log
  • vng --dump can now generate a memory dump compatible with drgn
  • It is now possible to use virtiofsd with a btrfs root filesystem on the host (e.g., default openSUSE setup)
  • It is not possible to to use the microvm architecture with kernels that don't have built-in virtio-pci / virtio-mmio (e.g., stock openSUSE Tumbleweed kernel)
== virtme-ng ChangeLog ==

Andrea Righi (21):
      virtme-ng: redirect kernel log to stderr in interactive mode
      Merge pull request #66 from arighi/kernel-log-stderr
      virtme-ng: generate drgn compatible memory dumps
      Merge pull request #67 from arighi/drgn-support
      doc: replace the screenshot with a video in README.md
      Merge pull request #68 from arighi/video-demo
      virtme-init: always override sudoers
      virtme-ng: deprecate --skip-config
      Merge pull request #69 from arighi/fix-sudo
      virtme-ng: fix sending kernel log to stderr in script mode
      virtme-ng: return 255 on panic in script mode instead of hanging
      Merge pull request #70 from arighi/detect-kernel-panic
      doc: add "Additional resources" section to README.md
      Merge pull request #71 from arighi/readme-additional-resources
      virtme: properly detect rootfs when /lib is symlinked to /usr/lib
      virtme: use --no-announce-submounts with virtiofsd
      setup.py: always add site-packages to PYTHONPATH
      virtme: always add modules required by microvm to the initramfs
      Merge pull request #72 from arighi/tumbleweed-fixes
      setup.py: automatically initialize virtme-ng-init submodule
      virtme-ng v1.21

== virtme-ng-init ChangeLog ==

Andrea Righi (2):
      virtme-ng-init: allow virtme-ng to specify a console device
      virtme-ng-init: always override sudoers

virtme-ng v1.20 is out

03 Feb 10:50
Compare
Choose a tag to compare

I am really excited to notice that more and more people are starting to use virtme-ng for their CI. The integration with docker has probably helped a lot to make this tool almost like a natural choice for CI workflows (e.g., github actions), especially for kernel-related projects / subsystems.

Most noticeable changes in this new release:

  • The return code of a command executed in the vng guest is now transparently channeled to the host: this, together with stdin/stdout/stderr redirection, gives the complete illusion to run the command in the guest as if it was executed on the host and it can help to easily integrate vng with other CI tools/scripts (suggested by @itaihandler).
  • NUMA support (suggested by @tehcaster): it is now possible to create multiple NUMA nodes, and assign CPUs to them, inside a vng guest, using the --numa option.
  • A new --quiet option to override --verbose (suggested by @jimc).
  • A new --disable-kvm option to explicitly disable hardware virtualization (KVM) (by @kuba-moo) .
  • lockdep is now disabled by default during the kernel build (by @kuba-moo).
  • Usual fixes and cleanups.

Detailed changelog below.

Cheers,
-Andrea

== virtme-ng ChangeLog ==

Andrea Righi (14):
      Merge pull request #53 from tklauser/readme-fixes
      Merge pull request #55 from nkapron/development
      virtme-ng: introduce NUMA support
      Merge pull request #57 from arighi/numa-support
      virtme-ng: introduce -q/--quiet
      Merge pull request #59 from arighi/vng-quiet-option
      vng: improve documentation of the new option --numa
      virtme-ng: channel the return code of a command to the host
      Merge pull request #62 from kuba-moo/main
      Merge pull request #61 from arighi/vng-channel-retcode
      Merge pull request #64 from kuba-moo/main
      Merge pull request #65 from winnscode/winn-dev-2.2
      virtme-ng: print an explicit error when a valid pts is not found
      virtme-ng v1.20

Jakub Kicinski (3):
      virtme-configkernel: disable lockdep by default
      virtme: pass whether KVM is usable into arch code
      virtme: let user disable KVM accel easily

Neill Kapron (1):
      virtme_ng: update virtme_ng_init submodule to fix network init

Tobias Klauser (1):
      doc: update README.md formatting

Winston Wen (2):
      virtme: use $MODDIR/modules.dep to check the module folder
      virtme-prep-kdir-mods: delete existing $MODDIR/modules.dep at beginning

virtme-ng v1.19 is out!

22 Dec 08:57
Compare
Choose a tag to compare

A new release of virtme-ng is out, just before the Christmas holidays.

The most noticeable change is definitely the support for running virtme-ng inside Docker containers. This opens the possibility for many other projects to use virtme-ng to potentially pick any arbitrary kernel to run their tests inside their Docker instances (think, for example, of GitHub workflows).

The other interesting change (this one only for Ubuntu users) is the --root-release argument (used together with --root) that allows bootstrapping a rootfs from scratch, selecting a specific Ubuntu release. The rootfs will be created from the latest Ubuntu cloud image of the target release.

This, together with the Docker support, allows you to quickly deploy an arbitrary Ubuntu release with any arbitrary kernel inside a Docker instance, no matter which distro/kernel the Docker instance is running. This is very powerful in a testing scenario (again, GitHub workflows).

In addition to the above new features, we have the usual set of fixes here and there, thanks to @marcosps and @pinchartl.

Detailed changelog below.

Happy holidays! - Andrea

= virtme-ng ChangeLog =

Andrea Righi (20):
      Merge pull request #42 from marcosps/requests-fix
      Merge pull request #43 from marcosps/requests-fix
      virtme-ng-init: resync the submodule for the secure_path fix
      Merge pull request #46 from pinchartl/fixes
      Merge pull request #47 from marcosps/group-fix
      virtme-ng-init: resync with upstream
      virtme: restore terminal settings on exit
      virtme: coding style fixes
      virtme: use isatty() to check if stdin is a valid terminal
      virtme-ng: introduce argument --root-release
      virtme-init: fix typo in when evaluating virtme_user
      virtme: use kernel modules from the rootfs when --root is used
      virtme: show virtiofsd warnings only in verbose mode
      virtme: do not enable native features if kvm cannot be used
      virtme-init: docker host support
      virtme-ng-init: docker host support
      doc: add a note about running virtme-ng inside docker
      github: add a test run workflow
      Merge pull request #52 from arighi/docker-support
      virtme-ng v1.19

Laurent Pinchart (1):
      virtme: Fix infinite loop when finding kernel modules

Marcos Paulo de Souza (3):
      setup.py: Add requests to install_requires
      virtme-init: Add default secure_path
      virtme-init: Drop usage of group when chwon'ing

= virtme-ng-init Changelog =

Andrea Righi (3):
      virtme-ng-init: add default secure_path to /etc/sudoers
      virtme-ng-init: drop usage of group when chwon'ing
      virtme-ng-init: docker host support

virtme-ng v1.18 is out!

23 Nov 09:13
Compare
Choose a tag to compare

This new version includes a lot of contributions from the community.

This project has gained significant visibility recently, thanks to the participation at the latest Linux Plumbers Conference in Richmond, Virginia, and also thanks to the really nice article on lwn.net (https://lwn.net/Articles/951313).

I am really grateful for all of that and I am very happy to keep maintaining this cool project.

The most noticeable change is probably the support for pre-compiled vanilla kernels (using the Ubuntu mainline builds), that can help to save a bunch of build time and energy in some cases, i.e., when bisecting an issue across major upstream kernel versions.

Now virtme-ng also uses virtme-ng as the default hostname (thanks to Zev Weiss), so it's easier to spot when we are inside a virtme-ng interactive session.

Moreover, we have resumed the possibility to run virtme-ng commands directly from the source directory, as it was in the legacy virtme (thanks to Paul McKinney for the suggestion).

And last but not least, we have a bunch of changes, refactoring, cleanups in virtme-ng-init (thanks to Uli Schlachter), a few small fixes in the legacy virtme-init (thanks to Tycho Andersen) and the usual set of small bug fixes here and there.

Below is the detailed list of changes.

Cheers,
-Andrea

= virtme-ng ChangeLog =

Andrea Righi (11):
      virtme-ng: fix --user behavior
      virtme-ng: allow to run main commands directly from source
      virtme-ng: restore old --run behavior
      doc: update README.md
      virtme-init: resync with upstream virtme-ng-init
      virtme-ng: use pre-compiled mainline kernels
      doc: update README.md
      virtme-ng: fail to run pre-compiled deb if dpkg is not installed
      virtme-ng-init: resync with upstream project
      doc: add more info about potential required packages
      virtme-ng v1.18

Tycho Andersen (2):
      virtme-init: mount devtmpfs before using bash redirects
      virtme-init: touch /etc/sudoers if it doesn't exist

Zev Weiss (4):
      virtme-ng: Don't fail on missing argcomplete
      virtme-init: Add guest hostname to /etc/hosts
      virtme-ng: Set a default for --name
      Add tiny Makefile for building virtme-ng-init

= virtme-ng-init Changelog =

Andrea Righi (5):
      virtme-ng: honor virtme_user when running user script
      virtme-ng-init: always set XDG_RUNTIME_DIR
      virtme-ng-init: set proper ownership of the default console device
      virtme-ng-init: set the proper ownership on the virtio-ports devices
      virtme-ng-init: fix build error with older versions of rustc

Uli Schlachter (34):
      Use ? on Option where possible
      Add a simple test for extract_user_script()
      Simplify extract_user_script()
      Remove use of HashMap
      Remove Option return from run_misc_services()
      Simplify an env var check
      Simplify(?) some environment lookup
      Simplify lookup of $virtme_user
      Simplify(?) some command construction
      Remove useless Some-wrapping
      Remove unnecessary 'static
      Replace e.g. libc::S_IRWXU with Mode::S_IRWXU
      Fix clippy warnings around logging
      Fix clippy warnings about patterns
      Fix clippy warning about unnecessary return
      Fix clippy warnings about reading lines
      Fix clippy warning about "loop never loops"
      Fix clippy warning about "push() after creation"
      Fix clippy warning about unnecessary matching
      Simplify opening of TTYs
      Use uname() from nix instead of libc
      Remove useless to_string()
      Simplify /etc/shadow generation
      Use utils::create_file() to write some file contents
      Remove an unnecessary Vec
      Refactor logic in find_udevd()
      Allow run_cmd() with non-utf8-strings
      Avoid allocations for static strings for run_shell()
      Use nix' flags instead of libc's in one more place
      Avoid temporary allocation for PathBuf
      Add a log!() macro
      (Needlessly) optimise logging
      Use write_all() instead of write()
      Remove unnecessary trim_end_matches('\n')

Zev Weiss (3):
      utils: Don't log mount failures due to ENOENT
      Don't try to run systemd-tmpfiles on non-systemd systems
      Add guest hostname to /etc/hosts

virtme-ng v1.17 is out

09 Nov 05:06
Compare
Choose a tag to compare

Nothing major in this new version, this mostly to test the release feature here on github. 😄

The new changes are:

  • the possibility to use the '--' syntax to run commands in graphic mode (such as vng -g -- glxgears)
  • a small fix to install the bash completion scripts to the proper standard location (/usr/share/bash-completion/completions)