# L'infra avancée :

## Exercice 1

### Lancer une machine

`qemu-img create -f qcow2 'C:\Program Files\qemu\testVM.qcow2' 10G`

`qemu-system-x86_64 -m 2048 -hda 'C:\_VMs\testVM.qcow2' -cdrom 'D:\Users\GaWin\Downloads\_Compressed\debian-13.1.0-amd64-netinst.iso' -boot d`

Pour lancer une machine depuis le disque :

`qemu-system-x86_64 -m 4096 -smp 4 -hda 'C:\_VMs\testVM.qcow2' -boot c`

- -boot d : Boot sur le CD/ROM
- -boot c : Boot sur le Disque Dur
- m XXXX : Alloue une mémoire RAM fixe
- smp X : Alloue un nombre de coeurs virtuels fixe

Pour convertir le .qcow2 en .vdi, dans l'interface c'est plus clair.

## Exercice 2

### Créer une VM

Pour refaire une VM en CLI :

```
vboxmanage createvm --basefolder="C:\_VMs\VirtualCreationCLI" --register --name "VirtualBoxCLI"

vboxmanage storagectl "VirtualBoxCLI" --name "sata-controller" --add sata --controller IntelAHCI --portcount 1 --bootable on

vboxmanage storageattach "VirtualBoxCLI" --storagectl "sata-controller" --port 0 --device 0 --type hdd --medium ".\test_copy.vdi"

vboxmanage modifyvm "VirtualBoxCLI" --memory 4096 --cpus 4
```

### Convertir un disque virtuel .qcow2 en CLI

https://github.com/michaelrudy/qemu-img-convert

D'abord, dans la VM d'origine, il faut préparer la transition :

```
sudo tee /etc/dracut.conf.d/hyperv.conf >/dev/null <<'EOF'
add_drivers+=" hv_vmbus hv_storvsc hv_netvsc hv_utils "
hostonly="no"
EOF

sudo dracut -f --kver "$(uname -r)"

ls -lh /boot/initramfs-$(uname -r).img ### pour confirmer

cat /etc/fstab
blkid

sudo shutdown -h now
```

`qemu-img convert -f qcow2 -O vhdx -o subformat=dynamic .\test.qcow2 .\test_copy.vhdx`

Bizarrement, pour que la conversion soit prise en compte par Hyper-V, il faut lancer cette commande :

`fsutil sparse setflag .\test_copy.vhdx 0`

### Cloner une VM en CLI

Exporter pour VirtualBox
`vboxmanage clonevm  "VirtualBoxCLI" --basefolder ".\NewVirtualBoxCLI" --name "NewVirtualBoxCLI" --register`

Exporter pour HyperV
```
Export-VM -Name "HyperVCLI" -Path "C:\_VMs\HyperVCLI" -CaptureLiveState CaptureSavedState

Import-VM -Name "NewHyperVCLI" -Path "C:\_VMs\HyperVCLI\{ID-de-ses-morts}.vmcx" -Copy -GenerateNewId -VirtualMachinePath "C:\_VMs\NewHyperVCLI" -VhdDestinationPath "C:\_VMs\NewHyperVCLI"
```