Difference between revisions of "R-Car/Virtualization/Libvirt"

From eLinux.org
Jump to: navigation, search
m (Virsh)
(Virt-manager)
Line 110: Line 110:
 
= Virt-manager =
 
= Virt-manager =
  
 +
Virt-manager is a GUI for libvirt.
 +
You can use it to manage guests created with virsh.
 +
 +
You can run it either on the machine hosting the guests:
 +
<pre>
 +
$ virt-manager
 +
</pre>
 +
or run it locally, and let it connect to the machine hosting the guests:
 +
<pre>
 +
$ virt-manager -c qemu+ssh://my-virtual-host/system
 +
</pre>
 +
 +
Note that just running 'virt-manager' over ssh with X forwarding doesn't seem to work.
  
 
= References =
 
= References =
  
 
* https://libvirt.org/
 
* https://libvirt.org/

Revision as of 05:34, 1 February 2018

Libvirt virtualization API

Virsh

'virsh' is a command line interface to libvirt.

It can be used interactively:

$ virsh 
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

or by passing a subcommand directly:

$ virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     demo                           shut off

Preparation

Before you can instantiate a guest, you have to create an XML file describing the guest. Fortunately virsh provides a way to convert your QEMU command line invocation into an XML file. E.g.

$ virsh domxml-from-native qemu-argv <(echo /usr/bin/qemu-system-aarch64 -m 1024 -cpu cortex-a57 -M virt \
        -nographic -serial pty -kernel /path/to/linux-arm64-virt/arch/arm64/boot/Image) | \
        sed -e 's/unnamed/demo/' > demo.xml

Caveats:

  • Use an absolute path when referring to the QEMU binary,
  • As libvirt's console doesn't connect to QEMU's stdout, but to a pty, your QEMU command line must include '-serial pty',
  • Make sure 'libvirt-qemu' has permissions to access the kernel Image (and write access to the directory containing it?).

Virsh subcommands

Create (define) a guest (domain) from an existing XML file:

$ virsh define demo.xml
Domain demo defined from demo.xml

Start a created guest:

$ virsh start demo
Domain demo started

Connect to the console of a running guest:

$ virsh console demo
Connected to domain demo
Escape character is ^]



BusyBox v1.24.2 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 DESIGNATED DRIVER (Bleeding Edge, 50072)
 -----------------------------------------------------
  * 2 oz. Orange Juice         Combine all juices in a
  * 2 oz. Pineapple Juice      tall glass filled with
  * 2 oz. Grapefruit Juice     ice, stir well.
  * 2 oz. Cranberry Juice
 -----------------------------------------------------

Stop (destroy) a running guest:

$ virsh destroy demo
Domain demo destroyed

Delete (undefine) a created guest:

$ virsh undefine demo
Domain demo has been undefined

List all running guests (use '--all' for all defined guests):

$ virsh list
 Id    Name                           State
----------------------------------------------------
 5     demo                           running

Dump the XML describing a guest:

$ virsh dumpxml demo
<domain type='qemu' id='4'>
  <name>demo</name>
  <uuid>ff9c71e0-53d4-4222-b0b9-70fd00a8f840</uuid>
  ...
</domain>

Virt-manager

Virt-manager is a GUI for libvirt. You can use it to manage guests created with virsh.

You can run it either on the machine hosting the guests:

$ virt-manager

or run it locally, and let it connect to the machine hosting the guests:

$ virt-manager -c qemu+ssh://my-virtual-host/system

Note that just running 'virt-manager' over ssh with X forwarding doesn't seem to work.

References