“UbuntuHelp:Xen”的版本间的差异
来自Ubuntu中文
小 |
小 |
||
第2行: | 第2行: | ||
{{Languages|UbuntuHelp:Xen}} | {{Languages|UbuntuHelp:Xen}} | ||
== Introduction == | == Introduction == | ||
− | Xen is a virtual machine for linux that allows you to run | + | [http://www.xen.org Xen] is a free software virtual machine for linux that allows you to run several operating systems (guests) on the same computer hardware (host) at the same time. |
=== Terms === | === Terms === | ||
− | * | + | * Domain 0 (dom0): The host machine operating system, also called host. This is the OS of the actual physical server that you have. Is booted automatically when the hypervisor boots and given special management privileges and direct access to the physical hardware. |
− | * | + | * Domain U (domU): A Xen guest domain, also called guest. A domU is a single Xen virtual machine. The “U” stands for “unprivileged”. |
* HVM: HVM is a way of running Windows in Xen. | * HVM: HVM is a way of running Windows in Xen. | ||
Note: This guide is written for '''Feisty'''. It is currently '''not''' fully compatible with Gutsy, '''use at your own risk'''! Older versions are not really a concern, but if you really want to, please merge older information in here cleanly. The next big update of the guide will be for Hardy. | Note: This guide is written for '''Feisty'''. It is currently '''not''' fully compatible with Gutsy, '''use at your own risk'''! Older versions are not really a concern, but if you really want to, please merge older information in here cleanly. The next big update of the guide will be for Hardy. | ||
− | Note: If you just want to run a virtual instance of windows, it is recommended to try [[UbuntuHelp: | + | Note: If you just want to run a virtual instance of windows, it is recommended to try [[UbuntuHelp:KVM]] or [VirtualBox] [http://www.virtualbox.org VirtualBox] instead. |
For irc on freenode, try: ##xen or #ubuntu-virt | For irc on freenode, try: ##xen or #ubuntu-virt | ||
For development information with the ubuntu xen community, see https://wiki.ubuntu.com/Xen | For development information with the ubuntu xen community, see https://wiki.ubuntu.com/Xen | ||
第71行: | 第71行: | ||
</nowiki></pre> | </nowiki></pre> | ||
This recommendation might be wrong. Please correct it if so. See [http://wiki.xensource.com/xenwiki/InstallationNotes?highlight=%28grub%29 here] and [http://wiki.xensource.com/xenwiki/GettingStarted?highlight=%28initrd%29 and here] for more details. | This recommendation might be wrong. Please correct it if so. See [http://wiki.xensource.com/xenwiki/InstallationNotes?highlight=%28grub%29 here] and [http://wiki.xensource.com/xenwiki/GettingStarted?highlight=%28initrd%29 and here] for more details. | ||
+ | ==== AACRaid Bugfix ==== | ||
+ | Currently on some server configurations running 2.6.24-18-xen, AACRaid will cause a kernel panic. (The error is 'out of SW-IOMMU space'). This happened to me either on boot-up, or immediately after I tried to access the disk (ie, using apt-get). If this happens to you, try adding "swiotlb=128" into your /boot/grub/menu.lst file like so: | ||
+ | <pre><nowiki> | ||
+ | module /boot/vmlinuz-2.6.24-18-xen root=<your UUID> ro console=tty0 swiotlb=128 | ||
+ | </nowiki></pre> | ||
+ | You will also have to add this switch into any DomU config files you create. This flag fixed the kernel panics on IBM X-Server 3550's with attached SAN arrays. | ||
+ | This bug originally referenced at: [[https://bugs.launchpad.net/ubuntu/+source/linux/+bug/232017]] (Thanks everyone who's working on it. Paul Mc.) | ||
=== Prebuilt Binaries install === | === Prebuilt Binaries install === | ||
This section has not yet been written. | This section has not yet been written. | ||
第101行: | 第108行: | ||
</nowiki></pre> | </nowiki></pre> | ||
=== Network for DomU === | === Network for DomU === | ||
− | If you use the bridged network setup, it may be necessary | + | If you use the bridged network setup, it may be necessary to enable dhcp for eth0. |
− | Make | + | Make sure that your /etc/network/interfaces looks like something like this. |
<pre><nowiki> | <pre><nowiki> | ||
− | + | auto lo | |
+ | iface lo inet loopback | ||
− | + | auto eth0 | |
− | + | iface eth0 inet dhcp | |
+ | </nowiki></pre> | ||
+ | If you are using static IP configuration, then your /etc/network/interfaces will be something like this, do not copy and paste this. Change the IP addresses accordingly. | ||
+ | <pre><nowiki> | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 192.168.44.247 | ||
+ | netmask 255.255.252.0 | ||
+ | gateway 192.168.47.254 | ||
+ | </nowiki></pre> | ||
+ | Make sure hostname of DomU is correct in /etc/hostname. That file should have a single line, and in that line, your hostname should be present. | ||
+ | Make sure /etc/hosts file is correct. | ||
+ | <pre><nowiki> | ||
+ | 127.0.0.1 localhost | ||
+ | 127.0.1.1 yourhostname | ||
</nowiki></pre> | </nowiki></pre> | ||
=== DomU using xen-tools (recommended) === | === DomU using xen-tools (recommended) === | ||
第147行: | 第172行: | ||
Look out for /etc/udev/rules.d/70-persistent-net.rules which can change your eth device id. | Look out for /etc/udev/rules.d/70-persistent-net.rules which can change your eth device id. | ||
=== Using debootstrap === | === Using debootstrap === | ||
+ | Mount the guest partition(loopback-file, raw partition or LVM) under /mnt/myguest | ||
+ | Bootstrap Ubuntu. In the commands below change the "export" lines with your configuration, also select a mirror in your country/continent | ||
+ | <pre><nowiki> | ||
sudo apt-get install debootstrap | sudo apt-get install debootstrap | ||
− | + | export ARCH=amd64 | |
− | sudo cp -a /lib/modules/2.6.19-4- | + | export DISTRIBUTION=hardy |
− | + | export MIRROR=http://us.archive.ubuntu.com/ubuntu/ | |
+ | debootstrap --arch $ARCH $DISTRIBUTION /mnt/myguest/ $MIRROR | ||
+ | </nowiki></pre> | ||
+ | Copy the modules of current running kernel | ||
+ | <pre><nowiki> | ||
+ | sudo cp -a /lib/modules/`uname -r`/ /mnt/myguest/lib/modules/ | ||
+ | </nowiki></pre> | ||
+ | Fix networking as stated above in "Network for DomU" section | ||
+ | Edit /mnt/myguest/etc/fstab. Use hda instead of sda if you use ide. Include the swap line if you prepared a swap partition. | ||
+ | <pre><nowiki> | ||
+ | /dev/sda1 / ext3 errors=remount-ro 0 1 | ||
+ | proc /proc proc rw,nodev,nosuid,noexec 0 0 | ||
+ | /dev/sda2 none swap sw 0 0 | ||
+ | </nowiki></pre> | ||
+ | Now create a config file following the instructions in "Creating a DomU config file by hand" section below. | ||
+ | You can run your guest with | ||
+ | <pre><nowiki> | ||
+ | sudo xm create /etc/xen/YOURCONF.cfg | ||
+ | </nowiki></pre> | ||
+ | Debootstrap does not create locales. When you run the virtual machine, if you get errors like the following, run the command below. | ||
+ | <pre><nowiki> | ||
+ | perl: warning: Setting locale failed. | ||
+ | perl: warning: Please check that your locale settings: | ||
+ | LANGUAGE = (unset), | ||
+ | LC_ALL = (unset), | ||
+ | LANG = “en_US.UTF-8″ | ||
+ | are supported and installed on your system. | ||
+ | perl: warning: Falling back to the standard locale (”C”). | ||
+ | locale: Cannot set LC_CTYPE to default locale: No such file or directory | ||
+ | locale: Cannot set LC_MESSAGES to default locale: No such file or directory | ||
+ | locale: Cannot set LC_ALL to default locale: No such file or directory | ||
+ | </nowiki></pre> | ||
+ | To fix this, run this, replace en_US.UTF-8 with your own locale. | ||
+ | <pre><nowiki> | ||
+ | sudo locale-gen en_US.UTF-8 | ||
+ | </nowiki></pre> | ||
+ | Remember, locale settings are in /etc/environment | ||
+ | <pre><nowiki> | ||
+ | LANG=en_US.UTF-8 | ||
+ | LC_ALL=en_US.UTF-8 | ||
+ | </nowiki></pre> | ||
+ | === Creating a DomU config file by hand === | ||
+ | Here is a skeleton DomU config file. Put this file under "/etc/xen" directory. | ||
+ | Edit the file changing the settings matching your setup. | ||
+ | * Learn your kernel version with "uname -r" command. Replace the versions in "kernel" and "ramdisk" lines with correct version. | ||
+ | * As you can guess, "memory" sets DomU memory | ||
+ | * "name" will be the name used to refer to this guest, keeping it the same as your DomU hostname will keep things simpler. | ||
+ | * "disk" line depends heavily on how you created the disks for DomU. If there is no swap, remove the second entry. If you use ide, change "sda" into "hda". | ||
+ | <pre><nowiki> | ||
+ | kernel = "/boot/vmlinuz-2.6.19-4-generic" | ||
+ | ramdisk = "/boot/initrd.img-2.6.19-4-generic" | ||
+ | builder='linux' | ||
+ | memory = 128 | ||
+ | name = "yourhostname" | ||
+ | vcpus = 1 | ||
+ | vif = [ 'bridge=xenbr0' ] | ||
+ | disk = [ 'file:/var/vm/myvm/disk.img,sda1,w' , 'file:/var/vm/myvm/swap.img,sda2,w' ] | ||
+ | root = "/dev/hda1 ro" | ||
+ | on_poweroff = 'destroy' | ||
+ | on_reboot = 'restart' | ||
+ | on_crash = 'restart' | ||
+ | </nowiki></pre> | ||
+ | If you want to give static mac addresses and static IPs, "vif" line should be like the one below. Mac addresses beginning with "00:16:3e" are reserved for guest machines, fill the remaining part randomly. | ||
+ | <pre><nowiki> | ||
+ | vif = [ 'mac=00:16:3e:XX:XX:XX, ip="YYY.YYY.YYY.YYY"' ] | ||
+ | </nowiki></pre> | ||
+ | If you use a physical partition, the disks line should be something like; | ||
+ | <pre><nowiki> | ||
+ | disk = [ 'phy:/dev/hda6,ioemu:hda1,w' ] | ||
+ | </nowiki></pre> | ||
=== Gentoo Guest === | === Gentoo Guest === | ||
http://bugs.gentoo.org/show_bug.cgi?id=192436 | http://bugs.gentoo.org/show_bug.cgi?id=192436 | ||
第259行: | 第356行: | ||
== Troubleshooting == | == Troubleshooting == | ||
=== Setting locale failed errors === | === Setting locale failed errors === | ||
− | If you are getting errors on your guest | + | If you are getting errors on your guest like the following, run the command below. |
<pre><nowiki> | <pre><nowiki> | ||
perl: warning: Setting locale failed. | perl: warning: Setting locale failed. | ||
perl: warning: Please check that your locale settings: | perl: warning: Please check that your locale settings: | ||
− | + | LANGUAGE = (unset), | |
− | + | LC_ALL = (unset), | |
− | + | LANG = “en_US.UTF-8″ | |
− | + | are supported and installed on your system. | |
− | perl: warning: Falling back to the standard locale ( | + | perl: warning: Falling back to the standard locale (”C”). |
− | + | locale: Cannot set LC_CTYPE to default locale: No such file or directory | |
+ | locale: Cannot set LC_MESSAGES to default locale: No such file or directory | ||
+ | locale: Cannot set LC_ALL to default locale: No such file or directory | ||
+ | </nowiki></pre> | ||
+ | To fix this, run this command, replace en_US.UTF-8 with your own locale. | ||
+ | <pre><nowiki> | ||
+ | sudo locale-gen en_US.UTF-8 | ||
+ | </nowiki></pre> | ||
+ | Remember, locale settings are in /etc/environment | ||
+ | <pre><nowiki> | ||
+ | LANG=en_US.UTF-8 | ||
+ | LC_ALL=en_US.UTF-8 | ||
</nowiki></pre> | </nowiki></pre> | ||
− | |||
− | |||
=== Logging into your domU via the console === | === Logging into your domU via the console === | ||
In order to be able to login to your domU from the console using: | In order to be able to login to your domU from the console using: | ||
第301行: | 第407行: | ||
== Links == | == Links == | ||
=== Sister Wiki's === | === Sister Wiki's === | ||
− | * [http://wiki.debian.org/Xen] | + | * [[http://wiki.debian.org/Xen]] |
− | * [http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo] | + | * [[http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo]] |
− | * [http://gentoo-wiki.com/HOWTO_Virtual_Xen_Servers_and_Gentoo] | + | * [[http://gentoo-wiki.com/HOWTO_Virtual_Xen_Servers_and_Gentoo]] |
− | * [http://www.gentoo.org/doc/en/xen-guide.xml] | + | * [[http://www.gentoo.org/doc/en/xen-guide.xml]] |
− | * [http://wiki.centos.org/TipsAndTricks/Xen] | + | * [[http://wiki.centos.org/TipsAndTricks/Xen]] |
− | * [http://wiki.centos.org/HowTos/Xen/InstallingCentOSDomU] | + | * [[http://wiki.centos.org/HowTos/Xen/InstallingCentOSDomU]] |
− | * [http://wiki.centos.org/HowTos/Xen/InstallingHVMDomU] | + | * [[http://wiki.centos.org/HowTos/Xen/InstallingHVMDomU]] |
− | * [http://wiki.centos.org/HowTos/Xen/MoveNative2DomU] | + | * [[http://wiki.centos.org/HowTos/Xen/MoveNative2DomU]] |
− | * [http://wiki.archlinux.org/index.php/Xen_Install] | + | * [[http://wiki.archlinux.org/index.php/Xen_Install]] |
=== Learning Sites === | === Learning Sites === | ||
− | * [http://virt.kernelnewbies.org/] - A wiki dedicated to documenting the different virtualization technologies available in Linux. | + | * [[http://virt.kernelnewbies.org/]] - A wiki dedicated to documenting the different virtualization technologies available in Linux. |
=== Other Reference === | === Other Reference === | ||
* [http://wiki.rpath.com/wiki/Virtual_Appliances:Xen Extensive XEN setup info from RPath] | * [http://wiki.rpath.com/wiki/Virtual_Appliances:Xen Extensive XEN setup info from RPath] | ||
− | * [http://www.howtoforge.com/ubuntu_7.04_xen_from_repositories] | + | * [[http://www.howtoforge.com/ubuntu_7.04_xen_from_repositories]] |
− | * [http://www.howtoforge.com/perfect_xen_setup_debian_ubuntu] | + | * [[http://www.howtoforge.com/perfect_xen_setup_debian_ubuntu]] |
− | * [http://www.howtoforge.com/perfect_setup_xen3_debian] | + | * [[http://www.howtoforge.com/perfect_setup_xen3_debian]] |
− | * [http://www.howtoforge.com/xen_3.0_ubuntu_dapper_drake] | + | * [[http://www.howtoforge.com/xen_3.0_ubuntu_dapper_drake]] |
− | * [http://www.howtoforge.com/xen_tools_xen_shell_argo] | + | * [[http://www.howtoforge.com/xen_tools_xen_shell_argo]] |
* [http://wiki.xensource.com/xenwiki/ Xen Wiki] | * [http://wiki.xensource.com/xenwiki/ Xen Wiki] | ||
* [http://www.xensource.com/xen/documentation/ The Xensource Documentation] | * [http://www.xensource.com/xen/documentation/ The Xensource Documentation] | ||
* [http://www.xensource.com/files/xen_user_manual.pdf Xen User's Manual] PDF | * [http://www.xensource.com/files/xen_user_manual.pdf Xen User's Manual] PDF | ||
− | * [http://wiki.xensource.com/xenwiki/InstallationNotes] | + | * [[http://wiki.xensource.com/xenwiki/InstallationNotes]] |
− | * [http://xen-tools.org/software/xen-tools/] | + | * [[http://xen-tools.org/software/xen-tools/]] |
− | * [http://wiki.kartbuilding.net/index.php/Main_Page#Virtual_Server_.28XEN.29_set-up_and_Associated_Details] - Xen Server on Debian, lots of detail | + | * [[http://wiki.kartbuilding.net/index.php/Main_Page#Virtual_Server_.28XEN.29_set-up_and_Associated_Details]] - Xen Server on Debian, lots of detail |
* [http://www.debian-administration.org/articles/304 Installing Xen 3.0 upon Debian Sarge] | * [http://www.debian-administration.org/articles/304 Installing Xen 3.0 upon Debian Sarge] | ||
− | * [http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html] Xen Users Guide | + | * [[http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html]] Xen Users Guide |
* http://blog.codefront.net/2007/06/26/installing-xen-on-ubuntu-feisty-fawn-the-complete-newbies-guide/ | * http://blog.codefront.net/2007/06/26/installing-xen-on-ubuntu-feisty-fawn-the-complete-newbies-guide/ | ||
* [http://cosi.clarkson.edu/docs/installingxen/xen-tutorial.html Installing Xen] from the Clarkson Open Source Institute, mostly about using Ubuntu | * [http://cosi.clarkson.edu/docs/installingxen/xen-tutorial.html Installing Xen] from the Clarkson Open Source Institute, mostly about using Ubuntu | ||
− | * [http://www.dalouche.com/wordpress/2006/11/26/howto-use-more-than-3-virtual-interfaces-with-xen-by-using-ip-aliasing/] | + | * [[http://www.dalouche.com/wordpress/2006/11/26/howto-use-more-than-3-virtual-interfaces-with-xen-by-using-ip-aliasing/]] |
* [http://www.debian.org/releases/stable/i386/apcs04.html.en Installing Debian GNU/Linux from a Unix/Linux System] - this page has a trick of chrooting into the semi-installed system image to complete its setup | * [http://www.debian.org/releases/stable/i386/apcs04.html.en Installing Debian GNU/Linux from a Unix/Linux System] - this page has a trick of chrooting into the semi-installed system image to complete its setup | ||
---- | ---- | ||
− | [[category: | + | [[category:CategoryVirtualization]] |
[[category:UbuntuHelp]] | [[category:UbuntuHelp]] |
2008年10月19日 (日) 18:21的版本
点击翻译: |
English |
请不要直接编辑翻译本页,本页将定期与来源同步。 |
目录
Introduction
Xen is a free software virtual machine for linux that allows you to run several operating systems (guests) on the same computer hardware (host) at the same time.
Terms
- Domain 0 (dom0): The host machine operating system, also called host. This is the OS of the actual physical server that you have. Is booted automatically when the hypervisor boots and given special management privileges and direct access to the physical hardware.
- Domain U (domU): A Xen guest domain, also called guest. A domU is a single Xen virtual machine. The “U” stands for “unprivileged”.
- HVM: HVM is a way of running Windows in Xen.
Note: This guide is written for Feisty. It is currently not fully compatible with Gutsy, use at your own risk! Older versions are not really a concern, but if you really want to, please merge older information in here cleanly. The next big update of the guide will be for Hardy. Note: If you just want to run a virtual instance of windows, it is recommended to try UbuntuHelp:KVM or [VirtualBox] VirtualBox instead. For irc on freenode, try: ##xen or #ubuntu-virt For development information with the ubuntu xen community, see https://wiki.ubuntu.com/Xen
Installation
Install from packages (recommended)
sudo aptitude install ubuntu-xen-server
Note: There is also an ubuntu-xen-desktop, and an ubuntu-xen-desktop-amd64. The purpose of these is a bit ambiguous, but they install firefox and all kinds of gnome libs. They may also not be PAE enabled... compiled for systems with more then 4GB of RAM. Even if you are on a 64 bit system, you should still install ubuntu-xen-server. More package details here: http://packages.ubuntu.com/feisty/base/ubuntu-xen-server The Feisty AMD64 version of ubuntu doesn't have an ubuntu-xen-server metapackage so far. Instead, use this. For Feisty AMD64:
sudo aptitude install xen-image-2.6.19-4-generic-amd64 bridge-utils libxen3.0 python-xen3.0 xen-docs-3.0 xen-hypervisor-3.0 xen-ioemu-3.0 xen-tools xen-utils-3.0
For Gutsy AMD64:
sudo aptitude install ubuntu-xen-server # Not in repository at 02/25/2008 sudo aptitude install ubuntu-xen-desktop-amd64 # includes xenman
Maybe install xenman too, but it installs all kinds of gnome stuff. Next you need to enable networking. [Gutsy: I had to reboot the xen kernel before I could run the xend script]
vim /etc/xen/xend-config.sxp #(network-script network-dummy) (network-script network-bridge) then sudo /etc/init.d/xend restart # for the change to take effect
Its also a good idea to increase the default number of loop mounts allowed. Not really needed if you are going to use LVM, but it also wont break anything if you do it anyway.
vim /etc/modules loop max_loop=64
This is probably a good point to reboot your machine so that you use the xen kernel. After reboot is a good chance to check your network and ensure it works. Both Feisty and Gutsy may have network problems with certain hardware. If you are experiencing network problems, check out this potential solution
ACPI
If - after reboot - you see a kernel oops in dmesg or suggestion to boot with irqpoll, then try disabling ACPI and Plug 'n Play OS options in your BIOS. If you have no access to these options from the BIOS, then you may need to boot your kernel with acpi=off option. The reason is that there is no ACPI in the Xen kernel. Edit /boot/grub/menu.list and find a module line:
title Xen 3.1 / Ubuntu 7.10, kernel 2.6.22-14-xen root (hd0,0) kernel /boot/xen-3.1.gz module /boot/vmlinuz-2.6.22-14-xen root=UUID=your-uuid-here ro console=tty0 module /boot/initrd.img-2.6.22-14-xen
change the one module line with options above to:
module /boot/vmlinuz-2.6.22-14-xen root=UUID=your-uuid-here ro console=tty0 acpi=off
Initrd
Most people can skip this section. This is just in case you get a kernel panic at reboot, then you probably have SCSI or SATA modules that need to be included in an initrd. Do this to create an initrd:
sudo depmod -a xen-3.0-i386.gz sudo mkinitramfs -o /boot/xen-3.0-i386.initrd.img 2.6.19-4-generic
And then add this as a second module line in the Xen section of your menu.lst file.
module /boot/xen-3.0-i386.initrd.img
This recommendation might be wrong. Please correct it if so. See here and and here for more details.
AACRaid Bugfix
Currently on some server configurations running 2.6.24-18-xen, AACRaid will cause a kernel panic. (The error is 'out of SW-IOMMU space'). This happened to me either on boot-up, or immediately after I tried to access the disk (ie, using apt-get). If this happens to you, try adding "swiotlb=128" into your /boot/grub/menu.lst file like so:
module /boot/vmlinuz-2.6.24-18-xen root=<your UUID> ro console=tty0 swiotlb=128
You will also have to add this switch into any DomU config files you create. This flag fixed the kernel panics on IBM X-Server 3550's with attached SAN arrays. This bug originally referenced at: [[1]] (Thanks everyone who's working on it. Paul Mc.)
Prebuilt Binaries install
This section has not yet been written. http://xen.xensource.com/download/dl_31tarballs.html http://www.howtoforge.com/xen_3.0_ubuntu_dapper_drake
Guest Templates
For a full list of possible xen domU config options, type sudo xm create --help_config
LVM partitioning
xen-tools can create lvm volumes for you, so you can skip this section. If you need to make lvm volumes yourself you can use these commands. I just used the ubuntu installer to setup my LVM volume group initially. If you are using local .img files for your xen guests, then you dont need lvm.
sudo lvdisplay # To see existing lvm volumes. lvcreate -n myguest-disk -L +100G my_volume_group # To create a volume lvcreate -n myguest-swap -L +4G my_volume_group # To create another volume
How to extend an LVM partition
# e2fsck -f /dev/vg0/<DomU_name> # lvextend -L +1G /dev/vg0/<DomU_name> # resize2fs /dev/vg0/<DomU_name>
Using loopback-mounted-file
Create sparse file for disk, and non-sparse file for swap.
dd if=/dev/zero of=/mnt/domains/myslice/disk.img bs=1 count=0 seek=25G dd if=/dev/zero of=/mnt/domains/myslice/swap.img bs=1G count=1 mkfs.ext3 ./disk.img (then say Y) mkswap ./swap.img
Network for DomU
If you use the bridged network setup, it may be necessary to enable dhcp for eth0. Make sure that your /etc/network/interfaces looks like something like this.
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
If you are using static IP configuration, then your /etc/network/interfaces will be something like this, do not copy and paste this. Change the IP addresses accordingly.
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.44.247 netmask 255.255.252.0 gateway 192.168.47.254
Make sure hostname of DomU is correct in /etc/hostname. That file should have a single line, and in that line, your hostname should be present. Make sure /etc/hosts file is correct.
127.0.0.1 localhost 127.0.1.1 yourhostname
DomU using xen-tools (recommended)
First you need to edit some of the default values in xen-tools.conf . Go through the file and set them to what you want. I've mentioned the more important ones below. Make sure you set a gateway and netmask or networking wont work.
# vim /etc/xen-tools/xen-tools.conf gateway = 192.168.0.1 netmask = 255.255.255.0 passwd = 1 kernel = /boot/vmlinuz-2.6.19-4-server initrd = /boot/initrd.img-2.6.19-4-server mirror = http://archive.ubuntu.com/ubuntu/
Create a new image.
sudo xen-create-image --hostname=xen1.example.com --ip=192.168.1.10 --ide --force
Tail the log file under /var/log/xen to see progress. There is no real indication on the command-line that anything is happening, though you will see some network traffic, possibly. Someone said that if you don't use --ide, it wont work. So I took their advice. man xen-create-image says " --ide Use IDE names for virtual devices (hda not sda)" When the command finishes, it will leave a config file in /etc/xen named based on the host name your specified. This config file can be used in the command below that creates the virtual instance. Start a xen host.
sudo xm create /etc/xen/xen1.example.com.cfg
Other DomU Setups
Stuff goes here.
Other DomU Guest Configurations
Stuff to check when converting a disk image to a Dom U
/etc/fstab /etc/conf.d/net or /etc/network/interfaces /etc/resolv.conf /lib/modules/kernel-modules ( copy them to the guest if needed ) on gentoo fix the /sbin/rc bug that causes /sys and /proc errors. Make sure you setup an empty /sys, /proc, and setup a skeleton /dev. set root passwd hostname Look out for /etc/udev/rules.d/70-persistent-net.rules which can change your eth device id.
Using debootstrap
Mount the guest partition(loopback-file, raw partition or LVM) under /mnt/myguest Bootstrap Ubuntu. In the commands below change the "export" lines with your configuration, also select a mirror in your country/continent
sudo apt-get install debootstrap export ARCH=amd64 export DISTRIBUTION=hardy export MIRROR=http://us.archive.ubuntu.com/ubuntu/ debootstrap --arch $ARCH $DISTRIBUTION /mnt/myguest/ $MIRROR
Copy the modules of current running kernel
sudo cp -a /lib/modules/`uname -r`/ /mnt/myguest/lib/modules/
Fix networking as stated above in "Network for DomU" section Edit /mnt/myguest/etc/fstab. Use hda instead of sda if you use ide. Include the swap line if you prepared a swap partition.
/dev/sda1 / ext3 errors=remount-ro 0 1 proc /proc proc rw,nodev,nosuid,noexec 0 0 /dev/sda2 none swap sw 0 0
Now create a config file following the instructions in "Creating a DomU config file by hand" section below. You can run your guest with
sudo xm create /etc/xen/YOURCONF.cfg
Debootstrap does not create locales. When you run the virtual machine, if you get errors like the following, run the command below.
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = “en_US.UTF-8″ are supported and installed on your system. perl: warning: Falling back to the standard locale (”C”). locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory
To fix this, run this, replace en_US.UTF-8 with your own locale.
sudo locale-gen en_US.UTF-8
Remember, locale settings are in /etc/environment
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
Creating a DomU config file by hand
Here is a skeleton DomU config file. Put this file under "/etc/xen" directory. Edit the file changing the settings matching your setup.
- Learn your kernel version with "uname -r" command. Replace the versions in "kernel" and "ramdisk" lines with correct version.
- As you can guess, "memory" sets DomU memory
- "name" will be the name used to refer to this guest, keeping it the same as your DomU hostname will keep things simpler.
- "disk" line depends heavily on how you created the disks for DomU. If there is no swap, remove the second entry. If you use ide, change "sda" into "hda".
kernel = "/boot/vmlinuz-2.6.19-4-generic" ramdisk = "/boot/initrd.img-2.6.19-4-generic" builder='linux' memory = 128 name = "yourhostname" vcpus = 1 vif = [ 'bridge=xenbr0' ] disk = [ 'file:/var/vm/myvm/disk.img,sda1,w' , 'file:/var/vm/myvm/swap.img,sda2,w' ] root = "/dev/hda1 ro" on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
If you want to give static mac addresses and static IPs, "vif" line should be like the one below. Mac addresses beginning with "00:16:3e" are reserved for guest machines, fill the remaining part randomly.
vif = [ 'mac=00:16:3e:XX:XX:XX, ip="YYY.YYY.YYY.YYY"' ]
If you use a physical partition, the disks line should be something like;
disk = [ 'phy:/dev/hda6,ioemu:hda1,w' ]
Gentoo Guest
http://bugs.gentoo.org/show_bug.cgi?id=192436
Ubuntu Guest is Gutsy 7.10 or newer
The xen-tools hook scripts included for gutsy target are merely a link to edgy, which is problematic. The init system has changed since Edgy. Also, there is a bug with accessing hwclock. The result is a newly created gutsy domU appears to crash or hang after mounting the rootfs. The xen-tools patch/workaround:
1) Remove the symbolic link /usr/lib/xen-tools/gutsy.d and make a copy of /usr/lib/xen-tools/edgy.d to /usr/lib/xen-tools/gutsy.d rm /usr/lib/xen-tools/gutsy.d cp -a /usr/lib/xen-tools/edgy.d /usr/lib/xen-tools/gutsy.d mv /usr/lib/xen-tools/gutsy.d/15-disable-hwclock /usr/lib/xen-tools/gutsy.d/21-disable-hwclock 2) Edit /usr/lib/xen-tools/gutsy.d/21-disable-hwclock and be sure to have the lines below: chroot ${prefix} /usr/sbin/update-rc.d -f hwclock.sh remove chroot ${prefix} /usr/sbin/update-rc.d -f hwclockfirst.sh remove chroot ${prefix} rm -f /etc/udev/rules.d/85-hwclock.rules chroot ${prefix} ln -sf /bin/true /sbin/hwclock 3) Create a hook to enable the gettys cp /usr/lib/xen-tools/gutsy.d/30-disable-gettys /usr/lib/xen-tools/gutsy.d/32-enable-gettys now edit the above file to execute the following: # # Change first console setting to xvc0 upstart # echo "xvc0" >> ${prefix}/etc/securetty sed -i "s/tty1/xvc0/" ${prefix}/etc/event.d/tty1
Set runlevel and console devices: echo "extra = '2 console=xvc0'" >> /etc/xen/guestname.cfg Edit guestname.cfg and assign mac addr to the vif: vif = [ 'mac=xx:xx:xx:xx:xx:xx, ip=a.b.c.d' ]
Windows HVM Guests
Make sure you have HVM support turning on in the BIOS.
sudo xm dmesg | grep VMX
- Windows XP and Xen. See: http://lists.xensource.com/archives/html/xen-users/2006-06/msg00599.html
For the initial install you can mount a iso as a cdrom. A vnc server will be started on localhost. To get the server to run on the machines public facing ips, make this change.
vim /etc/xen/xend-config.sxp #(vnc-listen '127.0.0.1') (vnc-listen '0.0.0.0') and dont forget sudo /etc/init.d/xend restart
Your xen guest config file should look like this:
#Kernel and memory size kernel = '/usr/lib/xen-ioemu-3.0/boot/hvmloader' device_model = "/usr/lib/xen-ioemu-3.0/bin/qemu-dm" builder = 'hvm' memory = '512' disk = [ 'phy:barracudas/winxp01-disk,ioemu:hda,w', 'file:/home/steven/winxp.iso,ioemu:hdc:cdrom,r' ] # Hostname and Networking name = 'winxp01' vif = [ 'type=ioemu, bridge=xenbr0' ] # Behaviour boot='d' #d is cdrom boot, c is disk boot. vnc=1 vncviewer=1 sdl=0
This works for booting a Windows 2003 HVM guest:
# -*- mode: python; -*- import os, re arch = os.uname()[4] if re.search('64', arch): arch_libdir = 'lib64' else: arch_libdir = 'lib' kernel = "/usr/lib/xen/boot/hvmloader" builder='hvm' memory = 756 shadow_memory = 8 name = "Windoze" vif = [ 'type=ioemu, bridge=xenbr0' ] disk = [ 'phy:/dev/vm-disks/win2k3,ioemu:hda,w', 'file:/root/en_win_srv_2003_r2_standard_cd1.iso,hdc:cdrom,r' ] boot = "d" device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm' vnc=1 vncpasswd='' serial='pty'
GNOME as domU guest
- Configure GDM to start VNC, editing the `/etc/X11/gdm/gdm.conf`
Under [servers] heading, add this line, and comment out others like it:
0=VNC
Before the [server-Standard] section, add:
[server-VNC] name=VNC server command=/usr/bin/Xvnc -geometry 800x600 -depth 24 flexible=true
More info: http://wiki.xensource.com/xenwiki/XenDemoLaptop More information: http://www.mail-archive.com/vnc-list@realvnc.com/msg24961.html http://openvz.org/pipermail/users/2007-January/000521.html
Troubleshooting
Setting locale failed errors
If you are getting errors on your guest like the following, run the command below.
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = “en_US.UTF-8″ are supported and installed on your system. perl: warning: Falling back to the standard locale (”C”). locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory
To fix this, run this command, replace en_US.UTF-8 with your own locale.
sudo locale-gen en_US.UTF-8
Remember, locale settings are in /etc/environment
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
Logging into your domU via the console
In order to be able to login to your domU from the console using:
xm create {your hostname}.cfg -c
(to the set root password for ssh, for instance, or to see more output than just kernel output when debugging) it may be necessary to add the following line to your /etc/xen/{your hostname}.cfg
extra='xencons=tty'
domU freezes as init touches the hardware clock
Additionally, if the domU seems to freeze after "Setting the system clock.." you may need to mount the domU and add the following line to the bottom of /etc/default/rcS:
HWCLOCKACCESS=no
Other issues
See the older wiki entry XenVirtualMachine for additional suggestions to try. Also try out this guide for xen on feisty: http://www.howtoforge.com/ubuntu_7.04_xen_from_repositories
Great, its setup. Now how do I use it?
Here are the most important Xen commands:
xm create -c /path/to/config - Start a virtual machine. xm shutdown <name> - Stop a virtual machine. xm destroy <name> - Stop a virtual machine immediately without shutting it down. It's as if you switch off the power button. xm list - List all running systems. xm console <name> - Log in on a virtual machine. xm help - List of all commands.
Links
Sister Wiki's
Learning Sites
- [[11]] - A wiki dedicated to documenting the different virtualization technologies available in Linux.
Other Reference
- Extensive XEN setup info from RPath
- [[12]]
- [[13]]
- [[14]]
- [[15]]
- [[16]]
- Xen Wiki
- The Xensource Documentation
- Xen User's Manual PDF
- [[17]]
- [[18]]
- [[19]] - Xen Server on Debian, lots of detail
- Installing Xen 3.0 upon Debian Sarge
- [[20]] Xen Users Guide
- http://blog.codefront.net/2007/06/26/installing-xen-on-ubuntu-feisty-fawn-the-complete-newbies-guide/
- Installing Xen from the Clarkson Open Source Institute, mostly about using Ubuntu
- [[21]]
- Installing Debian GNU/Linux from a Unix/Linux System - this page has a trick of chrooting into the semi-installed system image to complete its setup