- What's new
- Major changes and milestones
- Additional new features
- minicli improvements
- miniclient redial
- optimize API
- file stream API
- vm config vga, vm config sockets, vm config threads APIs
- ns dry-run API
- vnc API
- Instance symlinks
- vm cdrom API
- vm config virtio-ports API
- VM names
- deploy API
- bridge API
- mesh API and host completion
- cc tunnel API
- vm launch API
- Output coalescing
- cc APIs
- Dependencies checks
- vm flush API
- Documentation updates
- Auxiliary Tools
- Bug fixes
- vm volume API
- Filesystem does not exist
- Clogged containers
- Quoting with minimega -e
- vm qmp API
- vm config schedule API
- Properly handle connection errors
- cc response API
- vm config cpu API
- vm info API
- .alias API
The minimega team is pleased to announce the release of minimega 2.6. This release includes many new features, improvements, and bug fixes. This release contains changes to the existing API which will improve user experience and programmability.
Major changes and milestones
tap mirror API
Allows users to create mirrors between VM taps so that VMs can monitor the traffic of other VMs.
vm config colocate API
tap mirror which needs VMs to be scheduled on the same host, we
vm config colocate API to specify that the new VM should be
scheduled on the same host as an existing VM.
-snapshot flag from the qemu args and instead create snapshots of
the disks when the VM first launches. These are saved in the VM instance
directory and can be saved in the future. minimega now warns if you configure a
VM with more than 4 IDE disks.
GRE meshes for namespace
Automatically creates GRE or VXLAN tunnels on a separate bridge for a namespace. Very experimental and subject to change.
Additional new features
Reduce the overhead for minicli to parse commands.
Too many minimega -e's can cause minimega's listen queue to fill up and start rejecting new miniclients. Add redial/backoff when we detect a temporary error.
Make the optimize API mostly work with namespaces.
can be set per namespace.
ksm is set globally.
file stream API
Add API to stream a file from the iomeshage directory. This is used by miniweb to serve files from this directory back to users via the browser. Note that due to the way minimega processes commands, this works for small files but large files will cause minimega to wait until the file is fully downloaded before continuing.
vm config vga, vm config sockets, vm config threads APIs
Add new APIs to set additional QEMU parameters.
ns dry-run API
Dry run of the scheduler that prints out VM placement. User can then edit the placement as needed before running it. Rename ns schedules to ns schedule status. Fix bug in schedule status where launched VMs weren't being counted properly.
Many improvements to the underlying code. Add
to vnc playback. Uses a template image to wait for a something to appear on the
WaitForIt) and then click the center of it (
minimega now creates symlinks so that users can reference VMs in the minimega directory by namespace and UUID.
vm cdrom API
Add "force" option to the eject API.
vm config virtio-ports API
Users can now specify a list of named virtio ports or a number of virtio ports to automatically generate names for (old behavior).
minimega now sanitizes VM names since it creates directories and argument strings using them.
Add subcommands to specify files to write
Add subcommand to configure bridge. Add
key option to differentiate tunnels.
mesh API and host completion
mesh size is one when there is only a single node. Add completion for
vm config schedule,
ns add-hosts and
ns del-hosts. Add
mesh list peers and
mesh list all subcommands. Resolve
vm config schedule.
cc tunnel API
Allow tunnels to be specified based on VM name or UUID.
vm launch API
Add option to specify a saved VM config name to launch.
minimega now coalescing repeated patterns in output strings as opposed to just
prefixes. For example,
foo2.bar would coalesce to
Shove the command ID into the
Data field of responses so that scripts can
easily determine which command they issued.
minimega now warns if it does not detect the
kvm kernel module.
vm flush API
Allow flushes to occur in parallel, speeding up flushing large experiments.
Updated several articles. The layout for articles was updated to include the header and sidebar.
Sort errors to make tests more reliable.
Many new features and improvements.
igor will likely be migrated to a
separate repo with separate release notes during the next release cycle.
Add support for basic BGP routing.
Add build constraints to control what gets built in different contexts. Add
option to specify target name. Change
-disk and add the option to
specify the disk format (currently allows qcow, qcow2, raw, and vmdk). Rename
-size. Change the default mbr location so that it matches
Improve performance using readline. Drop timeout option since we cannot use
readline in non-blocking mode. Add
Revert noVNC back to previous version due to problems with v1.0.0. Change
-console flag to string to allow specifying a path to minimega's domain
socket. Add new VM page to launch a VM from a saved config.
vm volume API
Automatically create the volume source if it does not exist.
Filesystem does not exist
If a container filesystem does not exist, minimega will now print a more useful error message.
Fix issues with container filesystems failing to unmount.
Quoting with minimega -e
Fix an issue with quoted commands.
vm qmp API
The API now attempts to unmarshal the JSON object before sending it to QMP to prevent malformed JSON from borking the connection.
vm config schedule API
minimega will now return an error if the host is not in the namespace at the
vm config schedule is called.
Properly handle connection errors
Fix a rare crash in minimega due to connection errors.
cc response API
Fix missing responses when using prefixes.
vm config cpu API
Fix bug where we ignored the first line of output in versions where QEMU does not include a header.
vm info API
Fix a bug where the VM PID was not copied to the head node.
Fix double expansion and only replace the first full word on a line.
minimega is available in several ways, both as pre-built distributions and source. See the installing guide for more information.
minimega is available as an x86-64 debian package, available here. It is known to work in debian 9 (stretch) and ubuntu 16.04. It is known not to work on debian 10 (buster).
A pre-built, x86-64 distribution is available in a single distributable tarball
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
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.10+ compiler and libpcap headers.