KVM

Qemu Image

Create New Image

qemu-img create -f qcow2 backing.qcow2 10G

Create Image From Backing File

qemu-img create -f qcow2 -b backing.qcow2 increment.qcow2

Merge Increment image to Backing File

將 increment image 整合進入 backing file。首先,了解 backing file 的路徑。

$ qemu-img info increment.qcow2
image: increment.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 19G
cluster_size: 65536
backing file: backing.qcow2
...

將 backing file 複製一份出來,因為最終會把 increment image 整合進入 backing file。

cp backing.qcow2 ToBeMerged.qcow2
qemu-img rebase -b ToBeMerged.qcow2 increment.qcow2
qemu-img commit increment.qcow2

Mount qcow2 image

ref. Mounting raw and qcow2 VM disk images

modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 image.qcow2
mount /dev/nbd0p1 /mnt/image
umount /mnt/image
qemu-nbd -d /dev/nbd0

Resize KVM Virtual Disk

ref.

Before you start,

resize virutal disk

qemu-img resize old.img +20G
cp old.img new.img

check partition

sudo virt-filesystems --long --parts --blkdevs -h -a  new.qcow2 
Name       Type       MBR  Size  Parent
/dev/sda1  partition  -    1.0M  /dev/sda
/dev/sda2  partition  -    1.0G  /dev/sda
/dev/sda3  partition  -    19G   /dev/sda
/dev/sda   device     -    40G   -

resize partition

virt-resize --expand /dev/sda3 old.qcow2 new.qcow2

verify partition

sudo virt-filesystems --long --parts --blkdevs -h -a  new.qcow2 
Name       Type       MBR  Size  Parent
/dev/sda1  partition  -    1.0M  /dev/sda
/dev/sda2  partition  -    1.0G  /dev/sda
/dev/sda3  partition  -    39G   /dev/sda
/dev/sda   device     -    40G   -

USB

Boot from USB Image

image file from usb

sudo dd in=/dev/sdX out=/path/to/usb.img

use image file as harddrive

qemu-kvm -hda usb.img

Virt-builder - Build virtual machine images quickly

Install

sudo apt install libguestfs-tools
virt-builder -l

Usage

sudo virt-builder debian-10 --size 20G -o debian-10.raw --root-password disable --hostname usp --timezone Asia/Taipei --run ./post.sh
sudo qemu-img convert -c -O qcow2 debian-10.raw debian-10.qcow2
sudo qemu-img info debian-10.qcow2

Post-Install Script

post.sh

useradd -m -G sudo -s /bin/bash -U k100
echo k100:k100pass | chpasswd
apt install sudo
dpkg-reconfigure openssh-server
sed -i 's/ens2/ens3/' /etc/network/interfaces
dhclient ens3

VMWare

VMDK to QCOW2

qemu-img convert -O qcow2 zimbra-000001.vmdk zimbra.qcow2

QCOW2 to VMDK

qemu-img convert -O vmdk zimbra-000001.qcow2 zimbra.vmdk

Windows Guest

ref. Creating Windows virtual machines using virtIO drivers :: Fedora Docs Site

Direct download Latest virtio-win iso