<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.sn4ky.net/index.php?action=history&amp;feed=atom&amp;title=Astuces_et_optimisations</id>
	<title>Astuces et optimisations - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sn4ky.net/index.php?action=history&amp;feed=atom&amp;title=Astuces_et_optimisations"/>
	<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Astuces_et_optimisations&amp;action=history"/>
	<updated>2026-05-06T13:16:22Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.sn4ky.net/index.php?title=Astuces_et_optimisations&amp;diff=5&amp;oldid=prev</id>
		<title>Sn4kY : Page créée avec « = Recompiler un noyau pour les domU (Debian Way) = == Kernel 2.6.26 == Ici, on va recompiler depuis le domU, installé en utilisant &lt;code&gt;pygrub&lt;/code&gt;&lt;br /&gt; Installation... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.sn4ky.net/index.php?title=Astuces_et_optimisations&amp;diff=5&amp;oldid=prev"/>
		<updated>2018-04-12T13:56:49Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « = Recompiler un noyau pour les domU (Debian Way) = == Kernel 2.6.26 == Ici, on va recompiler depuis le domU, installé en utilisant &amp;lt;code&amp;gt;pygrub&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt; Installation... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Recompiler un noyau pour les domU (Debian Way) =&lt;br /&gt;
== Kernel 2.6.26 ==&lt;br /&gt;
Ici, on va recompiler depuis le domU, installé en utilisant &amp;lt;code&amp;gt;pygrub&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation des prérequis (on va se placer dans &amp;lt;code&amp;gt;/usr/src&amp;lt;/code&amp;gt;, les sources seront téléchargées dans le répertoire courant) :&lt;br /&gt;
 aptitude install -y build-essential libncurses5 zlib1g-dev zlibc kernel-package libncurses-dev&lt;br /&gt;
 cd /usr/src/&lt;br /&gt;
 apt-get source linux-image-2.6.26-2-xen-686&lt;br /&gt;
N.b. : &amp;lt;code&amp;gt;apt-get source&amp;lt;/code&amp;gt; n&amp;#039;est disponible que si le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; contient les entrées &amp;lt;code&amp;gt;deb-src&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;deb-src http://ftp2.fr.debian.org/debian/     lenny main&lt;br /&gt;
deb-src http://security.debian.org/ lenny/updates  main&lt;br /&gt;
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Vous devriez vous retrouver avec des éléments :&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;linux-2.6-2.6.26/&lt;br /&gt;
linux-2.6_2.6.26-26lenny2.diff.gz&lt;br /&gt;
linux-2.6_2.6.26-26lenny2.dsc&lt;br /&gt;
linux-2.6_2.6.26.orig.tar.gz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
On va appliquer les patchs contenu dans le .diff (ils contiennent entre autre les patch pour Xen)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;gzip -d linux-2.6_2.6.26-26lenny2.diff.gz&lt;br /&gt;
cd linux-2.6-2.6.26/&lt;br /&gt;
patch -p0 &amp;lt; ../linux-2.6_2.6.26-26lenny2.diff&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
On passe à la compilation (avec copie préalable du .config)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cp /boot/config-2.6.26-2-xen-686 ./.config&lt;br /&gt;
make menuconfig&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Il FAUT penser à activer les options suivantes :&lt;br /&gt;
 Processor type and features  ---&amp;gt;&lt;br /&gt;
  [*] Paravirtualized guest support  ---&amp;gt;&lt;br /&gt;
   [*]   Xen guest support&lt;br /&gt;
Une fois que vous avez sélectionné les options souhaitées, il ne reste plus qu&amp;#039;à faire un&lt;br /&gt;
 time env CONCURRENCY_LEVEL=`grep -c &amp;#039;^processor&amp;#039; /proc/cpuinfo` make-kpkg --initrd --revision=2.6.26-26lenny2 --append-to-version=-i386-bigmem-xenu kernel_image modules&lt;br /&gt;
Prenez un café (ou prenez préalablement le temps d&amp;#039;arrêter la VM et de la rebooter avec plus de vCPUs)&amp;lt;br /&amp;gt;&lt;br /&gt;
Une fois la compilation terminée un &amp;lt;code&amp;gt;ls ../&amp;lt;/code&amp;gt; doit remonter en plus &amp;lt;code&amp;gt;linux-image-2.6.26-i386-bigmem-xenu_2.6.26-26lenny2_i386.deb&amp;lt;/code&amp;gt; qu&amp;#039;il ne reste plus qu&amp;#039;à &amp;lt;code&amp;gt;dpkg -i&amp;lt;/code&amp;gt; pour installer le kernel, les modules, l&amp;#039;initrd, et regénérer grub en conséquence.&lt;br /&gt;
 cd /usr/src/&lt;br /&gt;
 dpkg -i linux-image-2.6.26-i386-bigmem-xenu_2.6.26-26lenny2_i386.deb&lt;br /&gt;
Répondez &amp;lt;code&amp;gt;Oui&amp;lt;/code&amp;gt; à la première question, &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; à la seconde, et &amp;lt;code&amp;gt;Non&amp;lt;/code&amp;gt; à la 3eme.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut ensuite modifier le fichier &amp;lt;code&amp;gt;/boot/grub/menu.lst&amp;lt;/code&amp;gt; pour y ajouter le kernel précédemment compilé :&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
title           Debian GNU/Linux 5.0&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-2.6.26-i386-bigmem-xenu root=/dev/xvda2 ro&lt;br /&gt;
initrd          /boot/initrd.img-2.6.26-i386-bigmem-xenu&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
(Pensez à modifier la valeur du &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; en fonction de où vous avez placé le bloc ci-dessus)&lt;br /&gt;
 reboot&lt;br /&gt;
Si tout c&amp;#039;est bien passé, ça reboot sur le bon kernel, et vous devriez avoir les nouvelles options compilées correctement.&lt;br /&gt;
&lt;br /&gt;
== Kernel 2.6.32 ==&lt;br /&gt;
Cet exemple est réalisé à partir du dom0 (puisqu&amp;#039;on utilise le même kernel)&amp;lt;br /&amp;gt;&lt;br /&gt;
Installation des prérequis :&lt;br /&gt;
 aptitude install -y build-essential libncurses5 zlib1g-dev zlibc linux-source-2.6.32 kernel-package libncurses-dev&lt;br /&gt;
On va ensuite détarer les sources :&lt;br /&gt;
 cd /usr/src/&lt;br /&gt;
 tar jxvf linux-source-2.6.32.tar.bz2&lt;br /&gt;
 cd linux-source-2.6.32&lt;br /&gt;
&lt;br /&gt;
Une configuration fonctionnelle pour un domU est fournie avec le kernel du dom0 (il y aura juste des options en moins, mais ces options ne sont pas nécessaires aux domU). On récupère le fichier de configuration du kernel précedemment installé :&lt;br /&gt;
&lt;br /&gt;
 cp /boot/config-2.6.32-5-xen-686 ./.config&lt;br /&gt;
&lt;br /&gt;
Et on lance la partie de configuration visuelle du kernel&lt;br /&gt;
&lt;br /&gt;
 make menuconfig&lt;br /&gt;
&lt;br /&gt;
Sélectionnez dans ce menu les options et optimisation souhaités.&lt;br /&gt;
&lt;br /&gt;
Ex. : la configuration du 1000hz se trouve dans &amp;lt;code&amp;gt;Processor type and features  ---&amp;gt;&amp;lt;/code&amp;gt; puis il s&amp;#039;agit du paramètre de &amp;lt;code&amp;gt;Timer frequency&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
C&amp;#039;est également dans ce menu que l&amp;#039;on peut désactiver le Tickless, modifier le &amp;lt;code&amp;gt;Processor family&amp;lt;/code&amp;gt;, activer ou pas le &amp;lt;code&amp;gt;SMT (Hyperthreading)&amp;lt;/code&amp;gt; ou encore choisir le &amp;lt;code&amp;gt;Preemption Model&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 time env CONCURRENCY_LEVEL=`grep -c &amp;#039;^processor&amp;#039; /proc/cpuinfo` make-kpkg --initrd --revision=1 --append-to-version=-i386-bigmem-xenu kernel_image modules&lt;br /&gt;
 cd ..&lt;br /&gt;
 dpkg -i ...deb&lt;br /&gt;
&lt;br /&gt;
= Tunning =&lt;br /&gt;
== Mémoire du dom0 ==&lt;br /&gt;
Dans certains cas, il peut être intéressant de mettre des quantités fixes de ram au dom0, et faire en sorte que les domU ne puissent pas lui en prendre.&lt;br /&gt;
&lt;br /&gt;
On va pour celà modifier le fichier &amp;lt;code&amp;gt;/etc/xen/xend-config.sxp&amp;lt;/code&amp;gt; et indiquer :&lt;br /&gt;
 (dom0-min-mem 256)&lt;br /&gt;
 (enable-dom0-ballooning no)&lt;br /&gt;
&lt;br /&gt;
Ce qui aura pour effet d&amp;#039;indiquer à Xen que le dom0 ne peut aller en dessous de 256Mo de ram, et qu&amp;#039;on interdit le balooning du dom0 (le balooning c&amp;#039;est la possibilité d&amp;#039;ajouter ou de diminuer la ram à chaud d&amp;#039;un système)&lt;br /&gt;
&lt;br /&gt;
Puis, pour parfaire la chose, et afin de booter le dom0 avec pile poil 256Mb de ram (ajuster bien sur cette valeur à vous souhaits), on va faire quelques modifs dans les fichiers de config de GRUB2 : &lt;br /&gt;
 echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/default/grub&lt;br /&gt;
 echo &amp;quot;GRUB_CMDLINE_XEN_DEFAULT=&amp;quot;dom0_mem=256M&amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/default/grub&lt;br /&gt;
Suivi d&amp;#039;un petit &amp;lt;code&amp;gt;update-grub2&amp;lt;/code&amp;gt; pour que la modification soit prise en compte.&lt;br /&gt;
&lt;br /&gt;
== Boot au démarrage du serveur ==&lt;br /&gt;
Afin de faire booter une, ou plusieurs VM au démarrage de la machine physique, il suffit de créer un répertoire &amp;lt;code&amp;gt;/etc/xen/auto&amp;lt;/code&amp;gt; et d&amp;#039;y placer des liens symboliques :&lt;br /&gt;
 mkdir /etc/xen/auto&lt;br /&gt;
 ln -s /etc/xen/mavm1.cfg /etc/xen/auto/mavm1.cfg&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Toujours dans la section boot &amp;amp; reboot, si on veut que l&amp;#039;hyperviseur procède à un shutdown des VM avant extinction de la machine (au lieu d&amp;#039;un SAVE), il convient de modifier quelques options de &amp;lt;code&amp;gt;/etc/default/xendomains&amp;lt;/code&amp;gt;&lt;br /&gt;
 XENDOMAINS_SAVE=&lt;br /&gt;
 XENDOMAINS_RESTORE=false&lt;br /&gt;
&lt;br /&gt;
== Fixer le CPU du dom0 ==&lt;br /&gt;
Pour diverses raisons, il est possible de n&amp;#039;attribuer qu&amp;#039;un seul CPU au dom0, dans le fichier &amp;lt;code&amp;gt;/etc/xen/xend-config.sxp&amp;lt;/code&amp;gt;&lt;br /&gt;
 # In SMP system, dom0 will use dom0-cpus # of CPUS&lt;br /&gt;
 # If dom0-cpus = 0, dom0 will take all cpus available&lt;br /&gt;
 (dom0-cpus 0)&lt;br /&gt;
Les CPU (en réalité les threads) sont comptés de 1 à N, 0 indique tous les CPU disponible.&lt;br /&gt;
&lt;br /&gt;
== Ressources IO du dom0 ==&lt;br /&gt;
Il est possible donner plus de crédits pour l&amp;#039;allocation des IO du dom0, dans &amp;lt;code&amp;gt; /etc/rc.local&amp;lt;/code&amp;gt; :&lt;br /&gt;
 /usr/sbin/xm sched-credit -d Domain-0 -w 512&lt;br /&gt;
&lt;br /&gt;
== Plusieurs bridges ==&lt;br /&gt;
Selon les cas, il peut être utile d&amp;#039;avoir à monter plusieurs bridges sur le dom0. Sans trop complexifier la chose, nous allons créer un script &amp;lt;code&amp;gt;/etc/xen/scripts/network-multi-bridge&amp;lt;/code&amp;gt; et y mettre dedans :&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 dir=$(dirname &amp;quot;$0&amp;quot;)&lt;br /&gt;
 &amp;quot;$dir/network-bridge&amp;quot; &amp;quot;$@&amp;quot; vifnum=0 netdev=eth0 bridge=eth0&lt;br /&gt;
 &amp;quot;$dir/network-bridge&amp;quot; &amp;quot;$@&amp;quot; vifnum=1 netdev=eth1 bridge=eth1&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier de rendre ce script exécutable &amp;lt;code&amp;gt;chmod +x /etc/xen/scripts/network-multi-bridge&amp;lt;/code&amp;gt; et de demander au démon Xen de prendre ce script plutôt qu&amp;#039;un autre, dans &amp;lt;code&amp;gt;/etc/xen/xend-config.sxp&amp;lt;/code&amp;gt; rechercher la ligne &lt;br /&gt;
 (network-script network-bridge)&lt;br /&gt;
pour la remplacer par&lt;br /&gt;
 (network-script network-multi-bridge)&lt;br /&gt;
&lt;br /&gt;
Un redémarrage pour être certain que toutes les modifications sont bien prises en compte et fonctionnelles, et c&amp;#039;est OK.&lt;br /&gt;
&lt;br /&gt;
== Bridge sans IP sur l&amp;#039;interface ==&lt;br /&gt;
Dans certains cas, il peut être intéressant de ne pas avoir d&amp;#039;IP sur une interface du dom0 (genre, pas d&amp;#039;IP publique).&lt;br /&gt;
Problème, si l&amp;#039;interface n&amp;#039;est pas configurée, elle ne monte pas au démarrage&lt;br /&gt;
Voici un petit trick applicable dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 allow-hotplug eth0&lt;br /&gt;
 iface eth0 inet manual&lt;br /&gt;
        pre-up ifconfig $IFACE up&lt;br /&gt;
        post-down ifconfig $IFACE down&lt;br /&gt;
&lt;br /&gt;
== Bridge sans interface physique ==&lt;br /&gt;
Dans certains cas, il est intéressant d&amp;#039;avoir un bridge sans interface physique reliée (communication interVM uniquement sur le même Dom0, ou simplement pour natter). Dans ce cas, il faut créer un bridge vide, puis y allouer les VMs :&lt;br /&gt;
auto xenbr1&lt;br /&gt;
 iface xenbr1 inet static&lt;br /&gt;
        address 10.10.0.1&lt;br /&gt;
        netmask 255.255.255.0&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_waitport 0&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Paraviritualized drivers pour Windows ==&lt;br /&gt;
[http://wiki.xen.org/wiki/XenWindowsGplPv Xen GPLPV Drivers]&lt;br /&gt;
&lt;br /&gt;
[https://plone.lucidsolutions.co.nz/linux/xen/windows/windows-server-2008-r2-xen-hvm-installation-with-gpvpv-drivers]&lt;br /&gt;
&lt;br /&gt;
= Sources =&lt;br /&gt;
* [https://gist.github.com/bivald/5690227]&lt;/div&gt;</summary>
		<author><name>Sn4kY</name></author>
	</entry>
</feed>