minimega 2.5 release notes¶
Introduction¶
The minimega team is pleased to announce the release of minimega 2.5. This release includes various improvements and numerous bug fixes. This release contains changes to the existing API which will improve user experience and programmability.
What's new¶
Major changes and milestones¶
cc synchronization¶
miniccc and the cc server now synchronize with magic bytes ("RON") before their
handshake so that extra data from a previous connection can be flushed from
their buffers. This allows VMs to be shutdown/vmstart'd and reconnect to the
cc server. Because of the way minimega connects to the client, we only attempt
to reconnect after avm start`. If the VM restarts (i.e. with the in-guest
restart mechanism), we currently do not detect this to attempt a reconnect.
This changes requires users to update the miniccc binaries in their VMs.
PR #1177.
cc mount API¶
Extended miniccc to expose the guest filesystem to the host over the miniccc connection. This allows the filesystem to be mounted on the host or across the network on the head node.
The command and control article has been updated to show its use.
PR #1108.
ns snapshot API¶
Added ns snapshot which calls vm migrate on all VMs in the namespace and
writes a launch script to recreate those VMs from the migration files.
This capability has very limited testing.
PR #1081.
read API¶
The read API now records the namespace that is active at the beginning of the
read command and prepends it to all commands. To allow read scripts to change
the namespace, the read API inspects commands and updates the namespace
accordingly. This prevents issues where multiple read scripts run
simultaneously in different namespaces.
The read API also reports the line number when there is a parse error.
-namespace flag¶
Added -namespace flag to specify a namespace to use when running commands for
the -attach and -e flags.
PR #970.
Additional new features¶
tap mirror API¶
Added tap mirror API to create a mirror of a tap. This allows another VM to
inspect the traffic from an experiment. See the
article for an example.
PR #1118.
log ring API¶
Added log ring API which tracks the most recent log messages in an in-memory
ring buffer. The log ring can be created with an arbitrary size and can be
dumped by calling log ring with no arguments.
PR #1121.
Improved QEMU integration¶
Added vm config cores and vm config machine APIs allowing users to specify
the number of cores and the machine type. The acceptable machine types, CPUs,
and network drivers are based on what the binary vm config qemu reports.
PR #1070.
tar: prefix¶
Added support for tar: prefix which fetches and untars tarballs via meshage.
Currently only untars if there is a single top-level directory. It untars to
the same directory that contains the tarball.
PR #1130.
file delete <GLOB>¶
Added glob support to file delete.
PR #972.
vnc API¶
Added support for running commands against multiple VMs in the same VNC
command with an API similar to vm start.
PR #1158.
cc filter API¶
Added support for all vm info fields for cc filter such as:
PR #1161.
qemu¶
Trim -balloon flag from the default QEMU args.
PR #1165.
noVNC¶
Upgraded noVNC to v1.0.0.
PR #1110.
Documentation updates¶
Added several new articles:
Removed Vyatta article (deprecated API removed in v2.4).
Auxiliary Tools¶
miniweb¶
Added support for namespaces to miniweb is several ways. First, users may now
force a namespace by starting miniweb with the -namespace flag. Second, when
miniweb is not forced into a namespace, users may specify namespaces in the
URL. For example, http://localhost:9001/foo/vms will only show VMs in the "foo"
namespace.
Added montage page to show VM screenshots with minimal wrappings.
vmbetter¶
Replaced fdisk with sfdisk to fix issues with newer versions of fdisk.
PR #1164.
igor¶
Improved show command.
Added sync command.
PR #1169.
protonuke¶
Added support for user-agent strings in HTTP requests and fix a reporting error with DNS hits/second.
PR #1172.
Bug fixes¶
vnc API with namespaces¶
vnc API no longer reports vm not found errors when there are multiple hosts
in the namespace and only one is running the target VM.
PR #1125.
disk API¶
Fixed the disk API so that it returns an error when the partition is not
specified and the disk has more than one partition.
PR #1127.
vm config coschedule API¶
Allow localhost as value to vm config coschedule.
PR #1134.
vm tag API¶
Fix bug in vm tag where tags for all VMs were being shown instead of just
those for the specified target.
PR #1156.
capture API¶
Fix bug in capture where some arguments caused an unreachable error.
PR #1167.
vmbetter images¶
Added Bro #1163.
Added minimal Ubuntu #1179.
Availability¶
minimega is available in several ways, both as pre-built distributions and source. See the installing guide for more information.
Debian package¶
minimega is available as an x86-64 debian package, available here. It is known to work in debian 7 (wheezy) and 8 (testing/jessie) and ubuntu 16.04.
tarball¶
A pre-built, x86-64 distribution is available in a single distributable tarball
here.
It should be sufficient to simply unpack the tarball and run tools from the
bin/ directory directly. Most default paths in minimega, vmbetter, and other
tools are built to be used in this way (i.e. bin/minimega, which will then
look for the web directory in misc/web).
Building from source¶
Source of the entire distribution is available on Github. Follow the directions for cloning or forking minimega on github.com. In order to build minimega, you will need a Go 1.8+ compiler and libpcap headers.