User Tools

Site Tools


computing:virtmanagerhell

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
computing:virtmanagerhell [2023/01/15 17:44] oemb1905computing:virtmanagerhell [2026/04/05 00:45] (current) oemb1905
Line 7: Line 7:
 ------------------------------------------- -------------------------------------------
  
-To make a VM from the command line, do the following. Note that this recipe assumes you have already created your virtual switch, br0. It also presumes you have already created your virtual disk, and if you have not, simply run ''sudo qemu-img create -f raw new.img 1000G''.+To make a VM from the command line, do the following. Note that this recipe assumes you have already created your virtual switch, br0. It also presumes you have already created your virtual disk, and if you have not, simply run ''sudo qemu-img create -f raw new.img 1000G''Here's a basic block:
  
   sudo virt-install --name=new.img \   sudo virt-install --name=new.img \
Line 18: Line 18:
   --location=/mnt/vms/isos/debian-11.4.0-amd64-netinst.iso \   --location=/mnt/vms/isos/debian-11.4.0-amd64-netinst.iso \
   --network bridge:br0   --network bridge:br0
 +
 +Here's a more complex block, that enables trim on vdd, uses a preseed.cfg file to automate install, establishes a custom vnet name, enables the guest agent, and opens a terminal/console inside the shell of the host to manage the install itself:
 +
 +  virt-install --name=domain.com.qcow2 \
 +    --os-variant=debian12 \
 +    --vcpu=2 \
 +    --memory 4096 \
 +    --disk path=/mnt/machine/domain.com.qcow2,driver.discard=unmap \
 +    --check path_in_use=off \
 +    --graphics none \
 +    --location=/mnt/isos/debian-13.1.0-amd64-netinst.iso \
 +    --network bridge:br0,target=domain-com \
 +    --channel unix,target_type=virtio,name=org.qemu.guest_agent.0 \
 +    --initrd-inject=/mnt/configs/${hostname}/preseed.cfg \
 +    --extra-args="auto=true priority=critical preseed/file=/preseed.cfg console=ttyS0,115200n8"
  
 To clone an existing image, do the following: To clone an existing image, do the following:
Line 127: Line 142:
      
   cd /mnt/vms/backups/vm1-backup-dir/   cd /mnt/vms/backups/vm1-backup-dir/
-  qemu-img create -f qcow2 vm1-backup 32G+  qemu-img create -f qcow2 vm1-backup.qcow2 32G
   virsh attach-disk guestOS.qcow2 \   virsh attach-disk guestOS.qcow2 \
     --source /mnt/vms/backups/vm1-backup-dir/vm1-backup \     --source /mnt/vms/backups/vm1-backup-dir/vm1-backup \
Line 220: Line 235:
  
   kpartx -d debian10.img   kpartx -d debian10.img
 +  
 +User and group perms:
 +
 +  adduser libvirt-qemu kvm
 +  adduser cockpit-ws kvm
 +  newgrp kvm
 +
 +Add network interface as custom name for easy tracking:
 +
 +<code>
 +  virsh edit domain.com.qcow2
 +  
 +  <interface type='bridge'>
 +    <mac address='11:23:11:7b:99:33'/>
 +    <source bridge='br0'/>
 +    <target dev='domain-com'/>
 +    <model type='virtio'/>
 +    <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
 +  </interface>
 +</code>
 +
 +Make sure that Cockpit can access a terminal:
 +
 +<code>
 +  virsh edit domain.com.qcow2
 +  <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
 +    <listen type='address' address='127.0.0.1'/>
 +  </graphics>
 +</code>
 +
 +If you don't have video enabled, do the following (also needed for Cockpit Terminal rendering):
 +
 +Option 1 (cirrus):
 +<code>
 + <video>
 +   <model type='cirrus' vram='16384' heads='1' primary='yes'/>
 +   <address type='pci' domain='0x0000' bus='0x10' slot='0x01' function='0x0'/>
 + </video>
 +</code>
 +
 +Option 2 (qxl)
 +<code>
 + <video>
 +   <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
 + </video>
 +</code>
 +
 +Option 3 (use commands)
 +  virt-xml domain.com.qcow2 --add-device --graphics vnc,listen=127.0.0.1
 +  virt-xml domain.com.qcow2 --add-device --video qxl
 +  virsh reboot domain.com.qcow2
 +
 +Add virtiofs mount point. Here's two, note the staggered bus entry of ''0x07'' vs. ''0x08'':
 +
 +<code>
 +  <filesystem type='mount' accessmode='passthrough'>
 +    <driver type='virtiofs'/>
 +    <source dir='/mnt/support1'/>
 +    <target dir='support1'/>
 +    <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
 +  </filesystem>
 +  <filesystem type='mount' accessmode='passthrough'>
 +    <driver type='virtiofs'/>
 +    <source dir='/mnt/support2'/>
 +    <target dir='support2'/>
 +    <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
 +  </filesystem>
 +</code>
 +
 +Then, inside the VM:
 +
 +  mkdir -p /mnt/support1
 +  mkdir -p /mnt/support2
 +  nano /etc/fstab
 +  support1   /mnt/support1   virtiofs   defaults,_netdev   0 0
 +  support2   /mnt/support2   virtiofs   defaults,_netdev   0 0
 +  
 +If you find ''virsh console domain.com.qcow2'' does not provide a functioning terminal, then run this inside the guest:
 +
 +  sudo systemctl enable serial-getty@ttyS0.service
 +  sudo systemctl start serial-getty@ttyS0.service
 +
 +Migrating an existing VDD and virsh instance ... just dump or copy paste the .xml with ''virsh dump'' or ''virsh edit'', then create a new xml file, typically in ''/var/lib/libvirtd/qemu'', then run:
 +
 +  virsh define host.com.xml
 +  virsh start host.com
 +  
 +You should for sure check the network interface and MAC address, the storage location directory, and obviously run through anything else that might be different on the target migration host.
  
- --- //[[jonathan@haacksnetworking.org|oemb1905]] 2023/01/15 10:31//+ --- //[[alerts@haacksnetworking.org|oemb1905]] 2026/04/05 00:42//
computing/virtmanagerhell.1673804668.txt.gz · Last modified: by oemb1905