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: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 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. After this step, restart the networking service and check to see if your IP address is assigned. | + | |
- | + | ||
- | sudo service networking restart | + | |
- | ip a | + | |
- | sudo apt install resolvconf | + | |
- | sudo nano / | + | |
- | + | ||
- | Enter the name server as follows: | + | |
| | ||
- | nameserver 8.8.8.8 | + | 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. |
- | 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 ;> | + | -- Archive: Grow a VM through Command Line Only -- |
- | Resize an .img with virt-manager, | + | These are two different attempts (both with 1 success each) of resizing .img files from the command line. Resize an .img with virt-manager, |
| | ||
sudo apt install libguestfs-tools | sudo apt install libguestfs-tools | ||
Line 91: | Line 65: | ||
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 | ||
+ | |||
+ | |||
+ | --- // |