Xen Project Hypervisor

__  __ 
\ \/ /___ _ __ 
 \  // _ \ '_ \
 /  \  __/ | | |
/_/\_\___|_| |_|



Xen 4.1; 4.3; 4.4; 4.6; 4.11;
Help: “lynx https://www.suse.com/documentation/sles-12/vt-best-practices/data/vt-best-practices.html”

XEN Optionen sollten in den Kernel compiliert sein.
Reihenfolge. Erst neuster Kernel dann neustes XEN und dann OpenVswitch

gnuTLS: Siehe TLSgnu Doku:

dev86 (Dev86bin):
“lynx http://www.debath.co.uk/dev86/”
“wget http://www.debath.co.uk/dev86/Dev86bin-0.16.19.tar.gz” oder “wget http://v3.sk/~lkundrak/dev86/archive/Dev86bin-0.16.20.tar.gz”
“cp -frv /root/public/Dev86bin-0.16.18.tar.gz /”
“tar -xzf /Dev86bin-0.16.18.tar.gz” kopiert die Binaries nach /usr.
ggf. “chmod 777 /usr/bin/bcc”

ggf. den Proxy einstellen
“vi /etc/sysconfig/proxy” ->
PROXY_ENABLED=”yes”
HTTP_PROXY=”http://192.168.5.20:8080″
HTTPS_PROXY=”http://192.168.5.20:8080″
FTP_PROXY=”http://192.168.5.20:8080″

“lvextend -L+5.5G /dev/mapper/system-usr”
“btrfs filesystem resize max /usr”

Latex (Tex) + ca. 5 GB auf /usr :
“wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz”
“tar -xzf install-tl-unx.tar.gz”
“cd install-tl-20111203”
“./install-tl”
“export PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH” bzw. “export PATH=/usr/local/texlive/2013/bin/x86_64-linux:$PATH”
“latex small2e”

graphviz.org:
“wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.28.0.tar.gz”
“tar -xzf graphviz-2.28.0.tar.gz”
“cd graphviz-2.28.0
Bei 64 BIT”./configure” oder bei SuSE “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –with-png=yes”
Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include –with-png=yes”
“make”
“make install” kommt zu Fehler. Ignorieren ????

libPNG (1.2.26 !!! oder 1.5 !!! MUSS VERSION 1.4 sein. Stand 2.9.13):
“wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.26.tar.gz” bzw. http://www.libpng.org “wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng14/libpng-1.4.12.tar.gz”
“tar -xvzf libpng-1.2.26.tar.gz”
“cd libpng-1.2.26”
Bei 64 BIT”./configure” oder bei SuSE “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”

xfig (fig2dev) macht bei openSUSE 12.3 probleme sowie transfig auch:
Bei Debian “apt-get install xfig transfig xfig-libs”
“transfig” am besten via Yast2 installieren.
“zypper in transfig”
“wget http://downloads.sourceforge.net/mcj/xfig.3.2.5b.full.tar.gz”
“lynx http://sourceforge.net/projects/mcj/files/mcj_dist_src/3.0/transfig.3.2.5a.tar.gz/download”
“tar -xzf xfig.3.2.5b.full.tar.gz”
“cd xfig.3.2.5b”
“xmkmf”
“mkdir /usr/include/X11/Xaw3d”
“cp -frv /usr/include/X11/Xaw/* /usr/include/X11/Xaw3d/”
“make”

transfix 3.2.5.A
“wget http://downloads.sourceforge.net/mcj/transfig.3.2.5a.tar.gz”
“tar -xzf transfig.3.2.5a.tar.gz”
“cd transfig.3.2.5a”
“xmkmf”
“make Makefiles”
“make”
“make install”

Bridge Utils (macht bei openSUSE 12.3 Probleme):
ggf. via yast installieren
Bei Debain “apt-get install bridge-utils”
“wget https://www.kernel.org/pub/linux/utils/net/bridge-utils/bridge-utils-1.6.tar.gz”
“lynx http://sourceforge.net/projects/bridge”
“tar -xzf bridge-utils-1.5.tar.gz”
“cd bridge-utils-1.5”
“autoconf”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
ggf. “cp -frv /usr/src/linux-3.10.9/arch/x86/include/asm/*.h /usr/include/asm/”
ggf. “mkdir /usr/include/uapi/asm” “cp -frv /usr/src/linux-3.10.9/arch/x86/include/uapi/asm/*.h /usr/include/uapi/asm”

“make” Schlägt fehl.
“make install”
“brctl show”
“brctl -V”

VNC:
“lynx www.realvnc.com”
“tar -xzf vnc-4_1_3-x86_linux.tar.gz”
“cd vnc-4_1_3-x86_linux”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“./vncinstall” executables werde nach /usr/local/bin kopiert
“vncviewer 172.16.190.12”
Fehlermeldung: “vncviewer: error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory”
Lösung: compat-2010.1.31-9.1.1.i586.rpm runterladen und installieren (http://software.opensuse.org/search?q=compat&baseproject=openSUSE%3A12.1&lang=de&exclude_debug=true)

bei Debain “apt-get install git” und “apt-get install cmake”

yail:
“git clone git://github.com/lloyd/yajl”
“cd yajl”
“./configure -p /usr/”
“make”
“make install”
ggf. “ln -s /usr/lib/libyajl.so.2 /usr/lib64/libyajl.so.2”

Markdown:
“lynx https://pypi.python.org/pypi/Markdown/2.6.8”
“wget https://pypi.python.org/packages/source/M/Markdown/Markdown-2.3.1.tar.gz#md5=82f6828ec2292dda52fc38b743776bc6”
“tar -xzf Markdown-2.3.1.tar.gz”
“cd Markdown-2.3.1”
“python setup.py install”

GCC (dev) 32 bit via yast wegen “ls -al /usr/include/gnu/stubs-32.h” gcc-32bit; gcc-c++-32bit; glibc-devel-32bit
“zypper install gcc-32bit gcc-c++-32bit glibc-devel-32bit”
Bei Debian “apt-get install libc6-dev-i386”

gmp (am besten via Yast2 installieren) (gmp-ecm-devel):
Ab Ver. 6 unter openSUSE 13.1 kann man es auch kompilieren. Bei Debian funktioniert es auch reibungslos.
“wget ftp://ftp.gmplib.org/pub/gmp/gmp-5.1.2.tar.xz”
“tar -xf gmp-5.1.2.tar.xz”
“cd gmp-5.1.2”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”
“ldconfig”

Bei Debian “apt-get install gettext”
Bei Debian 8 “apt-get install libpixman-1-dev”
Bei Debian 8 ggf. “ln -s /usr/include/asm-generic /usr/include/asm”
Bei Debian 9 (iasl)
“wget https://acpica.org/sites/acpica/files/acpica-unix-20170728.tar.gz”
“tar -xzf acpica-unix-20170728.tar.gz”
“cd acpica-unix-20170728”
“make clean”
“make”
“make install”

(XZ util & LZMA)
wget https://tukaani.org/xz/xz-5.2.3.tar.gz
tar -xzf xz-5.2.3.tar.gz
cd xz-5.2.3
./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include
make
make install
xz –version


Bei Debian:
“apt-get install libglib2.0-dev”
“apt-get install libaio-dev libaio1”
“apt-get install texinfo”


GNU patch:
wget ftp://ftp.gnu.org/gnu/patch/patch-2.7.6.tar.gz
cd patch-2.7.6
./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include
make
make install

textinfo (makeinfo):
wget http://ftp.gnu.org/gnu/texinfo/texinfo-6.6.tar.gz
tar -xzf texinfo-6.6.tar.gz
cd texinfo-6.6
./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include
make
make install

Pixman
wget https://www.cairographics.org/releases/pixman-0.38.0.tar.gz
tar -xzf pixman-0.38.0.tar.gz
cd tar -xzf pixman-0.38.0
./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include
make
make install


Leap 42.1 (Kernel 4.5.X) und Lenovo T500 Notebooks mit XEN 4.6.X, bootet nicht.
Mit OpenSUSE 13.2 und Kernel 3.17.8 und XEN 4.6.0 funktioniert alles reibungslos

####################################################################################################
Xen 4.4 mach probleme bei der Migration von 4.4 nach 4.3 sowie auf 4.6 🙁
“lynx http://xen.org”
“mkdir /usr/xen”
“cp -frv xen-4.1.2.tar.gz /usr/xen”
“cd /usr/xen”
“tar -xzf xen-4.1.2.tar.gz”
“cd xen-4.1.2/”
ab XEN 4.3 “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –enable-stubdom –prefix=/usr”
bei XEN 4.6 – 4.11 “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –enable-stubdom –prefix=/usr”
Bei Debian:
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include –enable-stubdom –prefix=/usr”

ggf. “export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/:/usr/lib/:/lib64/:/lib”
“vi /root/temp/xen-4.3.0/stubdom/Makefile” -> TARGET_LDFLAGS += -nostdlib -L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib \
-L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib64
Bei OpenSuSE 13.2 und gnuTLS 3.3.9 (nettle 2.X) “vi /root/temp/xen-4.3.4/tools/qemu-xen-traditional/configure” ->
#vnc_tls=”yes”

“cp -frv /usr/src/linux-3.10.9/arch/x86/include/generated/asm/unistd_64_x32.h /usr/include/asm/”
“cp -frv /usr/src/linux-3.10.9/usr/include/linux/kernel.h /usr/include/linux/”

“vi /usr/xen/xen-4.3.0/stubdom/Makefile” ->
nach -lgmp suchen (ca. Zeile 429)
vor “-lgmp” “-L/usr/lib64” hinzufügen
“vi /usr/xen/xen-4.3.0/stubdom/ioemu/config-host.mak” -> hinzufügen von “-L/usr/lib64 -L/usr/lib -L/lib -L/lib64”
LDFLAGS= -L/usr/lib64 -L/usr/lib -nostdlib -L/usr/xen/xen-4.3.0/stubdom/cross-root-x86_64/x86_64-xen-elf/lib
Ab 4.4:
vi /root/temp/xen_upgrade/xen-4.4.0/tools/qemu-xen-dir/config-host.mak
vi /root/temp/xen_upgrade/xen-4.4.0/tools/qemu-xen-traditional-dir/config-host.mak
Das gleiche wie oben hinzufügen !!!!

Ggf. ” cp -frv /root/temp/glibc-2.18/libio/bits/stdio2.h /usr/include/bits/stdio2.h”
Bei älteren gnuTLS Versionen (openSUSE 13.1).
Problem:
/root/temp/xen-4.6.0/tools/qemu-xen-traditional/vnc.c:2172: undefined reference to `gnutls_kx_set_priority’
/root/temp/xen-4.6.0/tools/qemu-xen-traditional/vnc.c:2179: undefined reference to `gnutls_certificate_type_set_priority’
/root/temp/xen-4.6.0/tools/qemu-xen-traditional/vnc.c:2186: undefined reference to `gnutls_protocol_set_priority’
collect2: error: ld returned 1 exit status
Lösung:
Probleme auskommentieren/deaktivieren
“vi /root/temp/xen-4.6.0/tools/qemu-xen-traditional/vnc.c” ->
/*
if (gnutls_kx_set_priority(vs->tls_session, NEED_X509_AUTH(vs) ? kx_x509 : kx_anon) < 0) {
gnutls_deinit(vs->tls_session);
vs->tls_session = NULL;
vnc_client_error(vs);
return -1;
}
*/
/*
if (gnutls_certificate_type_set_priority(vs->tls_session, cert_type_priority) < 0) {
gnutls_deinit(vs->tls_session);
vs->tls_session = NULL;
vnc_client_error(vs);
return -1;
}
*/
/*
if (gnutls_protocol_set_priority(vs->tls_session, protocol_priority) < 0) {
gnutls_deinit(vs->tls_session);
vs->tls_session = NULL;
vnc_client_error(vs);
return -1;
}
*/

“time make” ab V 4.6 nicht mehr nötig !!!
“time make world” #”make dist” (To rebuild an existing tree without modifying the config)
#######
Wenn folgender Fehler auftrit. “make” bricht dann mit fehler ab:
There are undefined symbols in the BIOS:
U _GLOBAL_OFFSET_TABLE_
Lösung:
Für XEN 4.9 und Debian 9
“sed -i -e ‘/^CFLAGS/ s/$$/ -fno-pie/’ tools/firmware/rombios/32bit/tcgbios/Makefile”
“sed -i -e ‘/^CFLAGS/ s/$$/ -fno-pie/’ tools/firmware/rombios/32bit/Makefile”
ggf. “vi tools/firmware/rombios/32bit/Makefile” -> ändern
#CFLAGS += $(CFLAGS_xeninclude) -I.. -I../../../libacpi
CFLAGS += $(CFLAGS_xeninclude) -I.. -I../../../libacpi -fno-PIE
“vi tools/firmware/rombios/32bit/tcgbios/Makefile” -> ändern
#CFLAGS += $(CFLAGS_xeninclude) -I.. -I../.. -I../../../../libacpi
CFLAGS += $(CFLAGS_xeninclude) -I.. -I../.. -I../../../../libacpi -fno-PIE

########
“time make install”
“./install.sh” oder “~/xen-4.3.0/dist/install.sh”
ggf. “cp -frv /etc/init.d/init.d/* /etc/init.d/”

“cd /boot”
“cp -frv /boot/bzImage-3.0.4 /boot/bzImage-3.0.4-xen”
“cp -frv /boot/initrd-3.0.4 /boot/initrd-3.0.4-xen”

ggf. “vi /etc/sysctl.conf” -> “kernel.perf_cpu_time_max_percent = 0” . Info: “lynx https://www.kernel.org/doc/Documentation/sysctl/kernel.txt”

########################################################################################################################################################################################################

Grub1:
“vi /boot/grub/menu.lst”
###Don’t change this comment – YaST2 identifier: Original name: XEN###
title openSUSE 11.4 – 3.0.4 XEN
root (hd0,0)
kernel /boot/xen.gz
module /boot/bzImage-3.0.4-xen root=/dev/sda3 resume=/dev/sda2 quiet showopts vga=normal
module /boot/initrd-3.0.4-xen

“cp -rpv /boot/grub2/grub.cfg /boot/grub2/grub.cfg-`date +%Y%m%d-%H%M` “
Grub2:
###Bei Leap42.2 Kernel 4.10.13 Xen 4.6.0. Lenovo R61
menuentry ‘openSUSE Leap 42.2 Kernel 4.10.13 XEN’ –class opensuse –class gnu-linux –class gnu –class os $menuentry_id_option ‘gnulinux-simple-033e0129-bbd3-46e5-9da4-a59ecd6a6e01’ {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
set root=’hd0,msdos1′
if [ x$feature_platform_search_hint = xy ]; then
search –no-floppy –fs-uuid –set=root –hint-bios=hd0,msdos1 –hint-efi=hd0,msdos1 –hint-baremetal=ahci0,msdos1 –hint=’hd0,msdos1′ 59ec1588-0795-4785-a9bf-c0249cd35a4d
else
search –no-floppy –fs-uuid –set=root 59ec1588-0795-4785-a9bf-c0249cd35a4d
fi
multiboot /xen.gz xsave=1 no-real-mode edd=off
module /vmlinuz-4.10.13-default root=/dev/mapper/system-root ${extra_cmdline} barrier=off resume=/dev/system/swap showopts vga=normal highres=off acpi=off nomodeset xforcevesa clocksource_failover=tsc nolapic
module /initrd-4.10.13-default
}
### BEGIN /etc/grub.d/10_linux ###
menuentry ‘openSUSE 12.3 Kernel 3.10.9 XEN’ –class ‘opensuse-12-3’ –class gnu-linux –class gnu –class os $menuentry_id_option ‘gnulinux-simple-af218415-413e-4e22-9ae1-b704e707cf4d’ {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root=’hd0,msdos1′
if [ x$feature_platform_search_hint = xy ]; then
search –no-floppy –fs-uuid –set=root –hint-bios=hd0,msdos1 –hint-efi=hd0,msdos1 –hint-baremetal=ahci0,msdos1 –hint=’hd0,msdos1′ 9b549dca-9212-423c-b2b5-b362cca34774
else
search –no-floppy –fs-uuid –set=root 9b549dca-9212-423c-b2b5-b362cca34774
fi
multiboot /boot/xen.gz xsave=1
module /boot/bzImage-3.10.9-xen resume=/dev/sda2 vga=normal highres=off showopts
module /boot/initrd-3.10.9-xen
}
####
Alternativ bei Debian Grub2 auf Lenovo
menuentry ‘Debian GNU/Linux, with Linux 4.7.5-default’ –class debian –class gnu-linux –class gnu –class os {
load_video
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)’
search –no-floppy –fs-uuid –set=root a5d63b64-50fd-4336-8310-5ce2d3e9e69f
echo ‘XEN’
multiboot /boot/xen.gz xsave=1
module /boot/vmlinuz-4.7.5-default root=UUID=a5d63b64-50fd-4336-8310-5ce2d3e9e69f ro vga=normal highres=off acpi=off BOOT_DEBUG=3 nomodeset xforcevesa
echo ‘Loading initial ramdisk …’
module /boot/initrd.img-4.7.5-default
}
#####
Alternativ bei openSuse auf Lenovo
menuentry ‘openSUSE’ –class opensuse –class gnu-linux –class gnu –class os $menuentry_id_option ‘gnulinux-simple-1cce5333-0e2d-4e9b-9720-78f34386c169’ {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root=’hd0,msdos1′
if [ x$feature_platform_search_hint = xy ]; then
search –no-floppy –fs-uuid –set=root –hint-bios=hd0,msdos1 –hint-efi=hd0,msdos1 –hint-baremetal=ahci0,msdos1 –hint=’hd0,msdos1′ 1cce5333-0e2d-4e9b-9720-78f34386c169
else
search –no-floppy –fs-uuid –set=root 1cce5333-0e2d-4e9b-9720-78f34386c169
fi
echo ‘XEN’
multiboot /boot/xen.gz xsave=1 no-real-mode edd=off
module /boot/vmlinuz-4.7.5-default root=UUID=1cce5333-0e2d-4e9b-9720-78f34386c169 resume=/dev/sda2 showopts vga=normal highres=off acpi=off BOOT_DEBUG=3 nomodeset xforcevesa clocksource_failover=tsc nolapic debug debug=vc
echo ‘Loading initial ramdisk …’
module /boot/initrd-4.7.5-default
}
#####
Debian 8 auf Lenovo. Jenachdem kann man auch das “/boot” vor vmlinuz, initrd und xen.gz weglassen .
menuentry ‘XEN’ –class debian –class gnu-linux –class gnu –class os {
load_video
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)’
search –no-floppy –fs-uuid –set=root a5d63b64-50fd-4336-8310-5ce2d3e9e69f
multiboot /boot/xen.gz xsave=1 no-real-mode edd=off
echo ‘Loading Linux 4.7.5-default …’
module /boot/vmlinuz-4.7.5-default root=UUID=a5d63b64-50fd-4336-8310-5ce2d3e9e69f ro vga=normal highres=off BOOT_DEBUG=3 nomodeset xforcevesa
echo ‘Loading initial ramdisk …’
module /boot/initrd.img-4.7.5-default
}


“reboot; exit;”

“xend start” (“/etc/init.d/xencommons start” und “/etc/init.d/xend start”)

xen01:~ # ps -ef | grep -i xen
root 23 2 0 14:58 ? 00:00:00 [xenwatch]
root 24 2 0 14:58 ? 00:00:00 [xenbus]
root 29 2 0 14:58 ? 00:00:00 [xenbus_frontend]
root 131 2 0 14:58 ? 00:00:00 [xen_pciback_wor]
root 3064 1 0 14:59 ? 00:00:00 /usr/sbin/xenstored –pid-file /var/run/xenstored.pid
root 3070 1 0 14:59 ? 00:00:00 /usr/sbin/xenconsoled –pid-file=/var/run/xenconsoled.pid
root 3074 1 0 14:59 ? 00:00:00 /usr/lib/xen/bin/qemu-system-i386 -xen-domid 0 -xen-attach -name dom0 -nographic -M xenpv -daemonize -monitor /dev/null -serial /dev/null -parallel /dev/null -pidfile /var/run/qemu-dom0.pid
root 3091 1 0 14:59 ? 00:00:00 /usr/sbin/xenwatchdogd 30 15
root 3093 2976 0 14:59 pts/0 00:00:00 grep –color=auto -i xen

#Ein Gast System erstellen################################################
(Am besten so erstellen wie unter bei “Snapshort erstellen” beschrieben)
Platte erstellen (IMG). 100GB
“dd if=/dev/zero of=/root/public/xen/w2k8_platte.img bs=1024k count=100024” oder “dd if=/dev/zero of=/usr/local/apache2/htdocs/owncloud/data/xen/windisk.img bs=1024k seek=100000 count=0” (Geht schneller [Thin Provisioning])

##############
Ab V. 4.1
“vi /etc/xen/auto/win.xm” ->
import os, re
arch = os.uname()[4]
if re.search(’64’, arch):
arch_libdir = ‘lib’
else:
arch_libdir = ‘lib’
kernel = “/usr/lib/xen/boot/hvmloader”
builder=’hvm’ #HVM wird verwenden und nicht PV
memory = 1024 #Max. RAM
shadow_memory = 8
name = “w2k8” #Namer der Virtuellen Maschine
vif = [ ‘type=ioemu, bridge=xenbr0, model=e1000 ‘] #Netzwerk Birdning
acpi = 1 #ACPI ist aktiviert
disk = [ ‘file:/root/vm/windisk.img,hda,w’, ‘file:/root/vm/W2k8_Enterprise_R2_x64_DVD.iso,hdc:cdrom,r’ ] #Festplatte und CD Rom und an IDE Starng
device_model = ‘/usr/’ + arch_libdir + ‘/xen/bin/qemu-dm’ #Qemu Hardware Device wird verwendet (BIOS)
boot=”dc” #Boot Reihenfolge (d = CD-ROM, C = Hardisk). boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d)
sdl=0 #X-Server Console Fenster für die VM
vnc=1 #VNC Viewer aktiviert
#vncconsole=1
#vncpasswd=”
#serial=’pty’
vcpus = 2 #Anzahl der CPUs in der VM (bei W2K8 max. 64). Xen max. 128
usbdevice=’tablet’ #Damit der Maus Pointer kreekt funktioniert via VNC Viewer
“vi /ect/xen/xend.config.sxp” ->
(vnc-listen ‘172.16.190.2’)
(keymap ‘de’)
(xend-http-server yes)
(xend-port 8000)
“xm create /etc/xen/auto/win.xm” (Startet die VM)
Bei Debian gibt es probleme mit dem vif-name
“vncviewer localhost”

##############
Ab Version 4.3
Minimal Konfig:
“perl -e ‘for ($i=0;$i<6;$i++){@m[$i]=int(rand(256));} printf “%X:%X:%X:%X:%X:%X\n”,@m;'” MAC Adress generieren
“vi /etc/xen/auto/win.xen” ->
builder=’/usr/lib/xen/boot/hvmloader’
builder=’hvm’
name=’win’
vcpus=’2′
cpus=’2′
memory=’1024′
on_poweroff=’destroy’
on_reboot=’restart’
on_crash=’restart’
disk=[‘file:/root/vm/xen_win2012_disk.img,xvda,w’, ‘file:/root/vm/SW_DVD5_Win_Svr_Std_and_DataCtr_2012_64Bit_English_Core_MLF_X18-27588.ISO,hdc,cdrom,r’]
vif=[‘bridge=br0,type=ioemu’]
boot=’c’
acpi=1
apic=1
viridian=1
stdvga=0
vnc=1
vnclisten=’0.0.0.0′
sdl=0

##############
Ab Version 4.6. vifname macht ggf. Probleme, die Scripte “vi /etc/xen/scripts/vif-openvswitch” und “vi /etc/xen/scripts/vif-common.sh” überprüfen.
Minimal Konfig:
“vi suse_leap_42.xen” ->
builder=’hvm’
name=’opensuse_leap_42′
vcpus=’2′
memory=’512′
on_poweroff=’destroy’
on_reboot=’restart’
on_crash=’restart’
#Achtung bei den Platten/CDs die “xvd<Buchstabe>” Reihenfolge beachten sonst: “device model: spawn failed (rc=-3)”
disk=[‘file:/root/xen_storage_4/temp/test/suse_leap_42.xen.img,xvda,w’,’file:/root/xen_storage/isos/SLE-12-Server-DVD-x86_64-GM-DVD1.iso,xvdb:cdrom,r’]
vif=[‘bridge=xenbr0.111, model=e1000, mac=00:DD:98:49:1D:A8’]
boot=’c’
acpi=1
apic=1
viridian=1
stdvga=0
vnc=1
vnclisten=’0.0.0.0′
sdl=0
usbdevice=’tablet’
xen_platform_pci=1
keymap=’de’
on_poweroff = ‘destroy’
on_reboot = ‘restart’
on_crash = ‘restart’
cpuid=’host,nx=0,rep_good=0,sse4_1=0,ida=0,xsave=0′

Allerdings muss hier noch die Netz Brücke manuell angelegt werden. Wenn man nur eine Netzwerkkarte hat geht vorerst die Verbindung flöten
“ifconfig eth0 0.0.0.0”
“brctl addbr xenbr0”
“brctl stp xenbr0 on”
“brctl show”
“brctl addif xenbr0 eth0”
“ifconfig xenbr0 10.0.56.14 netmask 255.255.240.0” DHCP testen ??? . “dhcclient xenbr0”
“route add –net 0/0 gw 10.0.63.1”
“brctl show”
“brctl showmacs xenbr0”
Achtung IP der Guest VMs muss im selben Subnet liegen wie die Xen Bridge

#Kommandos############################################################
xl = wird ab Version 4.2 das neue Kommandozeilen Standard Tool.
xl network-list win (brctl showmacs br0 | grep -i 00:16:3e:38:84:1)
xl create –vvv /etc/xen/auto/win2012.xen
xm list = Zeigt die VMs an
xm info = Zeigt Systeminformationen an
xm dmesg = Xen Kernel Meldungen
xm shutdown (oder destroy) w2k8 = Stopp die VM oder eine laufende VM hart beenden
xm vcpu-list = Zeit die Anzhal der Virtuellen CPUs
“vncviewer 172.16.190.1:1” = Sobald mehrer VMs laufen muss der Screen zähler angepaßt werden.
“losetup -a” = Zeigt die gemounteten Geräte (Platten und ROMs)
“ps -ef | grep -e qemu” = Zeigt sämtliche Infos zur VM an.

Ab 4.3
xl info = Zeigt VM XEN Infos an
xl list = Liste alle XEN VMs auf

Nützliches Übersichstkommando von der Control workstation aus.
” echo -e “\e[1mXEN01\e[0m”;ssh 172.20.190.20 “xl list”;echo -e “\e[1mXEN02\e[0m”;ssh 172.20.190.21 “xl list”;echo -e “\e[1mXEN03\e[0m”;ssh 172.20.190.22 “xl list”;echo -e “\e[1mXEN04\e[0m”;ssh 172.20.190.23 “xl list”;echo -e “\e[1mXEN05\e[0m”;ssh 172.20.190.24 “xl list”;echo -e “\e[1mXEN06DEV\e[0m”;ssh 172.20.190.25 “xl list”;echo -e “\e[1mXEN07DEV\e[0m”;ssh 172.20.190.26 “xl list”;echo -e “\e[1mXEN08\e[0m”;ssh 172.20.190.27 “xl list”; “

#Infos#########################################################
Lieber eine VM im HVM Modus als PV Modus
“cd /var/log/xen” = Log Files
“cd /etc/xen” = Konfig Files
Xen sollte nicht IN einer Virtuellen Maschine laufen. VMware ESXi läßt sich nicht in einer XEM VM installieren 🙁 . XEN Server läuft auch nicht in der XEN VM.
“xm suspend” sollte man nicht während einer Kernel Kompilation ausführen, es führt zu IO Fehlern.
“xm mem-set W2K8_CRM 1500” = weist der VM dynamisch den RAM zu (sogar im Live Betrieb) . Geht aber nur bis max. “memory = 4096”, der Wert der in dem XM File steht.
“xm info” -> free_memory = Zeigt an wieviel RAM noch frei ist

############################################################
VM pausieren(Damit sie pausiert werden kann, erst mal erstellen OHNE “xm create”)
“xm new /etc/xen/auto/win_2.xm”
“xm start w28k_org”
“xm suspend w2k8_org” Domain wird pausiert
“xm resume w2k8_org” VM weiterführen
“xm delte w2k8_org” VM aus der Domain nehmen
Unter “/var/lib/xen<*>” liegen die VM infos (Pause Checkpoints)

############################################################
VM Snapshot erstellen (am besten offline) und zurückfahren:
“xm save w2k8 w2k8.sav”
“xm restore w2k8.sav”
Dauert aber bei großen Dantenmenger sehr sehr lange.

oder die manuelle Methode:
VM runterfahren und VM Image File wegkopieren 😉

Besser via LVM, da online Snapshots möglich.
Bei Debian “apt-get install dmeventd”
Vorher “dmeventd” starten und “vi /etc/lvm/lvm.conf” ->
snapshot_autoextend_threshold = 80
snapshot_autoextend_percent = 20
Schauen ob das LVM überhaupt Snapshots unterstützt, “dmsetup targets” -> “snapshot-merge v1.4.0, snapshot-origin v1.9.0, snapshot v1.15.0”. Falls nicht sie LVM Doku.
oder ggf. “modprobe dm_snapshot”
“dd if=/dev/zero of=xen_w2k8_r2_disk.img bs=1024k seek=100000 count=0” 100GB
“losetup -a”
“losetup /dev/loop0 /root/vm/xen_w2k8_r2_disk.img”
“losetup -a”
“pvcreate /dev/loop0”
“vgcreate xen_w2k8_x64_vg /dev/loop0”
“vgchange -a y xen_w2k8_x64_vg”
“vgdisplay” -> “VG Size 97.65 GB” = wichtige Information über die max. Größe des LVM.
“lvcreate -n w2k8_r2_x64_lv –size 97.65g xen_w2k8_x64_vg” oder “lvcreate -n sap_lv -l 25599 sap_vg”
“ls -al /dev/xen_w2k8_x64_vg/w2k8_r2_x64_lv”
“vi /etc/xen/auto/w2k8.xm” -> “disk = [‘phy:xen_w2k8_x64_vg/w2k8_r2_x64_lv,hda,w’, ‘file:/root/vm/suse/W2k8_Enterprise_R2_x64_DVD.iso,hdc:cdrom,r’]”
“xm new … ” “xm start …” und läuft bzw. wird installiert, sodass die kompletten Betriebssystemdaten auf der ersten PV des LV im VG liegen.
Nun die VG um die Snapshot Platte erweitern.
“dd if=/dev/zero of=xen_w2k8_r2_snapshot_disk.img bs=1024k seek=40096 count=0”
Siehe oben losetup
“pvcreate /dev/loop1”
“vgextend xen_w2k8_x64_vg /dev/loop1”
“vgdisplay”
Nachdem die XEN VM läuft kann man einen Snapshot machen.
“lvcreate -n xen_snapshot_`date ‘+%Y-%m-%d-%H_%M_%S’` -L 30G -s /dev/xen_vg/xen_lv” = Snapshot erstellen. Am besten 1 drittel der Größe der gesammten Snapshot Disk. Für das dynamische Erweiteren sollte ein daemon script geschrieben werden.
oder “lvcreate -n snapshot -l <PE Size> -s /dev/xen_vg/xen_lv” oder “lvcreate -n snapshot -l 100%FREE -s /dev/xen_vg/xen_lv”
Falls weitere Child-Snapshots vom Grund LV gezogen werden sollte man immer das vorherige Snapshot-LV als read only (“lvchange -pr /dev/opensuse_13_2_vg/opensuse_13_2_snapshot_2014-12-10-13_56_31” und “lvchange -an /dev/opensuse_13_2_vg/opensuse_13_2_snapshot_2014-12-10-13_56_31” )deklarieren da es sonst leider immer noch weiter wächst “vgcfgbackup w2k8_sql_vg -v -f xen_snapshot_2012-03-15-08_50_21.bak” “lvremove w2k8_sql_vg/xen_snapshot_2012-03-15-08_50_21” “vgreduce w2k8_sql_vg /dev/loop5” “pvremove /dev/loop5”. Zum wiederherstellen siehe unter, restore LV. ACHTUNG ES IST BESSER IMMER NUR EIN AKTIVEN SNAPSHOT ZU HABEN !!!!!!!
Zur übersicht des VG,LV,PV und Snapshots
“lvs”
“vgs”
“lvm pvscan”
“pvs”
“lvdisplay /dev/xen_vg/w2k8_snapshot_2”
“lvresize -L 5G /dev/xen_vg/w2k8_snapshot_1” (Falls der Platz zu klein wird den Snapshot vergrößern.)
Wichtig ist hier das “dmeventd” läuft, damit der Snapshot dynamisch anwächst.

Snapshot zurückfahren:
“xm shutdown w2k8”
“xm delete w2k8”
“lvs”
“screen”
“time lvconvert –merge xen_vg/w2k8_snapshot_3” (Achtung das Snapshot wird gelöscht !!!)
Eventuell den alten Snapshotfile (loop Device) löschen und neu erstellen, sofern vorhanden, da das “thin provisioning” dann wieder bei Null anfängt
“losetup -a” “pvs” “vgreduce w2k8_sql_vg /dev/loop5” “pvremove /dev/loop5” “losetup -d /dev/loop5” “rm -frv w2k8_sql_snapshot_disk.img” “dd if=/dev/zero of=w2k8_sql_snapshot_disk.img bs=1024k seek=100000 count=0” dann die Prozedur von oben “Snapshot erstellen durchführen”
Falls der Prozes im Hintergrund stattfindet “lvs -a -o +devices” um den Status zu sehen
“lvcreate -n w2k8_snapshot_3 -L 30G -s /dev/xen_vg/xen_lv” (Snapshot neu erstellen da ja das alte gelöscht wird)
oder die etwas komplizierte Version, ist aber nicht zu empfehlen da die Daten dann auf dem neuen Snapshot liegen und es zu inkonsitenzen führen kann.
“vi /etc/xen/auto/<VM>.xm” -> “disk = [‘phy:xen_vg/xen_vg/w2k8_snapshot_1,hda,w’, ‘file:/root/vm/suse/W2k8_Enterprise_R2_x64_DVD.iso.iso,hdc:cdrom,r’]”
“xm new /etc/xen/auto/<VM>.xm”
“xm start w2k8”

löschen des LV:
“vgchange -an”
“lvremove -f /dev/xen_vg/xen_snapshot”
“vgremove /dev/xen_vg” oder “vgremove xen_win2012r2_vg” (“vgreduce /dev/opensuse_13_2_vg /dev/loop1”) ????
“pvremove -v -ff /dev/loop5”
“losetup -d /dev/loop5”
“lsof | grep -i loop”
“ps -ef | grep -i loop”
“kill 4257”
“/sbin/vgchange -a n”
“vgscan”
“pvscan”
“lvscan”

Falls ein Neustart des Systems:
Da bei einem Neustart alle VG Informationen der loop Device verloren gehen
wie folgt starten. Ggf. “pvs” Tabelle aufschreiben.
“losetup /dev/loop0 /root/vm/Windows_7_Enterprise_x64/windows_7_enterprise_x64_disk.img”
“losetup /dev/loop1 /root/vm/Windows_7_Enterprise_x64/windows_7_enterprise_x64_snapshot_disk.img”
“/sbin/vgscan”
“/sbin/pvscan”
“/sbin/lvscan”
“/sbin/vgchange -ay”
“/etc/init.d/xencommons start”
“/etc/init.d/xend start”

Nachteil:
Man kann leider nicht die Image Files on the fly austauschen wenn das loop Device bzw. vg/lv noch aktiv ist. VG erst deaktivieren und loop Device löschen und dann erst die Datenfiles austauschen.

Zusatz Info zu LVM:
Falls man in den Genuss kommt die VG/LV umzubennenn alle VMs offline nehmen und immer nur eine loop(X) des VG/LV online zu haben.
vorehr die UUIDs der Volumes ändern “vgdisplay –partial –verbose”, “pvchange –uuid /dev/loop0”, “vgchange –uuid xen_w2k8_r2_x64_vg” !!!
“vgrename xen_w2k8_r2_x64_vg w2k8_ads_vg” = Das VG umbenennen (alt -> neu)
“lvrename w2k8_ads_vg xen_w2k8_r2_x64_lv w2k8_ads_lv” = Das LV umbenennen (VG -> lv alt -> lv neu)
dmsetup info -c = Zeigt den Geräte Status an
dmsetup table = Zeigt den Geräte Status an
dmsetup status = Zeigt den Geräte Status an
Bit #1
(m)irrored
(M)irrored without initial sync
(o)rigin
(p)vmove
(s)napshot
(S)napshot invalid
(v)irtual
(i)mage mirror
(I)mage out-of-sync
(c)onversion in progress
Bit #2
(w)riteable
(r)ead-only
Bit #3
(c)ontiguous
(n)ormal
c(l)ing
(a)nywhere
(i)nherited
Bit #4
(m)inor
Bit #5
(a)ctive
(s)uspended
(I)nvalid snapshot
(S)uspended snapshot
(d)evice present without tables
(i)nactive table on present device
Bit #6
(o)pen
Falls mal die loop Devices ausgehen “mknod -m 0660 /dev/loop8 b 7 8” um manuell mehr zu erstellen.

Restore gelöschtes VG:
“ls -altr /etc/lvm/archive” das Verzeichnis sollte man auch Ba