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/`vm`start`’d and reconnect to the cc server. Because of the way minimega connects to the client, we only attempt to reconnect after a vm 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:
cc filter name=server cc filter vlan=DMZ
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.