virtme-ng v1.33 is now available!
While the changelog looks extensive, this release is quite small and stable with only a few bug fixes. The big changelog is due to the merging of virtme-ng-init
into the main virtme-ng
project (while keeping the virtme-ng-init
git history intact). This merge allows us to simplify the project structure and eliminate the need to manage a separate git submodule.
As a result, you may need to run the following commands to remove the submodule also from your local Git repository (in case somehting isn't working in your regular workflow):
$ git submodule deinit virtme_ng_init
$ git rm -rf virtme_ng_init
After that, just fetch, pull, or reset to the main virtme-ng branch as usual.
Most noticeable changes in this release include restricting the SSH port to localhost (to mitigate potential security risks when --ssh
is used), support for running amd64
vng instances on non-x86 platforms (e.g., running an x86 vng instance on arm64), and a number of minor fixes here and there.
Big thanks to all the contributors!
Detailed ChangeLog:
Andrea Righi (53):
initial commit
virtme-ng-init: initial implementation in Rust
doc: add a proper README.md
create rust.yml
properly handle GUI support
workaround to be able to start xinit directly from a console session
doc: README.md: project merged into virtme-ng
virtme-ng-init: preserve host path
virtme_ng_init: properly synchronize udev and network startup
virtme-ng: allow to run snaps inside virtme-ng instances
virtme-ng: provide --enable-snaps
virtme-ng-init: initialize XDG_RUNTIME_DIR
guest-tools: add a script to automatically start the sound subsystem
virtme-ng: try to automatically fix permissions of snapd state.json
virtme: init process refactoring
virtme-ng: pass --exec command via /proc/cmdline
virtme-ng-init: support 32-bit architectures
virtme-ng-init: use usize instead of u64 in do_mount()
virtme-ng-init: minor coding style fixes
virtme-ng-init: relax 'nix' and 'users' crate dependencies
remove Cargo.lock
update README.md
github: add coding style checks to the workflows
virtme-ng-init: support base64 encoded commands
cargo: use fixed versions for nix and users crate
virtme-ng-init: fail gracefully when executing external commands
virtme-ng-init: support long commands in graphic mode
virtme-ng-init: make virtme-script a constant
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
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-init: channel the return code of a command to the host
virtme-ng-init: allow virtme-ng to specify a console device
virtme-ng-init: always override sudoers
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-init: allow to mount legacy cgroupfs (v1)
virtme-ng-init: properly configure terminal line settings
add Cargo.lock
virtme-ng-init: move all temp files to /run/tmp
virtme-ng-init: overlayfs: fall back to mounting without xino option
ssh: support virtme.ssh
virtme-ng-init: always check return code when executing bash
virtme-ng: enable amd64 architecture support on non-x86 platforms
virtme: always print kernel panic / oops in interactive mode
virtme-ng v1.33
Andreas Grapentin (1):
properly quoting exec string to avoid breaking virtme-run invocation on more complex guest calls
David Carlier (1):
virtme_ng_init: replace Err(...) instances for is_err()
Marcos Paulo de Souza (1):
main.rs: Enable lvm usage
Matthieu Baerts (NGI0) (17):
init: set the HOME env var if root
net: support multiple interfaces
net: setup the loopback iface in a thread
poweroff: fix irrefutable 'if let' pattern warning
vsock: socat service for remote console
vsock: mount virtme_vsockmount if needed
ssh: only export the port to localhost
virtme-ng-init: remove the submodule
gh: import and adapt rust workflow
console/ssh: properly quote the remote cmd
vng: run: support O= in interactive mode
vng: run: support O= with full paths
vng: run: support KBUILD_OUTPUT
vng: support --debug with --qemu-opts
vng: support --nvgpu and --qemu-opts
vng: fail if --arch is used without --root
vng: arch: list supported arch in case of errors
Neill Kapron (1):
virtme-ng-init: do not remount /run
Ondrej Mosnáček (2):
virtme_ng_init: use uzers instead of users (which is unmaintained)
virtme_ng_init: update dependencies
Thibault Ferrante (2):
README.md: add building and installation section
virtme-ng-init: allow /tmp to be mounted from host
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