This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
computing:virtmanagerhell [2021/10/30 00:19] – oemb1905 | computing:virtmanagerhell [2022/11/12 14:35] – oemb1905 | ||
---|---|---|---|
Line 7: | Line 7: | ||
------------------------------------------- | ------------------------------------------- | ||
- | Alright, I am completely re-writing this as the old notes were just out of date and incomplete. | + | To make a VM from the command line, do the following. Note that this recipe assumes you have already created your virtual switch, br0. |
- | sudo nano /etc/network/interfaces | + | sudo virt-install --name=new \ |
+ | --os-type=Linux \ | ||
+ | --os-variant=debian10 \ | ||
+ | --vcpu=1 \ | ||
+ | --ram=2048 \ | ||
+ | --disk path=/mnt/vms/students/ | ||
+ | --graphics spice \ | ||
+ | --location=/ | ||
+ | --network bridge:br0 | ||
- | That file should look like this (adjust to your use-case, ofc): | + | To clone an existing image, do the following: |
- | + | ||
- | #eth0 (alt name ent8s0g) physical host base-connection | + | |
- | auto ent8s0g0 | + | |
- | iface ent8s0f0 inet static | + | |
- | address 8.25.76.160 | + | |
- | netmask 255.255.255.0 | + | |
- | gateway 8.25.76.1 | + | |
- | nameserver 8.8.8.8 | + | |
- | #eth1 (alt name enp8s0g1) interface for bridge | + | |
- | auto enp8s0g1 | + | |
- | iface enp8s0g1 inet manual | + | |
- | auto br0 | + | |
- | iface br0 inet static | + | |
- | address 8.25.76.159 | + | |
- | netmask 255.255.255.0 | + | |
- | gateway 8.25.76.1 | + | |
- | bridge_ports enp8s0g1 | + | |
- | nameserver 8.8.8.8 | + | |
- | Once that's done, run '' | + | virt-clone \ |
+ | --original=clean \ | ||
+ | --name=sequoia \ | ||
+ | --file=/mnt/vms/ | ||
- | echo nameserver 8.8.8.8 > / | + | If you have a legacy image that needs to be larger, then install a few tools and the proceed to expand the virtual hard disk as follows: |
+ | |||
+ | apt install qemu-img kpartx | ||
+ | qemu-img resize debian10.img +50G | ||
| | ||
- | Reboot | + | After expanding |
+ | |||
+ | virsh shutdown <old-name> | ||
+ | | ||
- | | + | The rest from here on out is my attempt at resizing an .img using tools exclusively from virsh / virt-manager. I have only succeeded twice doing this, and often get confused looking at the l00ps. |
+ | |||
+ | | ||
+ | |||
+ | After that, confirm the location of your virtual machine. | ||
+ | |||
+ | virsh dumpxml putnameofimagehere | xpath -e /domain/devices/disk/source | ||
- | This file should look like this (adjust | + | Navigate |
- | | + | |
- | | + | |
- | address 8.25.76.158 | + | |
- | netmask 255.255.255.0 | + | |
- | gateway 8.25.76.1 | + | |
- | nameservers 8.8.8.8 | + | |
- | The VM interface is listed inside | + | Once you know the name of the .img file and the location of it, prepare |
- | | + | |
- | ip a | + | |
- | sudo apt install resolvconf | + | |
- | sudo nano /etc/resolvconf/resolv.conf.d/tail | + | |
| | ||
- | Enter the name server as follows: | + | Build a new, larger, container for the final disk, and set it aside for the merge/ |
+ | |||
+ | truncate -s 128G / | ||
+ | |||
+ | Now it is time to resize the existing image, using the container you just created: | ||
+ | |||
+ | virt-resize --expand /dev/sda2 / | ||
| | ||
- | nameserver 8.8.8.8 | + | Okay, now we need to rename the new image we created to the name that virt-manager is looking for, i.e., the name of the original image. |
- | At this point, I would probably reboot and then from within the VM, ping 8.8.8.8, and then ping google.com to ensure you have link and upstream DNS. Everything should be rosy ;> | + | cp / |
+ | mv / | ||
- | --- // | + | Made yet another attempt to do by command line in 2022. Install packages required for resizing virtual hard disks and for listing partitions inside virtual hard disks. |
+ | |||
+ | apt install qemu-img kpartx | ||
+ | |||
+ | Add 50G of size to the emulated physical hard disk. This is not to be confused with adding space to, or extending, the partition inside it. | ||
+ | |||
+ | qemu-img resize debian10.img +50G | ||
+ | |||
+ | Mount the image file in the present directory, and show all of its mappings. | ||
+ | |||
+ | kpartx -v -a debian10.img | ||
+ | |||
+ | Now, it is time to extend the partition. Your loops might have different #s after, use tab to find the right one (prolly largest #). | ||
+ | |||
+ | parted /dev/loopXX print | ||
+ | |||
+ | You will get output like this: | ||
+ | |||
+ | Model: Unknown (unknown) | ||
+ | Disk / | ||
+ | Sector size (logical/ | ||
+ | Partition Table: loop | ||
+ | Disk Flags: | ||
+ | Number | ||
+ | | ||
+ | |||
+ | Remove the appropriate mapping. In my case, I am extending the boot volume of a virtual machine, so it was entry 1. | ||
+ | |||
+ | parted /dev/loopXX rm 1 | ||
+ | |||
+ | Extend the partition from the start of the mapping you removed to the upper size limit listed in Disk. | ||
+ | |||
+ | parted /dev/loopXX mkpart primary ext4 0.00B 142GB | ||
+ | |||
+ | Verify the new mapping. | ||
+ | |||
+ | parted /dev/loopXX print | ||
+ | |||
+ | Run fsck before resizing the file system. You here appending " | ||
+ | |||
+ | e2fsck -f / | ||
+ | |||
+ | Extend the file system inside the partition to the entirety of the partition table. | ||
+ | |||
+ | resize2fs / | ||
+ | |||
+ | Unmount the image | ||
+ | |||
+ | kpartx -d debian10.img | ||
+ | |||
+ | |||
+ | --- // |