I need to install Xen with LVM on my dedicated root server.

The current version Xen 4.4 in Debian jessie does not support the new Skylake intel processors.

I tried Debian stretch, which has Xen 4.6 already shipped and it works fine there.

On a productive system, I wouldn't like to run tretch which is testing at the moment, so I wonder if it is possible, and how to install Xen 4.6 on Debian 8.3?

As far as I know, you can add the stretch sources to

/etc/apt/sources.list.d/stretch.list

And give it a certain Pin priority so it is not used unless stated otherwise. Then you would have to "pin" all needed packages for Xen 4.6 to stretch.

Someone has done this already? Or are there impossible problems with this attempt?

Or maybe an easyer solution? Maybe a PPA?

  • This won't help you immediately, but you could file a bug, Skylake support might warrant a stable update (or at least an official Jessie backport). – Stephen Kitt Feb 9 '16 at 15:57
up vote 4 down vote accepted

You have to pin stretch and stretch-updates to 499, jessie and jessie-updates to 500, then install xen-hypervisor-4.6-amd64 manually from stretch:

cat <<EOF | sudo tee /etc/apt/preferences.d/stretch-manual-only
Package:  *
Pin:  release n=jessie-updates
Pin-Priority:  500

Package:  *
Pin:  release n=jessie
Pin-Priority:  500

Package:  *
Pin:  release n=stretch-updates
Pin-Priority:  499

Package:  *
Pin:  release n=stretch
Pin-Priority:  499
EOF

create a sources list for stretch:

sed -e 's/ \(stable\|jessie\)/ stretch/ig' /etc/apt/sources.list > /etc/apt/sources.list.d/debian-stretch.list    
aptitude update

those are the needed packages for Xen 4.6:

aptitude install xen-utils-common/stretch xen-utils-4.6/stretch xen-linux-system-amd64/stretch xen-tools xen-utils-4.6/stretch xen-hypervisor-4.6-amd64/stretch libncurses5/stretch libncursesw5/stretch libtinfo5/stretch

This will install these:

The following NEW packages will be installed:
  bridge-utils{a} debootstrap{a} debugedit{a} grub-xen-bin{a} grub-xen-host{a} ipxe-qemu{a} libaio1{a} libasound2{a} libasound2-data{a} libasyncns0{a} libauthen-sasl-perl{a} libbluetooth3{a} libboost-system1.55.0{a} libboost-thread1.55.0{a} libbrlapi0.6{a} libcaca0{a} libconfig-inifiles-perl{a} libcurl3-gnutls{a} libdata-validate-domain-perl{a} libdata-validate-ip-perl{a} libdata-validate uri-perl{a} libdirectfb-1.2-9{a} libelf1{a} libencode-locale-perl{a} libexpect-perl{a} libfdt1{a} libfile-listing-perl{a} libfile-slurp perl{a} libfile-which-perl{a} libflac8{a} libfont-afm-perl{a} libhtml-form-perl{a} libhtml-format-perl{a} libhtml-parser-perl{a} libhtml-tagset-perl{a} libhtm -tree-perl{a} libhttp-cookies-perl{a} libhttp-daemon-perl{a} libhttp-date-perl{a} libhttp-message-perl{a} libhttp-negotiate-perl{a} libice6{a} libio-html-perl{a} libio-pty-perl{a} libio-socket-ssl-perl{a} libio-stty-perl{a} libiscsi2{a} libjpeg62-turbo{a} liblist-moreutils perl{a} liblog-message-perl{a} liblog-message-simple-perl{a} liblua5.2-0{a} liblwp-mediatypes-perl{a} liblwp-protocol-https-perl{a} libmailtools-perl{a} libnet-domain-tld-perl{a} libnet-http-perl{a} libnet-ipv6addr-perl{a} libnet-netmask-perl{a} libnet-smtp-ssl-perl{a} libnet-ssleay-perl{a} libnetaddr-ip-perl{a} libnetwork-ipv4addr-perl{a} libnspr4{a} libnss3{a} libogg0{a} libopus0{a} libpixman-1-0{a} libpulse0{a} libpython-stdlib{a} libpython2.7 minimal{a} libpython2.7-stdlib{a} librados2{a} librbd1{a} librpm3{a} librpmbuild3{a} librpmio3{a} librpmsign1{a} libsdl1.2debian{a} libseccomp2{a} libsm6{a} libsndfile1{a} libsocket6-perl{a} libspice-server1{a} libterm-size-perl{a} libterm-ui-perl{a} libtext-template-perl{a} libtimedate-perl{a} liburi perl{a} libusbredirparser1{a} libvdeplug2{a} libvorbis0a{a} libvorbisenc2{a} libwww-perl{a} libwww-robotrules-perl{a} libx11-6{a} libx11-data{a} libx11 xcb1{a} libxau6{a} libxcb1{a} libxdmcp6{a} libxen-4.4{a} libxen-4.6{a} libxenstore3.0{a} libxext6{a} libxi6{a} libxtst6{a} libyajl2{a} linux-image-4.3.0- -amd64 python{a} python-minimal{a} python2.7{a} python2.7-minimal{a} qemu-system-common{a} qemu-system-x86{a} qemu-utils{a} rinse{a} rpm{a} rpm common{a} rpm2cpio{a} seabios{a} sharutils{a} x11-common{a} xen-hypervisor-4.4-amd64{a} xen-hypervisor-4.6-amd64 xen-linux-system-4.3.0-1 amd64{a} xen-linux-system-amd64 xen-system-amd64 xen-tools xen-utils-4.4{a} xen-utils-4.6{b} xen-utils-common xenstore-utils{a} 
The following packages will be upgraded:
  libncurses5 libncursesw5 libtinfo5
3 packages upgraded, 133 newly installed, 0 to remove and 0 not upgraded.
Need to get 72,3 MB of archives. After unpacking 279 MB will be used.

Continue with changing the boot order in grub:

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen 
update-grub

Check grub menuentries in order with:

grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g"|nl -v 0

Now the first line should be

     0  menuentry 'Debian GNU/Linux, with Xen hypervisor' 

reboot and have fun ;)

  • this is still valid on debian 8.6 with an cpu Intel(R) Xeon(R) CPU E3-1270 v5 – Dennis Nolte Oct 25 '16 at 14:05
  • I just ran this succesfully on a Debian 8.7 with the minor change that Xen is now on 4.8 in testing. – normic Feb 26 '17 at 18:41

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.