This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| computing:virtmanagerhell [2026/03/29 15:02] – oemb1905 | computing:virtmanagerhell [2026/08/15 10:01] (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 '' | + | 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 virt-install --name=new.img \ | sudo virt-install --name=new.img \ | ||
| Line 18: | Line 18: | ||
| --location=/ | --location=/ | ||
| --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/ | ||
| + | |||
| + | virt-install --name=domain.com.qcow2 \ | ||
| + | --os-variant=debian12 \ | ||
| + | --vcpu=2 \ | ||
| + | --memory 4096 \ | ||
| + | --disk path=/ | ||
| + | --check path_in_use=off \ | ||
| + | --graphics none \ | ||
| + | --location=/ | ||
| + | --network bridge: | ||
| + | --channel unix, | ||
| + | --initrd-inject=/ | ||
| + | --extra-args=" | ||
| To clone an existing image, do the following: | To clone an existing image, do the following: | ||
| Line 249: | Line 264: | ||
| </ | </ | ||
| </ | </ | ||
| + | |||
| + | If you don't have video enabled, do the following (also needed for Cockpit Terminal rendering): | ||
| + | |||
| + | Option 1 (cirrus): | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Option 2 (qxl) | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Option 3 (use commands) | ||
| + | virt-xml domain.com.qcow2 --add-device --graphics vnc, | ||
| + | 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 '' | Add virtiofs mount point. Here's two, note the staggered bus entry of '' | ||
| Line 267: | Line 304: | ||
| </ | </ | ||
| + | Then, inside the VM: | ||
| + | mkdir -p / | ||
| + | mkdir -p / | ||
| + | nano /etc/fstab | ||
| + | support1 | ||
| + | support2 | ||
| + | | ||
| + | If you find '' | ||
| + | |||
| + | 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 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. Sometimes, virsh fails to shutdown using the agent method because the agent crashes. Instead of restarting, the agent stays crashed because virsh binds it to a specific socket. To change that, keep '' | ||
| + | |||
| + | < | ||
| + | cat > / | ||
| + | [Unit] | ||
| + | Description=QEMU Guest Agent | ||
| + | BindsTo= | ||
| + | Wants=dev-virtio\x2dports-org.qemu.guest_agent.0.device | ||
| + | After=dev-virtio\x2dports-org.qemu.guest_agent.0.device | ||
| + | Conflicts=shutdown.target | ||
| + | Before=shutdown.target | ||
| + | |||
| + | [Service] | ||
| + | ExecStart=/ | ||
| + | Restart=always | ||
| + | RestartSec=3s | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | EOF | ||
| + | |||
| + | systemctl daemon-reload | ||
| + | systemctl restart qemu-guest-agent | ||
| + | </ | ||
| + | I am testing this still but it takes time. The agents only crash after extended use, so letting everything run while this is in production, then checking back up logs later and seeing if there was improvement on the few problem instances. | ||
| - | --- // | + | --- // |