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/29 23:31] – oemb1905 | computing:virtmanagerhell [2022/11/12 14:32] – 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 clone an existing image, do the following: |
+ | |||
+ | virt-clone \ | ||
+ | --original=clean \ | ||
+ | --name=sequoia \ | ||
+ | --file=/ | ||
+ | |||
+ | 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 | ||
| | ||
- | #eth0 (alt name ent8s0g) physical host base-connection | + | After expanding the virtual hard disk, open gparted in X passthrough / command line and expand the existing partition into as much of the the new space as you prefer. |
- | auto ent8s0g0 | + | |
- | iface ent8s0f0 inet static | + | |
- | address 8.25.76.160 | + | |
- | netmask 255.255.255.0 | + | |
- | gateway 8.25.76.1 | + | |
- | nameservers 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 | + | |
- | nameservers 8.8.8.8 | + | |
- | Once that's done, run '' | + | -- Archive: Grow a VM through Command Line Only -- |
- | sudo apt install resolvconf | + | These are two different attempts (both with 1 success each) of resizing |
- | echo nameserver 8.8.8.8 > /etc/resolv.conf | + | |
| | ||
- | Next up, it is time to configure | + | sudo apt install libguestfs-tools |
+ | |||
+ | After that, confirm | ||
+ | |||
+ | | ||
- | sudo nano / | + | Navigate to the directory it spit out, and back up the image and rename it before you proceed: |
- | This file should look like this (adjust to your use-case - and again, this is **inside the VM** Terminal, and __not__ on the Terminal of the physical host): | + | cd / |
+ | sudo cp / | ||
- | auto epr1 | + | Once you know the name of the .img file and the location of it, prepare the virtual file systems for expansion: |
- | iface epr1 inet static | + | |
- | 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 the guest/VM as epr1 - but remember, that's connected to the virtual switch and bridge through the previous steps, so don't worry. | + | virt-filesystems --long --parts --blkdevs -h -a / |
+ | |||
+ | Build a new, larger, container for the final disk, and set it aside for the merge/ | ||
- | | + | |
- | ip a | + | |
- | sudo apt install resolvconf | + | |
- | echo nameserver 8.8.8.8 > /etc/resolv.conf | + | |
- | At this point, I would probably reboot and then ping each external IP from a device outside of the network of the physical host. Everything should be rosy ;>. | + | Now it is time to resize the existing image, using the container you just created: |
+ | |||
+ | virt-resize --expand /dev/sda2 / | ||
+ | |||
+ | Okay, now we need to rename the new image we created to the name that virt-manager | ||
+ | |||
+ | 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 | ||
+ | |||
+ | |||
+ | --- // |