Module 40: Injecting Files

Introduction

You can inject files into a HDD image without booting a virtual machine.

minimega

First let’s take a snapshot of a disk:

disk snapshot windows7.qc2 window7_miniccc.qc2

If the destination name is omitted, a name will be randomly generated and the snapshot will be stored in the files/ directory. Snapshots are always created in the files/ directory.

To inject files into an image:

disk inject window7_miniccc.qc2 files "miniccc":"Program Files/miniccc"

Each argument after the image should be a source and destination pair, separated by a colon (‘:‘). If the file paths contain spaces, use double quotes. Optionally, you may specify a partition (partition 1 will be used by default):

disk inject window7_miniccc.qc2:2 files "miniccc":"Program Files/miniccc"

You can optionally specify mount arguments to use with inject. Multiple options should be quoted. For example:

disk inject foo.qcow2 options "-t fat -o offset=100" files foo:bar

Disk image paths are always relative to the files/ directory. Users may also use absolute paths if desired.

Newer versions of minimega

In order to be namespace-aware, newer versions of minimega require that disk images be in the files/ directory (/data/mmfiles if booted using startMM.sh)

qemu-nbd

Manually you can inject files using QEMU Network Block Device mounts.

su -
modprobe nbd max_part=8
qemu-nbd --connect /dev/nbd0 linux.qcow2
mkdir -p /mnt/kvm
sudo mount /dev/nbd0p1 /mnt/kvm
echo "test" > /mnt/kvm/test.txt
sudo umount /mnt/kvm
sudo qemu-nbd --disconnect /dev/nbd0

Special Note

minimega is only able to inject files into images that do NOT use LVM.

Authors

The minimega authors

14 Jun 2017