Last updated on November 17, 2020 by Dan Nanni
This is a follow-up to the Xen hypervisor installation article. By this point you have a workstation ‒ perhaps an old laptop or desktop ‒ running the Xen hypervisor and Debian Jessie.
You can now add a few guest machines. This procedure installs a copy of Debian Jessie into a Xen image, then uses that image to start a guest domain. The procedure uses the Xen tools xl
and xen-create-image
.
The Xen hypervisor software running on your workstation is a VMM (Virtual Machine Monitor) created by the Xen Project. This software is a thin layer running on top of the hardware. Its only job is to allow many virtual machines to run on one physical machine.
Each virtual machine running on Xen is called a domain. You can run as many domains as you can fit on your workstation. The first domain is already running Debian OS you already installed and is a virtual machine running on Xen.
The first domain is special. It is the only domain with the privilege of telling Xen what to do. No other domain gets to tell Xen to allocate resources, start a machine or connect to a console. This domain is called "Domain-0
", or the control domain. You can use the xl
command to show this domain.
root@debian:~# xl list
Name ID Mem VCPUs State Time(s) Domain-0 0 3868 2 r----- 48.0
Other domains cannot control Xen. These are called guest domains or "Domain-U
" (that's U
for Unprivileged).
Xen provides two ways of creating virtual machines, called PV
(Para-Virtualized) and HVM
(Hardware Virtual Machine). PV is more efficient, but it requires special kernel software to run ‒ it doesn't work for non-Linux systems. If you have started a Linux EC2 instance on Amazon Web Services, you may have noticed it is called a PV guest.
Create a new image using the xen-create-image
command. This is a Perl script that bundles up the many tasks required to make a Xen image into one command.
The xen-create-image
command is part of Xen-tools which helps you install Debian, Ubuntu and CentOS guests.
Log into your workstation as the root.
Install the xen-tools
package.
# apt-get install xen-tools
A Xen image is a copy of a boot disk. Once you put the image together with a configuration file describing what the virtual machine should look like, you can run your first guest domain.
# xen-create-image --hostname=my-pv-guest --lvm=vg0 --dhcp --memory=512mb --pygrub --dist=jessie
The first time you create a Xen image using the above command, it will take a couple of minutes or more since necessary .deb packages will be downloaded and cached locally as part of Xen image creation. Make sure that the Xen host is connected to the Internet.
After successful run, the xen-create-image
command creates a xen configuration file /etc/xen/my-pv-guest.cfg
. This file contains instructions on how to create the guest machine. For instance, the .cfg
file tells Xen to use PyGRUB to boot the kernel ‒ this is one of the special tricks requried for PV guests.
The xen-create-image
command carries out many other actions, including the following.
vg0
volume group (a 4GB root partition and a 128MB swap partition).
debootstrap
to download .deb packages and install Debian Jessie.
/usr/share/xen-tools/jessie.d/40-setup-networking
to tell the new OS to use DHCP.
Check your work by making sure that new LVM volumes have appeared.
root@debian:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert my-pv-guest-disk vg0 -wi-a----- 4.00g my-pv-guest-swap vg0 -wi-a----- 128.00m
The above command shows two new volumes ‒ one acting as the root partition and the other as the swap disk.
As part of its run, the xen-create-image
command also creates a random password for the root account which you will need to log in.
Find the root password in the activity log.
# cd /var/log/xen # grep Password my-pv-guest.log
Root Password : 6irURvu4j4mjw7pGGzuGySi
The password is a very long string.
Now you have an image and configuration file, you can create a new guest domain. The configuration file /etc/xen/my-pv-guest.cfg
tells Xen how to create the new machine.
Start the guest.
# xl create /etc/xen/my-pv-guest.cfg
Check your work after starting this instance.
root@debian:~# xl list
Name ID Mem VCPUs State Time(s) Domain-0 0 3299 2 r----- 54.9 my-pv-guest 1 512 1 -b---- 2.3
The guest domain is running, but using it is not obvious. Operating systems create a console that the administrator can use, to see system activity and make changes. The Linux console is a CLI, not a GUI.
Connect to the Linux console.
# xl console my-pv-guest
You may see many boot messages in the console.
Login with the root account.
Change the root password to something memorable.
# passwd
Log out. At this point, you are still connected to the guest's console.
Detach from the console with the key combination Ctrl
and ]
.
Hit the virtual power switch to turn off the machine.
# xl shutdown my-pv-guest
The new guest is destroyed instantly.
root@debian:~# xl shutdown my-pv-guest
Shutting down domain 1
The guest domain is gone but the image is still there, ready to be used next time.
This website is made possible by minimal ads and your gracious donation via PayPal or credit card
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.
Xmodulo © 2021 ‒ About ‒ Write for Us ‒ Feed ‒ Powered by DigitalOcean