tinies and vmstart (vmo) update

Big update for the tinies and vmstart (now vmo).

vmo

The vmo script (previously vmstart) that can create and manage a cluster of VMs has been deeply revised. We have both closed bugs, refactored existing code and added new features, including the ability to add an existing qcow2 disk or to completely delete all left-over disks. Here is the new full help page:

EXTENDED HELP

The script launches a set of VMs connected to a bridge.
All the VMs have a static IP and a common gateway.
The number of VMs will be requested by the script.

A full path to the directory containining the base image/s should be provided,
either with vmo --path or by setting the PER variable in the VARIABLES section of the script.

Other variables that can be changed in the VARIABLES section of the script:
- IP: IP class
- GW1: gateway
- MEM: initial memory assigned to each VM
- CPU: number of CPUs assigned to each VM
- ROOTPASS: VMs root password
- DELAY: delay between the start of each VM
- SSHA: root SSH public key to connect to the VMs without password


USAGE

--path or -p:   First thing to do: sets/resets the full path to directory containing base image/s that you want to use for this project
--start or -s:  Start the VMs
--kill or -k:   Kill all running VMs (can also use --off or --stop)
--del or -dl:   Delete the VMs disks (such as vmX.qcow2, diskX_vmX.qcow2 - preserves pdisks)
--check or -c:  Check hostname/IP of each VM
--vsock or -v:  Execute commands on the VMs with vsock
--nic or -n:    Add a NIC to a VM
--cpu or -cpu:  Hotplug a CPU
--mem or -mem:  Hotplug RAM
--disk or -d:   Hotplug disks
--att or -a:    Hotplug an existing qcow2 disk. the disk name should start with 'pdisk'
--usb or -u:    Attach a USB device
--migr or -mg:  Migrate VMs between nodes
--data or -db:  Check the nodes/VMs database
--img or -i:    Create an image of the running VM
--cmd or -cm:   Read a list of commands from a .cmd file and pass them to a VM
--help or -h:   Display basic help page
--help-full:    Display extended help page (can also use -H)


The script can be executed multiple times:
The number of running VMs will be displayed and another set of VMs can be launched.
The new set will be connected to the common bridge.

To check the running VMs:
	vmo --check

To check the VMs with vsock, run vmo -v and insert:
	echo '------------------------------'; uname -n; ip a | grep eth0

To access the VMs with vsock:
	vsock_cli <cid> 1961

where <cid> == VM number + 2 (for VM2 the command would be vsock_cli 4 1961)

To access the VMs with SSH:
	sshe vm_IP

Tinies

  • Added standalone fallocate because BusyBox’s version cannot dig holes.
  • qemu is now version 7.0
  • BusyBox has been recompiled from the latest Git version
  • zfs-2.1.5-1 / zfs-kmod-2.1.99-1332_gd22dd77c4
  • sqlite3 3.39.2
  • ssh OpenSSH_9.0p1, OpenSSL 1.1.1q
  • last ksmbd support kernel and userspace
  • Kernel updated to the latest version: 5.19.8

To use the tiny linux images without the vmo script, the password is: m1cr0l1nux