Nouveau forum : https://forum.slackware-fr.eu.org/

Annonce

29/01/2017 : Ce forum est dsormais en lecture seule. Merci d'utiliser le nouveau forum.

13/12/2014 : Inscriptions dsactives pour un moment en raison d'une recrudescence d'inscriptions plus que douteuses.

#1 06-12-2007 04:22:58

jaguarwan
Close the world, open the next
Lieu: Beijing
Date d'inscription: 09-04-2006
Messages: 353
Site web

[Slackbuild] QEMU/KVM

Pour moi, QEMU associ KVM est la meilleure solution de virtualisation disponible, pour les raisons suivantes:

* le module kernel ncessaire la virtualisation est intgr au kernel mainline, je n'ai donc pas besoin d'activer le support des modules noyaux ni de mettre jour le module sparment. Une bndiction.

* la vitesse est trs satisfaisante, et QEMU trs agrable utiliser (notamment le rseau, qui marche out of the box).

Bref, QEMU/KVM, c'est bon, c'est libre, mangez-en smile

(en revanche, si votre processeur ne gre pas la virtualisation hardware (Intel VT ou AMD Pacifica), passez votre chemin)

Ce Slackbuild vous permettra de compiler la dernire version de KVM userland, par contre vous aurez besoin du package alien gcc 3.4 pour la compilation, QEMU n'tant pas encore gcc4-friendly.

Code:

#! /bin/sh

# Latest qemu-kvm sourcecode is available at http://kvm.qumranet.com
# Depends: http://www.slackware.com/~alien/slackbuilds/gcc34/

CWD=`pwd`
TMP=${TMP:-/tmp}
PREFIX=${PREFIX:-/usr}
PKG=$TMP/package-qemu-kvm
OUT=${OUT:-$TMP/build}

# Version on the tarball
VERSION=${VERSION:-55}
# Version used in the source directory to cd into
DIRVER=${DIRVER:-55}
# Version used for the Slackware package
PKGVER=${PKGVER:-55}

# Target
ARCH=${ARCH:-i486}
BUILD=${BUILD:-1}

# sanity checks
if [ $UID == 0 ]; then
   echo "Are you sure you want to run this script as root ? (y/n) "
   read CONFIRM; if [ "$CONFIRM" != "y" ]; then exit 1; fi
fi

if [ ! -d $TMP ]; then
   echo "$TMP is not a directory."
   exit 1
fi

# Download the tarball if it is not found
if [ ! -r kvm-$VERSION.tar.gz ]; then
  # there is no MD5 or SHA1 sums available from the repository
  MD5="9fdc16aff50fe5ecd7d9b121958cd19b"
  SHA="d5899f5162f40436c7cfc067789365e7ad2cfa6b"
  wget "http://kent.dl.sourceforge.net/sourceforge/kvm/kvm-$VERSION.tar.gz"
  if [ "`md5sum kvm-$VERSION.tar.gz | cut -d\  -f1`" != $MD5 ]; then
    echo 'MD5 sums do not match, aborting.'
    rm -f kvm-$VERSION.tar.gz
    exit 1
  fi
  if [ "`sha1sum kvm-$VERSION.tar.gz | cut -d\  -f1`" != $SHA ]; then
    echo 'SHA1 sums do not match, aborting.'
    rm -f kvm-$VERSION.tar.gz
    exit 1
  fi
fi

if [ ! -r kvm-$VERSION.tar.gz ]; then
    echo 'Source tarball not found !'
    exit
fi

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mtune=i686"
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi

# Cleanup
rm -rf $PKG
mkdir -p $PKG/$PREFIX

# Extraction
cd $TMP
rm -rf kvm-$DIRVER
tar xzvf $CWD/kvm-$VERSION.tar.gz
cd kvm-$DIRVER

# Build
CFLAGS=$SLKCFLAGS ./configure --qemu-cc='/usr/gcc34/bin/gcc34' \
--with-patched-kernel --prefix=$PREFIX --kerneldir=/usr/src/linux \
--qemu-cflags="$SLKCFLAGS"
# try hard to remove debug
sed -i -e "s/-g -fomit-frame-pointer/-fomit-frame-pointer/g" libkvm/Makefile
sed -i -e "s/-g -fno-strict-aliasing/-fno-strict-aliasing/g" qemu/Makefile.target
#sed -i -e 's/$(DYNGEN) -g/$(DYNGEN)/g' qemu/Makefile.target
sed -i -e 's/-O2 -g/-O2/g' qemu/config-host.mak
sed -i -e 's/libkvm  -g/libkvm/g' qemu/config-host.mak
make -j3
make install DESTDIR=$PKG

# Add the udev rules for /dev/kvm
mkdir -p $PKG/etc/udev/rules.d
mv scripts/65-kvm.rules $PKG/etc/udev/rules.d/kvm.rules

# make a link to the main binary
( cd $PKG/$PREFIX/bin
  ln -sf qemu-system-x86_64 qemu
)

echo "Stripping binaries..."
# Don't try to strip the BIOS files...
( cd $PKG
  find . | xargs file | grep ELF | grep -v $PREFIX/share/qemu | \
  cut -f 1 -d : | xargs strip --strip-unneeded
)

echo "Compressing man pages..."
mv $PKG/$PREFIX/share/man $PKG/$PREFIX/
( cd $PKG/$PREFIX/man
  find . -name "*.?" | xargs gzip -9
)

echo "Adding documentation package..."
mkdir -p $PKG/usr/doc/qemu-kvm-$VERSION
mv $PKG/$PREFIX/share/doc/qemu/* $PKG/usr/doc/qemu-kvm-$VERSION
rm -rf $PKG/$PREFIX/share/doc

# Build the package
mkdir -p $PKG/install
cat <<'EOF' > $PKG/install/slack-desc
        |-----handy-ruler----------------------------------------------------|
qemu-kvm: qemu-kvm (Kernel-based Virtual Machine for Linux)
qemu-kvm:
qemu-kvm: KVM (for Kernel-based Virtual Machine) is a full virtualization
qemu-kvm: solution for Linux on x86 hardware containing virtualization
qemu-kvm: extensions (Intel VT or AMD-V).
qemu-kvm:
qemu-kvm: KVM requires a modified QEMU although work is underway to get the
qemu-kvm: required changes upstream.
qemu-kvm:
qemu-kvm:
qemu-kvm:

EOF
cd $PKG

PACKAGING="
chown -R root.root .
chown -R root.bin $PKG/$PREFIX/bin
find . -perm 664 -exec chmod 644 {} \;
find . -perm 777 -exec chmod 755 {} \;
mkdir -p $OUT
/sbin/makepkg -l y -c n $OUT/qemu-kvm-$PKGVER-$ARCH-$BUILD.tgz
rm -rf $PKG
rm -rf $TMP/kvm-$DIRVER"

if type -p fakeroot ; then
    echo "$PACKAGING" | fakeroot
else
    su -c "$PACKAGING"
fi

Enjoy smile

Hors ligne

 

#2 06-12-2007 13:25:08

Tsomi
Membre trs actif
Date d'inscription: 09-08-2006
Messages: 684

Re: [Slackbuild] QEMU/KVM

Sinon au lieu d'utiliser le package alien, on peut utiliser celui dans /pasture, mais dans ce cas il faut modifier un peu le ./configure car ce package ne permet pas la cohabitation.

Hors ligne

 

#3 23-12-2007 18:56:02

aster
Administrateur
Date d'inscription: 31-01-2008
Messages: 613

Re: [Slackbuild] QEMU/KVM

Pour qemu seul c'est ce que j'ai fait : j'ai install gcc dans un rpertoire temporaire, j ai compil avec et voil :

Code:

installpkg -root /tmp/ /slakware-12.0/pasture/gcc-3.*tgz

et pour qemu

Code:

./configure --prefix=/usr/ --cc=/tmp/usr/bin/gcc

Ds que j'arrive faire marcher kqemu je vais mettre les SB ici


Essayer, c'est la meilleure faon de se planter, OJS

Hors ligne

 

#4 23-12-2007 20:47:10

_Hitek_
Slacker depuis 2003 (Slack 9.0)
Date d'inscription: 29-12-2005
Messages: 1258
Site web

Re: [Slackbuild] QEMU/KVM

Pour kqemu, utiliser la variable CC ? Genre CC=/tmp/usr/bin/gcc make

Hors ligne

 

#5 23-12-2007 22:18:41

Tsomi
Membre trs actif
Date d'inscription: 09-08-2006
Messages: 684

Re: [Slackbuild] QEMU/KVM

kqemu, lui, compile comme il faut avec GCC4, d'ailleurs normalement on compile les modules avec le compilateur utilis pour compiler le kernel.

Je crois que le soucis est plus avec les permissions...

Hors ligne

 

#6 23-12-2007 23:01:25

aster
Administrateur
Date d'inscription: 31-01-2008
Messages: 613

Re: [Slackbuild] QEMU/KVM

pour info kqemu a aussi l'option --cc= pour le configure, mais en effet a sert rien puisqu'il lui faut comme Tsomi le prcise le mme gcc que celui du kernel.

Par contre mon soucis venait du fait que je n'utilises pas un kernel smp, et que les headers fournit dans slack sont pour un kernel SMP.

Solution : rendez-vous dans /extra/linux-2.6.21.5-nosmp-sdk/ et ./patch-to-non-smp.sh

a compile merveille, et aprs avoir rgl diffrents trucs (shm, rtc) j'ai un qemu qui carbure !

Bilan, un WM pour installer une slackware-vanilla-full, et pour tester des beaux sb, et pour proposer des sb tests dessus, et me faire coopter contributeur wink

Dernire modification par aster (23-12-2007 23:02:19)


Essayer, c'est la meilleure faon de se planter, OJS

Hors ligne

 

#7 27-12-2009 15:52:31

jaguarwan
Close the world, open the next
Lieu: Beijing
Date d'inscription: 09-04-2006
Messages: 353
Site web

Re: [Slackbuild] QEMU/KVM

En fait, les dernires versions de Qemu/KVM compilent maintenant parfaitement avec GCC4. J'utilise a:

Code:

#! /bin/sh

# Latest qemu-kvm sourcecode is available at http://kvm.qumranet.com

CWD=`pwd`
TMP=${TMP:-/tmp}
PREFIX=${PREFIX:-/usr}
PKG=$TMP/package-qemu-kvm
OUT=${OUT:-$TMP/build}

# Version on the tarball
VERSION=${VERSION:-0.11.0}
# Version used in the source directory to cd into
DIRVER=${DIRVER:-0.11.0}
# Version used for the Slackware package
PKGVER=${PKGVER:-0.11.0}

# Target
ARCH=${ARCH:-i486}
BUILD=${BUILD:-1}

# sanity checks
if [ $UID == 0 ]; then
   echo "Are you sure you want to run this script as root ? (y/n) "
   read CONFIRM; if [ "$CONFIRM" != "y" ]; then exit 1; fi
fi

if [ ! -d $TMP ]; then
   echo "$TMP is not a directory."
   exit 1
fi

if [ ! -r qemu-kvm-$VERSION.tar.gz ]; then
    echo 'Source tarball not found !'
    exit
fi

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mtune=i686"
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
fi

# Cleanup
rm -rf $PKG
mkdir -p $PKG/$PREFIX

# Extraction
cd $TMP
rm -rf qemu-kvm-$DIRVER
tar xzvf $CWD/qemu-kvm-$VERSION.tar.gz
cd qemu-kvm-$DIRVER

# Build
CFLAGS=$SLKCFLAGS ./configure --prefix=$PREFIX
make -j3
make install DESTDIR=$PKG

# Add the udev rules for /dev/kvm
mkdir -p $PKG/etc/udev/rules.d
mv kvm/scripts/65-kvm.rules $PKG/etc/udev/rules.d/kvm.rules

# make a link to the main binary
( cd $PKG/$PREFIX/bin
  ln -sf qemu-system-x86_64 qemu
)

echo "Stripping binaries..."
# Don't try to strip the BIOS files...
( cd $PKG
  find . | xargs file | grep ELF | grep -v $PREFIX/share/qemu | \
  cut -f 1 -d : | xargs strip --strip-unneeded
)

echo "Compressing man pages..."
mv $PKG/$PREFIX/share/man $PKG/$PREFIX/
( cd $PKG/$PREFIX/man
  find . -name "*.?" | xargs gzip -9
)

echo "Adding documentation package..."
mkdir -p $PKG/usr/doc/qemu-kvm-$VERSION
mv $PKG/$PREFIX/share/doc/qemu/* $PKG/usr/doc/qemu-kvm-$VERSION
rm -rf $PKG/$PREFIX/share/doc

# Build the package
mkdir -p $PKG/install
cat <<'EOF' > $PKG/install/slack-desc
        |-----handy-ruler----------------------------------------------------|
qemu-kvm: qemu-kvm (Kernel-based Virtual Machine for Linux)
qemu-kvm:
qemu-kvm: KVM (for Kernel-based Virtual Machine) is a full virtualization
qemu-kvm: solution for Linux on x86 hardware containing virtualization
qemu-kvm: extensions (Intel VT or AMD-V).
qemu-kvm:
qemu-kvm: KVM requires a modified QEMU although work is underway to get the
qemu-kvm: required changes upstream.
qemu-kvm:
qemu-kvm:
qemu-kvm:

EOF
cd $PKG

PACKAGING="
chown -R root.root .
chown -R root.bin $PKG/$PREFIX/bin
find . -perm 664 -exec chmod 644 {} \;
find . -perm 777 -exec chmod 755 {} \;
mkdir -p $OUT
/sbin/makepkg -l y -c n $OUT/qemu-kvm-$PKGVER-$ARCH-$BUILD.tgz
rm -rf $PKG
rm -rf $TMP/kvm-$DIRVER"

if type -p fakeroot ; then
    echo "$PACKAGING" | fakeroot
else
    su -c "$PACKAGING"
fi

Hors ligne

 

#8 27-12-2009 17:54:06

Mushroom
Administrateur
Date d'inscription: 15-10-2005
Messages: 2158

Re: [Slackbuild] QEMU/KVM

Hello,

Juste un question, comme a en passant : y aurait-il une chance que je trouve une solution de virtualisation potable sur mon vieux PIV-pas-du-tout-VT-ready (le bonheur total tant de pouvoir faire tourner en invit un serveur HTTP *BSD... ) ? hmm

Hors ligne

 

#9 27-12-2009 20:40:12

_Hitek_
Slacker depuis 2003 (Slack 9.0)
Date d'inscription: 29-12-2005
Messages: 1258
Site web

Re: [Slackbuild] QEMU/KVM

bah les solutions existantes :
qemu, virtualbox... vt et cie sont des plus mais pas indispensables.

Hors ligne

 

#10 29-12-2009 19:39:47

Mushroom
Administrateur
Date d'inscription: 15-10-2005
Messages: 2158

Re: [Slackbuild] QEMU/KVM

Oui, c'est vrai que mon ordinosaure a bien fait l'affaire jusqu'ici, donc mme avec des perfs trs dgrades... wink

Hors ligne

 

#11 30-12-2009 10:46:52

aster
Administrateur
Date d'inscription: 31-01-2008
Messages: 613

Re: [Slackbuild] QEMU/KVM

qemu + kqemu, surtout pour faire tourner un serveur, c'est bien. En plus j'imagine que c'est pas le serveur en prod qui va accueillir 10000 connexion/jour, administrer via des Gtools ou autre Ktools derrire un compiz flambant full smile

J'ai 2 machines : une slackware sur une machine de 2001, qui utilise qemu+kqemu, et un portable qui lui a un proc rcent, et l j'utilise kvm. Bien entendu, kvm est beaucoup plus fluide (pour pas dire presque sans perte), mais ma config principale reste la vielle, et c'est trs utilisable un qemu+kqemu, sutout sans WM qui tourne dans l'invit smile


Essayer, c'est la meilleure faon de se planter, OJS

Hors ligne

 

#12 30-12-2009 12:34:49

Mushroom
Administrateur
Date d'inscription: 15-10-2005
Messages: 2158

Re: [Slackbuild] QEMU/KVM

aster a crit:

qemu + kqemu, surtout pour faire tourner un serveur, c'est bien. En plus j'imagine que c'est pas le serveur en prod qui va accueillir 10000 connexion/jour, administrer via des Gtools ou autre Ktools derrire un compiz flambant full

C'est juste pour faire un miroir local temps rel de wikipdia... non, je plaisante, t'as bien compris, c'est avant tout pour faire des tests sans toucher au systme courant. wink

J'avais commenc par m'intresser qemu-kvm, avant de m'apercevoir que KVM ne marchait qu'avec les procos "VT". Mais effectivement, sur le site de qemu, il y a un autre module d'acclration. Donc, oui, je vais m'orienter par l, d'autant que VirtualBox semble avoir besoin de "VT" pour faire tourner autre chose que du nux, Xen est "VT-only" et Vserver demande de patcher le noyau hte (pas envie de me taper sa maintenance). smile

Hors ligne

 

#13 30-12-2009 13:16:13

_Hitek_
Slacker depuis 2003 (Slack 9.0)
Date d'inscription: 29-12-2005
Messages: 1258
Site web

Re: [Slackbuild] QEMU/KVM

Tu te trompes, je n'ai pas de vt et tous les systmes passent sur vbox.

Hors ligne

 

#14 30-12-2009 14:43:50

Mushroom
Administrateur
Date d'inscription: 15-10-2005
Messages: 2158

Re: [Slackbuild] QEMU/KVM

C'est vrai que je n'ai pas essay, mais c'est pourtant bien ce qu'indique leur doc :

[...]

FreeBSD

    Requires hardware virtualization to be enabled. Limited support. Guest Additions are not available yet.

OpenBSD

    Requires hardware virtualization to be enabled. Versions 3.7 and later are supported. Guest Additions are not available yet.
[...]

Hors ligne