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/11/02 07:34] – 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=/ | |
- | Reboot the host and ping 8.8.8.8 and google.com to ensure you have link and upstream DNS. Next up, it is time to configure the guest / VM machine. | + | |
- | sudo nano / | + | 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: |
- | 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): | + | apt install qemu-img kpartx |
- | + | | |
- | | + | |
- | 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. | + | |
- | + | ||
- | sudo service networking restart | + | |
- | ip a | + | |
- | sudo apt install resolvconf | + | |
- | sudo nano / | + | |
| | ||
- | Enter the name server | + | After expanding |
| | ||
- | | + | |
+ | virsh domrename < | ||
- | 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 ;> | + | 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. |
- | + | ||
- | Resize an .img with virt-manager, for example, expanding a 64GB disk to a 124GB disk. Start by installing the optional tools for this: | + | |
| | ||
sudo apt install libguestfs-tools | sudo apt install libguestfs-tools | ||
Line 91: | Line 66: | ||
mv / | 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 | ||
+ | |||
+ | |||
+ | --- // |