Re: New version of my kvmctl script

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



New version. Lots of small improvements and couple of new features.

- Ability to change CD for virtual machine
- Ability to add and remove USB devices to virtual machines
- Init script (in /usr/local/share/doc/kvmctl/kvmctl.init) to start
and stop virtual machines
  during boot/shutdown


Installation instructions:
-----------------------------


. Install KVM

. Download and untar kvmctl package
	- cd / ; tar xzvf kvmctl-<version>.tar.gz

. Install needed utilities
	- sudo (sudo)
	- brctl (bridge-utils)
	- socat	(socat)
	- tunctl (uml-utilities)
	- ionice (util-linux)
	- nice (coreutils)
	- taskset (util-linux)
	- $EDITOR

. Create group kvm and add users who should be able to control VMs
	- usermod  -a -G kvm <username>

. Set /dev/kvm permissions
	- /etc/udev/rules.d/91-permissions.rules -> KERNEL=="kvm",      GROUP="kvm"

. To be able to use USB devices edit /etc/rcS.d/S02mountkernfs.sh
	Change line
	domount usbfs usbdevfs /proc/bus/usb usbfs -onodev,noexec,nosuid
	to
	domount usbfs usbdevfs /proc/bus/usb usbfs  -
nodev,noexec,nosuid,devmode=0660,devgid=117
	(117 is gid of the kvm group)


. Create group kvm (gid 117 in package)


. If kvm gid != 117 ->
	chgrp kvm /usr/local/bin /var/log/kvmctl /var/run/kvmctl
/etc/qemu-ifup /etc/qemu-ifdown
	chgrp kvm /etc/kvmctl /etc/kvmctl/cfg

. Set up sudo
	- install sudo
	- edit /etc/sudoers
		Cmnd_Alias      KVM=/sbin/ifconfig,/usr/sbin/brctl,/usr/sbin/tunctl
		%kvm     ALL=NOPASSWD: KVM


. Use /etc/kvmctl/cfg/example.cfg as a template for new VMs

. Set up network interfaces
	
	auto eth0
		iface eth0 inet manual

	auto br0
	iface br0 inet static
		address 192.168.0.1
		network 192.168.0.0
		netmask 255.255.255.0
		broadcast 192.168.0.255
		gateway 192.168.0.1
		bridge_ports eth0
		bridge_fd 9
		bridge_hello 2
		bridge_maxage 10
		bridge_stp off


	auto vbr0
		iface vbr0 inet static
		address 192.168.1.1
		netmask 255.255.255.0
		bridge_ports none
		bridge_fd 9
		bridge_hello 2
		bridge_maxage 12
		bridge_stp off



Usage
-----

- Start a virtual machine
   $ kvmctl vmname start

- Shutdown a virtual machine
   $ kvmctl vmname powerdown

   If guest doesn't power down in 30 seconds (configurable) it will be killed

- Show details of a virtual machine
   $kvmctl vmname details

- List all defined virtual machines and their status
   $ kvmctl list

- List all running virtual machines
   $ kvmctl list onlyrunning

- Show info about host USB devices
   $ kvmctl vmname hostusb

- Add USB device to guest
   $ kvmctl vmname addusb 058f:6610

- Remove same USB device
   $ kvmctl vmname delusb 058f:6610

- Set a virtual machine to start during boot
   $ kvmctl vmname onboot yes

   Warning is displayed if virtual machine is defined to use SDL display

- Check if virtual machine is started during boot
   $ kvmctl vmname onboot

- Set a virtual machine not to start during boot
   $ kvmctl vmname onboot no

- Print some info of the host every 10 seconds
   $ kvmctl monhost 10

   If interval is omitted default value of 30 seconds is used

- Change CD of the virtual machine
   $ kvmctl chcd /path/to/my/iso/image.img


Configration files
------------------

/etc/kvmctl/vm.conf
This file is used by root (or anyone who has write access) to list and
manage index numbers (VNC numbers). Also nice levels and CPU affinity
are defined here.

/etc/kvmctl/global.conf
Path defines go here

/etc/kvmctl/cfg/*
Configuration files of the virtual machines. See example.cfg for instructions.

Utility scripts
---------------

/usr/local/bin/kvmctledit
Is used to edit vm.conf. Simply starts $EDITOR.

/usr/local/bin/kvmctl_fixperm
Scans all config files for disk images and makes sure they are
writable by kvm group. Works for files, lvm volumes and iSCSI volumes.

/usr/local/share/doc/kvmctl/kvmctl.init
Init script that can be copied to /etc/init.d. Manages virtual
machines starting and stopping automatically during boot.


Few notes
---------
- Make sure you have configuration for each virtual machine defined in vm.conf

- Edit /etc/qemu-ifup and make sure it uses same bridge names your system has

- Don't use tabulator after virtual machine name in vm.conf


Thats about it. Give it a try and let me know if you find it helpful.
Most likely there are bugs but it works pretty well for me. If it
breaks something it is very unfortunate but you're the only one to
blame :)




Download http://81.209.59.200/kvmctl-0.3.0.tar.gz
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux