diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-10-12 04:00:49 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-10-12 04:00:49 +0000 |
| commit | c22f60e6e55f1bf300dd76d2222a93911f3b2bb2 (patch) | |
| tree | ef665e7018377f53612ac2751dcaea35a1c587b6 /README.SUSE | |
| parent | 39a4763249cd6289e5019acfe0c98dbb169f5f2e (diff) | |
automatic import of xenopeneuler22.03_LTS
Diffstat (limited to 'README.SUSE')
| -rw-r--r-- | README.SUSE | 704 |
1 files changed, 704 insertions, 0 deletions
diff --git a/README.SUSE b/README.SUSE new file mode 100644 index 0000000..3d39ccd --- /dev/null +++ b/README.SUSE @@ -0,0 +1,704 @@ +README for the Xen packages +=========================== + +This file contains SUSE-specific instructions and suggestions for using Xen. + +For more in-depth documentation of using Xen on SUSE, consult the +virtualization chapter in the SLES or SUSE Linux manual, or read up-to-date +virtualization information, at +https://www.suse.com/documentation/sles11/singlehtml/book_xen/book_xen.html + +For more complete documentation on Xen itself, please install the xen-doc-html +package and read the documentation installed into /usr/share/doc/packages/xen/. + + +About +----- +Xen allows you to run multiple virtual machines on a single physical machine. + +See the Xen homepage for more information: + http://www.xenproject.org/ + +If you want to use Xen, you need to install the Xen hypervisor and a number of +supporting packages. During the initial SUSE installation (or when installing +from YaST) check-mark the "Xen Virtual Machine Host Server" pattern. If, +instead, you wish to install Xen manually later, click on the "Install +Hypervisor and Tools" icon in YaST. + +If you want to install and manage VMs graphically, be sure to install a +graphical desktop environment like KDE or GNOME. The following optional +packages are needed to manage VMs graphically. Note that "Install Hypervisor +and Tools" installs all the packages below: + virt-install (Optional, to install VMs) + virt-manager (Optional, to manage VMs graphically) + virt-viewer (Optional, to view VMs outside virt-manager) + vm-install (Optional, to install VMs with xl only) + +You then need to reboot your machine. Instead of booting a normal Linux +kernel, you will boot the Xen hypervisor and a slightly changed Linux kernel. +This Linux kernel runs in the first virtual machine and will drive most of +your hardware. + +This approach is called paravirtualization, since it is a partial +virtualization (the Linux kernel needs to be changed slightly, to make the +virtualization easier). It results in very good performance (consult +http://www.cl.cam.ac.uk/research/srg/netos/xen/performance.html) but has the +downside of unchanged operating systems not being supported. However, new +hardware features (e.g., Intel VT and AMD-V) are overcoming this limitation. + + +Terminology +----------- +The Xen open-source community has a number of terms that you should be +familiar with. + +A "domain" is Xen's term for a virtual machine. + +"Domain 0" is the first virtual machine. It can control all other virtual +machines. It also (usually) controls the physical hardware. A kernel used in +domain 0 may sometimes be referred to as a dom0 kernel. + +"Domain U" is any virtual machine other than domain 0. The "U" indicates it +is unprivileged (that is, it cannot control other domains). A kernel used in +an unprivileged domain may be referred to as a domU kernel. + +SUSE documentation will use the more industry-standard term "virtual +machine", or "VM", rather than "domain" where possible. And to that end, +domain 0 will be called the "virtual machine server", since it essentially the +server on which the other VMs run. All other domains are simply "virtual +machines". + +The acronym "HVM" refers to a hardware-assisted virtual machine. These are +VMs that have not been modified (e.g., Windows) and therefore need hardware +support such as Intel VT or AMD-V to run on Xen. + + +Kernels +------- +Xen supports two kinds of kernels: A privileged kernel (which boots the +machine, controls other VMs, and usually controls all your physical hardware) +and unprivileged kernels (which can't control other VMs, and usually don't need +drivers for physical hardware). The privileged kernel boots first (as the VM +server); an unprivileged kernel is used in all subsequent VMs. + +The VM server takes control of the boot process after Xen has initialized the +CPU and the memory. This VM contains a privileged kernel and all the hardware +drivers. + +For the other virtual machines, you usually don't need the hardware drivers. +(It is possible to hide a PCI device from the VM server and re-assign it to +another VM for direct access, but that is a more advanced topic.) Instead you +use virtual network and block device drivers in the unprivileged VMs to access +the physical network and block drivers in the VM server. + +For simplicity, SUSE ships a single Xen-enabled Linux kernel, rather than +separate privileged and unprivileged kernels. As most of the hardware drivers +are modules anyway, using this kernel as an unprivileged kernel has very +little extra overhead. + +The kernel is contained in the kernel-xen package, which you need to install to +use Xen. + + +Booting +------- +If you installed Xen during the initial SUSE installation, or installed one +of the kernel-xen* packages later, a "XEN" option should exist in your Grub +bootloader. Select that to boot SUSE on top of Xen. + +If you want to add additional entries, or modify the existing ones, you may +run the YaST2 Boot Loader program. + +Once you have booted this configuration successfully, you are running Xen with +a privileged kernel on top of it. + + +Xen Boot Parameters +------------------- +Normally, xen.gz requires no parameters. However, in special cases (such as +debugging or a dedicated VM server) you may wish to pass it parameters. + +Adding parameters to xen.gz can be done by editing the /etc/default/grub file. +Add the following line to this file; GRUB_CMDLINE_XEN_DEFAULT="<parameters>". The +parameters may be valid options passed to xen.gz (the hypervisor). After +editing this file, you must first run 'grub2-mkconfig -o /boot/grub2/grub.cfg' +and then reboot for the changes to take effect. + +For more information on how to add options to the hypervisor, see the sections +below called; "Dom0 Memory Ballooning" and "Troubleshooting". + +For a more complete discussion of possible parameters, see the user +documentation in the xen-doc-html package. + + +Creating a VM with virt-install +------------------------------- +The virt-install program (part of the virt-install package, and accessible +through YaST's Control Center) is the recommended method to create VMs. This +program handles creating both the VM's libvirt XML definition and disk(s). +It can help install any operating system, not just SUSE. virt-install has both +a command line only mode and a graphical wizard mode that may be used to define +and start VM installations. + +virt-install may be launched from the virt-manager VM management tool. Start +virt-manager either from the YaST Control Center or from the command line. +The installation icon from the main virt-manager screen may be selected to +begin the virt-install installation wizard. + +The use of virt-install or virt-manager requires the installation of the +libvirt packages and the libvirt daemon must be running on the host unless +you are managing a remote host. + +Each VM needs to have its own root filesystem. The root filesystem can live +on a block device (e.g., a hard disk partition, or an LVM2 or EVMS volume) or +in a file that holds the filesystem image. + +VMs can share filesystems, such as /usr or /opt, that are mounted read-only +from _all_ VMs. Never try to share a filesystem that is mounted read-write; +filesystem corruption will result. For sharing writable data between VMs, use +NFS or other networked or cluster filesystems. + +When defining the virtual network adapter(s), we recommend using a static MAC +for the VM rather than allowing Xen to randomly select one each time the VM +boots. (See "Network Troubleshooting" below.) The Xen Project has been +allocated a range of MAC addresses with the OUI of 00-16-3E. By using MACs +from this range you can be sure they will not conflict with any physical +adapters. + +When the VM shuts down (because the installation -- or at least the first +stage of it -- is done), the wizard finalizes the VM's configuration and +restarts the VM. + +The creation of VMs can be automated; read the virt-install man page for more +details. The installation of an OS within the VM can be automated if the OS +supports it. + + +Creating a VM with vm-install +----------------------------- +The vm-install program is also provided to create VMs. Like virt-install, +this optional program handles creating both the VM's libvirt XML definition +and disk(s). It also creates a legacy configuration file for use with 'xl'. +It can help install any operating system, not just SUSE. + +From the command line, run "vm-install". If the DISPLAY environment variable +is set and the supporting packages (python-gtk) are installed, a graphical +wizard will start. Otherwise, a text wizard will start. If vm-install is +started with the '--use-xl' flag, it will not require libvirt nor attempt +to communicate with libvirt when creating a VM and instead will only use the +'xl' toolstack to start VM installations. + +Once you have the VM configured, click "OK". The wizard will now create a +configuration file for the VM, and create a disk image. The disk image will +exist in /var/lib/xen/images, and a corresponding configuration file will exist +in /etc/xen/vm. The operating system's installation program will then run +within the VM. + +When the VM shuts down (because the installation -- or at least the first +stage of it -- is done), the wizard finalizes the VM's configuration and +restarts the VM. + +The creation of VMs can be automated; read the vm-install man page for more +details. The installation of an OS within the VM can be automated if the OS +supports it. + + +Creating a VM Manually +---------------------- +If you create a VM manually (as opposed to using virt-install, which is the +recommended way), you will need to create a disk (or reuse an existing one) +and a configuration file. + +If you are using a disk or disk image that is already installed with an +operating system and you want the VM to run in paravirtual mode, you'll +probably need to replace its kernel with a Xen-enabled kernel. + +The kernel and ramdisk used to bootstrap the VM must match any kernel modules +that might be present in the VM's disk. It is possible to manually copy the +kernel and ramdisk from the VM's disk (for example, after updating the kernel +within that VM) to the VM server's filesystem. However, an easier (and less +error-prone) method is to use /usr/lib/grub2/x86_64-xen/grub.xen as the VM +kernel. When the new VM is started, it runs grub.xen to read the grub +configuration from the VM disk, selecting the configured kernel and ramdisk +so that it can be used to bootstrap the new VM. + +Next, make a copy of one of the /etc/xen/examples/* files, and modify it to +suit your needs. You'll need to change (at very least) the "name" and "disk" +parameters. See /etc/xen/examples/ for example configuration files. + + +Managing Virtual Machines +------------------------- +VMs can be managed from the command line using 'virsh' or from virt-manager. + +VMs created by virt-install or vm-install (without vm-install's --use-xl flag) +will automatically be defined in libvirt. VMs defined in libvirt may be managed +by virt-manager or from the command line using the 'virsh' command. However, +if you copy a VM from another machine and manually create a VM XML configuration +file, you will need to import it into libvirt with a command like: + virsh define <path to>/my-vm.xml +This imports the configuration into libvirt (and therefore virt-manager becomes +aware of it, also). + +Now to start the VM: + virsh start my-vm +or start it from virt-manager's graphical menu. + +Have a look at running VMs with "virsh list". Attach to the VM's text console +with "virsh console <vm-name>". Attaching to multiple VM consoles is most +conveniently done with the terminal multiplexer "screen". + +Have a look at the other virsh commands by typing "virsh help". Note that most +virsh commands must be done as root. + + +Changes in the Xen VM Management Toolstack +------------------------------------------ +With SUSE Linux Enterprise Server 12, the way VMs are managed has changed +when compared with older SLES versions. Users familiar with the 'xm' command +and the xend management daemon will notice that these are absent. The xm/xend +toolstack has been replaced with the xl toolstack. The xl toolstack is +intended to remain backwards compatible with existing xm domain configuration +files. Most 'xm' commands can simply be replaced with 'xl'. One significant +difference is that xl does not support the concept of Managed Domains. The xl +command can only modify running VMs. Once the VM is shutdown, there is no +preserved state information other than what is saved in the configuration +file used to start the VM. In order to provide Managed Domains, users are +encouraged to use libvirt and it's tools to create and modify VMs. These +tools include the command line tool 'virsh' and the graphical tools +virt-manager and virt-install. + +Warning: Using xl commands to modify libvirt managed domains will result in +errors when virsh or virt-manager is used. Please use only virsh or +virt-manager to manage libvirt managed domains. If you are not using libvirt +managed domains then using xl commands is the correct way to modify running +domains. + + +Using the Mouse via VNC in Fully Virtual Mode +--------------------------------------------- +In a fully virtualized VM, the mouse may be emulated as a PS/2 mouse, USB +mouse, or USB tablet. The virt-install tool selects the best emulation that is +known to be automatically detected and supported by the operating system. + +However, when accessing some fully virtualized operating systems via VNC, the +mouse may be difficult to control if the VM is emulating a PS/2 mouse. PS/2 +provides mouse deltas, but VNC only provides absolute coordinates. In such +cases, you may want to manually switch the operating system and VM to use a +USB tablet. + +Emulation of a SummaSketch graphics tablet is provided for this reason. To +use the Summa emulation, you will need to configure your fully virtualized OS. +Note that the virtual tablet is connected to the second virtual serial port +(/dev/ttyS1 or COM2). + +Most Linux distributions ship with appropriate drivers, and only need to be +configured. To configure gpm, edit /etc/sysconfig/mouse and add these lines: +MOUSETYPE="summa" +XMOUSETYPE="SUMMA" +DEVICE=/dev/ttyS1 +The format and location of your configuration file could vary depending upon +your Linux distribution. The goal is to run the gpm daemon as follows: + gpm -t summa -m /dev/ttyS1 +X also needs to be configured to use the Summa emulation. Add the following +stanza to /etc/X11/xorg.conf, or use your distribution's tools to add these +settings: +Section "InputDevice" + Identifier "Mouse0" + Driver "summa" + Option "Device" "/dev/ttyS1" + Option "InputFashion" "Tablet" + Option "Mode" "Absolute" + Option "Name" "EasyPen" + Option "Compatible" "True" + Option "Protocol" "Auto" + Option "SendCoreEvents" "on" + Option "Vendor" "GENIUS" +EndSection +After making these changes, restart gpm and X. + + +HVM Console in Fully Virtual Mode +--------------------------------- +When running a VM in fully virtual mode, a special console is available that +provides some additional ways to control the VM. Press Ctrl-Alt-2 to access +the console; press Ctrl-Alt-1 to return to the VM. While at the console, +type "help" for help. + +The two most important commands are "send-key" and "change". The "send-key" +command allows you to send any key sequence to the VM, which might otherwise +be intercepted by your local window manager. + +The "change" command allows the target of a block device to be changed; for +example, use it to change from one CD ISO to another. Some versions of Xen +have this command disabled for security reasons. Consult the online +documentation for workarounds. + + +Networking +---------- +Your virtual machines become much more useful if you can reach them via the +network. Starting with openSUSE11.1 and SLE11, networking in domain 0 is +configured and managed via YaST. The yast2-networking module can be used +to create and manage bridged networks. During initial installation, a bridged +networking proposal will be presented if the "Xen Virtual Machine Host Server" +pattern is selected. The proposal will also be presented if you install Xen +after initial installation using the "Install Hypervisor and Tools" module in +YaST. + +The default proposal creates a virtual bridge in domain 0 for each active +ethernet device, enslaving the device to the bridge. Consider a machine +containing two ethernet devices (eth0 and eth1), both with active carriers. +YaST will create br0 and br1, enslaving the eth0 and eth1 devices repectively. + +VMs get a virtual network interface (e.g. eth0), which is visible in domain 0 +as vifN.0 and connected to the bridge. This means that if you set up an IP +address in the VMs belonging to the same subnet as br0 from your domain 0, +you'll be able to communicate not only with the other slave VMs, but also with +domain 0 and with the external network. If you have a DHCP server running in +your network, your VMs should succeed in getting an IP address. + +Be aware that this may have unwanted security implications. You may want to +opt for routing instead of bridging, so you can set up firewalling rules in +domain 0. + +Please read about the network configuration in the Xen manual. You can set up +bridging or routing for other interfaces also. + +For debugging, here's what happens on bootup of a domU: +- xenstored saves the device setup in xenstore +- domU is created +- vifN.0 shows up in domain 0 and a hotplug event is triggered +- hotplug is /sbin/udev; udev looks at /etc/udev/rules.d/40-xen.rules and + calls /etc/xen/scripts/vif-bridge online +- vif-bridge set the vifN.0 device up and enslaves it to the bridge +- eth0 shows up in domU (hotplug event triggered) +Similar things happen for block devices, except that /etc/xen/scripts/block is +called. + +It's not recommended to use ifplugd nor NetworkManager for managing the +interfaces if you use bridging mode. Use routing with nat or proxy-arp +in that case. You also need to do that in case you want to send out packets +on wireless; you can't bridge Xen "ethernet" packets into 802.11 packets. + + +Network Troubleshooting +----------------------- +First ensure the VM server is configured correctly and can access the network. + +Do not use ifplugd or NetworkManager, neither are bridge aware. + +Specify a static virtual MAC in the VM's configuration file. Random MACs can +be problematic, since with each boot of the VM it appears that some hardware +has been removed (the previous random MAC) and new hardware is present (the +new random MAC). This can cause network configuration files (which were +intended for the old MAC) to not be matched up with the new virtual hardware. + +In the VM's filesystem, ensure the ifcfg-eth* files are named appropriately. +For example, if you do decide to use a randomly-selected MAC for the VM, the +ifcfg-eth* file must not include the MAC in its name; name it generically +("ifcfg-eth0") instead. If you use a static virtual MAC for the VM, be sure +that is reflected in the file's name. + + +Thread-Local Storage +-------------------- +For some time now, the glibc thread library (NPTL) has used a shortcut to +access thread-local variables at a negative segment offset from the segment +selector GS instead of reading the linear address from the TDB (offset 0). +Unfortunately, this optimization has been made the default by the glibc and +gcc maintainers, as it saves one indirection. For Xen this is bad: The access +to these variables will trap, and Xen will need to use some tricks to make the +access work. It does work, but it's very slow. + +SUSE Linux 9.1 and SLES 9 were prior to this change, and thus are not +affected. SUSE Linux 9.2 and 9.3 are affected. For SUSE Linux 10.x and SLES +10, we have disabled negative segment references in gcc and glibc, and so +these are not affected. Other non-SUSE Linux distributions may be affected. + +For affected distributions, one way to work around the problem is to rename +the /lib/tls directory, so the pre-i686 version gets used, where no such +tricks are done. An example LSB-compliant init script which automates these +steps is installed at /usr/share/doc/packages/xen/boot.xen. This script +renames /lib/tls when running on Xen, and restores it when not running on Xen. +Modify this script to work with your specific distribution. + +Mono has a similar problem, but this has been fixed in SUSE Linux 10.1 and +SLES 10. Older or non-SUSE versions of Mono may have a performance impact. + + +Security +-------- +Domain 0 has control over all domains. This means that care should be taken to +keep domain 0 safe; ideally you strip it down to only do as little there as +possible, preferably with no local users except for the system administrator. +Most commands in domain 0 can only be performed as root, but this protection +scheme only has moderate security and might be defeated. In case domain 0 is +compromised, all other domains are compromised as well. + +To allow relocation of VMs (migration), the receiving machine listens on TCP +port 8002. You might want to put firewall rules in place in domain 0 to +restrict this to machines which you trust. Relocating VMs with sensitive data +is not a good idea in untrusted networks, since the data is not sent encrypted. + +The memory protections for the domUs are effective; so far no way to break out +of a virtual machine is known. A VM is an effective jail. + + +Limitations +----------- +When booting, Linux reserves data structures matching the amount of RAM found. +This has the side-effect that you can't dynamically grow the memory beyond +what the kernel has been booted with. But you can trick domU Linux to prepare +for a larger amount of RAM by passing the mem= boot parameter. + +The export of virtual hard disks from files in Xen can be handled via the +loopback driver (although in Xen >= 3.0.4, this is can be replaced by the +"blktap" user-space driver.) If you are still using loopback, it may be +possible to run out of loopback devices, as by default only 64 are supported. +You can change this by inserting: +options loop max_loop=128 +into /etc/modprobe.conf.local in domain 0. + + +Upgrading the Host Operating System +----------------------------------- +When upgrading the host operating system from one major release to another +(for example, SLES 11 to SLES 12 or openSUSE 12.3 to openSUSE 13.1) or when +applying a service pack like SLES 11 SP3 to SLES 11 SP2 all running VMs must +be shut down before the upgrade process is begun. + +On versions of SLES 11 and openSUSE 12 you are using the xm/xend toolstack. +After upgrading to SLES 12 and newer openSUSE versions this toolstack will be +replaced with the xl toolstack. The xl toolstack does not support Managed +Domains. If you wish to continue using Managed Domains you must switch to +using libvirt and its command line interface 'virsh'. You may also use +virt-manager as a GUI interface to libvirt. After upgrading the host but +before you can begin using libvirt on VMs that were previously managed by +xm/xend, you must run a conversion tool called /usr/sbin/xen2libvirt for all +VMs. + +For example, to convert all domains previously managed by xend: + xen2libvirt -r /var/lib/xend/domains/ + +Now typing 'virsh list --all' will show your previously xend managed domains +being managed by libvirt. Run 'xen2libvirt -h' to see additional options for +using this tool. + + +Memory Ballooning in VMs +------------------------ +Setting a VMs maximum memory value greater than the initial memory value +requires support for memory ballooning in the VMs operating system. Modern SLES +and openSUSE guests have this capability built-in. Windows installation media +does not support memory ballooning so you must first install the VM without +memory ballooning (maxmem equal to initial memory). After the installation, the +Virtual Machine Driver Pack (vmdp) must be installed. After this, the VMs +maxmem value may be increased. A reboot of the VM is required for this action +to take effect. + + +Dom0 Memory Ballooning +---------------------- +It is strongly recommended that you dedicate a fixed amount of RAM to dom0 +rather than relying on dom0 auto ballooning. Doing so will ensure your dom0 +has enough resources to operate well and will improve startup times for your +VMs. The amount of RAM dedicated to dom0 should never be less than the +recommended minimum amount for running your SUSE distribution in native mode. +The actual amount of RAM needed for dom0 depends on several factors including +how much physical RAM is on the host, the number of physical CPUs, and the +number of VMs running simultaneously where each VM has a specific requirement +for RAM. The following example shows the syntax for doing this. This would be +added to your grub1 or grub2 configuration; + +Grub2 Example: + Edit /etc/default/grub and add, + GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M,max:1024M" + and then run + grub2-mkconfig -o /boot/grub2/grub.cfg + +Grub1 Example: + Edit /boot/grub/menu.lst and edit the line containing xen.gz + kernel /boot/xen.gz dom0_mem=1024M,max:1024M + +After modifying your grub configuration, you will need to edit /etc/xen/xl.conf +and set autoballoon="off". This will prevent xl from automatically adjusting +the amount of memory assigned to dom0. Reboot the host for these changes to +take effect. + + +Adjusting LIBXL_HOTPLUG_TIMEOUT at runtime +------------------------------------------ +A domU with a large amount of disks may run into the hardcoded +LIBXL_HOTPLUG_TIMEOUT limit, which is 40 seconds. This happens if the +preparation for each disk takes an unexpected large amount of time. Then +the sum of all configured disks and the individual preparation time will +be larger than 40 seconds. The hotplug script which does the preparation +takes a lock before doing the actual preparation. Since the hotplug +scripts for each disk are spawned at nearly the same time, each one has +to wait for the lock. Due to this contention, the total execution time +of a script can easily exceed the timeout. In this case libxl will +terminate the script because it has to assume an error condition. + +Example: +10 configured disks, each one takes 3 seconds within the critital +section. The total execution time will be 30 seconds, which is still +within the limit. With 5 additional configured disks, the total +execution time will be 45 seconds, which would trigger the timeout. + +To handle such setup without a recompile of libxl, a special key/value +has to be created in xenstore prior domain creation. This can be done +either manually, or at system startup. A dedicated systemd service file +exists to set the required value. To enable it, run these commands: + +/etc/systemd/system # systemctl enable xen-LIBXL_HOTPLUG_TIMEOUT.service +/etc/systemd/system # systemctl start xen-LIBXL_HOTPLUG_TIMEOUT.service + + +In case the value in this service file needs to be changed, a copy with +the exact same name must be created in the /etc/systemd/system directory: + +/etc/systemd/system # cat xen-LIBXL_HOTPLUG_TIMEOUT.service +[Unit] +Description=set global LIBXL_HOTPLUG_TIMEOUT +ConditionPathExists=/proc/xen/capabilities + +Requires=xenstored.service +After=xenstored.service +Requires=xen-init-dom0.service +After=xen-init-dom0.service +Before=xencommons.service + +[Service] +Type=oneshot +RemainAfterExit=true +ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities +ExecStart=/usr/bin/xenstore-write /libxl/suse/per-device-LIBXL_HOTPLUG_TIMEOUT 10 + +[Install] +WantedBy=multi-user.target + +In this example the per-device value will be set to 10 seconds. + +The change for libxl which handles this xenstore value will enable +additional logging if the key is found. That extra logging will show how +the execution time of each script. + + +Troubleshooting +--------------- +First try to get Linux running on bare metal before trying with Xen. + +Be sure your Xen hypervisor (xen) and VM kernels (kernel-xen) are compatible. +The hypervisor and domain 0 kernel are a matched set, and usually must be +upgraded together. Consult the online documentation for a matrix of supported +32- and 64-bit combinations + +If you have trouble early in the boot, try passing pnpacpi=off to the Linux +kernel. If you have trouble with interrupts or timers, passing lapic to Xen +may help. Xen and Linux understand similar ACPI boot parameters. Try the +options acpi=off,force,ht,noirq or acpi_skip_timer_override. + +Other useful debugging options to Xen may be nosmp, noreboot, mem=4096M, +sync_console, noirqbalance (Dell). For a complete list of Xen boot options, +consult the "Xen Hypervisor Command Line Options" documentation. + +If domain 0 Linux crashes on X11 startup, please try to boot into runlevel 3. + +1) As a first step in debugging Xen you should add the following hypervisor +options to the xen.gz line in your grub configuration file. After rebooting, +the 'xl dmesg' command will produce more output to better analyze problems. + +Grub2 Example: + Edit /etc/default/grub and add, + GRUB_CMDLINE_XEN_DEFAULT="loglvl=all guest_loglvl=all" + and then run, + grub2-mkconfig -o /boot/grub2/grub.cfg + +Grub1 Example: + Edit /boot/grub/menu.lst and edit the line containing xen.gz + kernel /boot/xen.gz loglvl=all guest_loglvl=all + +2) With the log levels specified above and the host rebooted, more useful +information about domain 0 and running VMs can be obtained using the +'xl dmesg' and 'xl debug-keys' commands. For example, from the command line +run: + xl debug-keys h +and then run: + xl dmesg +Note that at the end of the output from 'xl dmesg' it includes help on a +series of commands that may be passed to 'xl debug-keys'. For example, by +passing the letter 'q' to 'xl debug-keys' it will "dump domain (and guest +debug) info". + xl debug-keys q +Now you can again run 'xl dmesg' to see the domain and guest debug info. + +3) Sometimes it is useful to attach a serial terminal and direct Xen to send +its output not only to the screen, but also to that terminal. First you need +to attach a serial cable from the serial port on the server to a second +machine's serial port. That second machine could be running minicom (or some +other program that can be setup to read from the serial port). Do the +following to prepare Xen to send its output over this serial line. + +Grub2 Example: + Edit /etc/default/grub and add, + GRUB_CMDLINE_XEN_DEFAULT="loglvl=all guest_loglvl=all console=com1 com1=115200,8n1" + Also append additional serial flags to the option below such that it appears as, + GRUB_CMDLINE_LINUX_DEFAULT="<pre-existing flags> console=ttyS0, 115200" + where pre-existing flags are those options already present and then run, + grub2-mkconfig -o /boot/grub2/grub.cfg + +Grub1 Example: + Edit the /etc/grub/menu.lst file and add the following to the Xen entry, + kernel /boot/xen.gz loglvl=all guest_loglvl=all console=com1 com1=115200,8n1 + module /boot/vmlinuz-xen <pre-existing flags> console=ttyS0, 115200 + +Once the hardware and software are configured correctly the server is rebooted +and its output should appear on the other terminal as the server boots up. + +4) To further debug Xen or domain 0 Linux crashes or hangs, it may be useful to +use the debug-enabled hypervisor, and/or to prevent automatic rebooting. + +Grub2 Example: + Edit /etc/default/grub and add, + GRUB_CMDLINE_XEN_DEFAULT="noreboot loglvl=all guest_loglvl=all" + Edit /boot/grub2/grub.cfg and look for these lines: + multiboot /boot/xen-<version>.gz ... + and replace them with: + multiboot /boot/xen-dbg-<version>.gz' ... Replace <version> with the + appropriate version string contained in the filename. Note that running + grub2-mkconfig -o /boot/grub2/grub.cfg will overwrite all manual changes + made to grub.cfg. + +Grub1 Example: + Edit your menu.lst configuration from something like this: + kernel (hd0,5)/xen.gz + To something like this: + kernel (hd0,5)/xen-dbg.gz noreboot loglvl=all guest_loglvl=all + +All hypervisor options require a reboot to take effect. After rebooting, the +Xen hypervisor will write any error messages to the log file (viewable with +the "xl dmesg" command). + +If problems persist, check if a newer version is available. Well-tested +versions will be shipped with SUSE and via YaST Online Update. + + +Resources +--------- +https://www.suse.com/documentation/sles11/singlehtml/book_xen/book_xen.html +http://doc.opensuse.org/products/draft/SLES/SLES-xen_sd_draft/cha.xen.basics.html + + +Feedback +-------- +In case you have remarks about, problems with, ideas for, or praise for Xen, +please report it back to the xen-devel list: + xen-devel@lists.xen.org +If you find issues with the packaging or setup done by SUSE, please report +it through bugzilla: + https://bugzilla.suse.com + + + ENJOY! + Your SUSE Team. |
