# QEMU

- [QEMU](#qemu)
  - [QCOW2](#qcow2)
    - [QCOW2 Snapshots](#qcow2-snapshots)
    - [Convert qcow to bootable drive](#convert-qcow-to-bootable-drive)
    - [Convert bootable drive to qcow](#convert-bootable-drive-to-qcow)
  - [ISO](#iso)
  - [ISO Access Denied on Boot](#iso-access-denied-on-boot)
  - [Resize an image](#resize-an-image)

## QCOW2

QCOW2 (KVM, Xen)        qcow2
QED (KVM)               qed
raw                     raw
VDI (VirtualBox)        vdi
VHD (Hyper-V)           vpc
VMDK (VMware)           vmdk

### QCOW2 Snapshots

```bash
# Create a snapshot
qemu-img snapshot -c snapshot-name /var/lib/libvirt/images/vm-image.qcow2

# List snapshots for a given image
qemu-img snapshot -l /var/lib/libvirt/images/vm-image.qcow2

# Restore snapshot
qemu-img snapshot -a snapshot-name /var/lib/libvirt/images/vm-image.qcow2
```

### Convert qcow to bootable drive

```bash
qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/vm-image.qcow2 /dev/sdb
```

### Convert bootable drive to qcow

```bash
dd if=/dev/sda of=/home/ducoterra/Downloads/toshiba.raw conv=noerror,sync,notrunc,sparse status=progress
qemu-img convert -f raw -O qcow2 -p /dev/sdd /var/lib/libvirt/images/toshiba.qcow2
```

If you need to resize a windows partition to non-continuous space simply grow the
last partition, shrink it to the end of the drive, then grow the windows partition
with gparted.

## ISO

```bash
pacman -S cdrtools
mkisofs -r -iso-level 4 -l -o /tmp/arch-files.iso ./arch
```

## ISO Access Denied on Boot

Turn off Secure Boot in the VM. Bios -> Device Manager -> Secure Boot Configuration -> Uncheck Attempt Secure Boot

## Resize an image

```bash
# Add more disk space
qemu-img resize <my_vm>.raw +10G

# Grow the partition and filesystem. For ext4:
growpart /dev/vda 1
resize2fs /dev/vda1
```