{"id":256,"date":"2014-07-15T13:49:00","date_gmt":"2014-07-15T13:49:00","guid":{"rendered":"http:\/\/hoper.dnsalias.net\/atdc\/index.php\/2014\/07\/15\/20140715virtualisation-kvm\/"},"modified":"2017-05-01T08:49:50","modified_gmt":"2017-05-01T06:49:50","slug":"20140715virtualisation-kvm","status":"publish","type":"post","link":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/2014\/07\/15\/20140715virtualisation-kvm\/","title":{"rendered":"Virtualisation d&rsquo;un windows avec kvm"},"content":{"rendered":"<h3>Windows ? Mais pourquoi ?<\/h3>\n<p>Tr\u00e8s int\u00e9ress\u00e9 par <a href=\"http:\/\/encausse.wordpress.com\/s-a-r-a-h\/\">SARAH<\/a>, un logiciel open source qui ne fonctionne que sous windows, j&rsquo;ai pens\u00e9 que c&rsquo;\u00e9tait une bonne occasion pour tester kvm. (Car des windows chez moi il y en a pas des masses&#8230;) J&rsquo;ai d\u00e9couvert qu&rsquo;il existait d\u00e9j\u00e0 un nombre monstrueux de tuto sur le net, et au moins autant de fa\u00e7on de proc\u00e9der \u00e0 la mise en place d&rsquo;une VM. Comme aucun de ces tuto ne m&rsquo;a vraiment sembl\u00e9 complet, je vais vous r\u00e9sumer les \u00e9tapes que j&rsquo;ai suivies de mon cot\u00e9.<\/p>\n<p>&nbsp;<\/p>\n<h3>Sarah<\/h3>\n<p>Dommage, mais en fait non. Apr\u00e8s quelques heures j&rsquo;ai laiss\u00e9 tomb\u00e9 l&rsquo;id\u00e9e de le faire tourner dans une machine virtuelle. En effet, il faut \u00e9videment une carte son pleinement fonctionnelle pour la reconnaissance vocale d&rsquo;un cot\u00e9 et la synth\u00e8se de l&rsquo;autre. Or, il existe de nombreux bugs sur kvm autour de la gestion du son. Bien que ce soit certainement possible, je n&rsquo;ai ni le temps ni le courage de me d\u00e9battre avec <a href=\"https:\/\/www.google.fr\/search?q=bug+kvm+audio+asla+nosound&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:fr:official&amp;client=firefox-a&amp;channel=sb&amp;gfe_rd=cr&amp;ei=fQbFU9SjOYSB8QeEjIHQDQ#channel=sb&amp;q=bug+kvm+audio+nosound&amp;rls=org.mozilla:fr:official\">tous ces bugs<\/a>. Sarah, ce sera donc pour une prochaine fois. L\u2019exp\u00e9rience de la virtualisation reste int\u00e9ressante, let&rsquo;s go !<\/p>\n<p>&nbsp;<\/p>\n<h3>Param\u00e9trage du r\u00e9seau<\/h3>\n<p>Le param\u00e9trage r\u00e9seau et de loin l&rsquo;aspect le plus compliqu\u00e9 de la virtualisation. On va gagner du temps en utilisant la configuration par d\u00e9faut. Les machines virtuelles auront acc\u00e8s \u00e0 internet et passant par l&rsquo;OS qui les h\u00e9berge. Par contre, il n&rsquo;est pas possible pour une autre machine pr\u00e9sente sur le r\u00e9seau de les atteindre directement. Pour plus d&rsquo;informations sur le sujet, il existe de nombreux documents sur internet, \u00e0 commencer par <a href=\"https:\/\/help.ubuntu.com\/12.04\/serverguide\/libvirt.html#virtual-networking\">la documentation officielle<\/a>, ou alors beaucoup plus d\u00e9taill\u00e9 <a href=\"http:\/\/www.inetdoc.net\/guides\/vm\/vm.network.tun-tap.html\">ici<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3>Les outils<\/h3>\n<p>Il existe (au moins) deux fa\u00e7on d&rsquo;utiliser KVM. Soit directement, soit en passant par libvirt. Mes premiers essais se sont fait avec kvm en direct. Avantages : C&rsquo;est tr\u00e8s facile, une ligne de commande et on lance une VM. Inconv\u00e9nients : Le nombre d&rsquo;option de cette ligne devient vite p\u00e9nible. (Ce que beaucoup contourne en cr\u00e9ant des scripts perso). Mais le vrai soucis est le manque de contr\u00f4le des VM une fois lanc\u00e9s. Le simple fait de les arr\u00eater est compliqu\u00e9 car il faut imp\u00e9rativement se connecter dessus en mode console etc. Impossible d&rsquo;envoyer un \u00ab\u00a0signal d\u2019arr\u00eat\u00a0\u00bb ou ce genre de chose. libvirt propose ce genre de fonctionnalit\u00e9s, et beaucoup, beaucoup d&rsquo;autre. M\u00eame si cela n\u00e9cessite de passer par une couche d&rsquo;abstraction suppl\u00e9mentaire, le jeu en vaut la chandelle, alors allons-y pour libvirt.<\/p>\n<p>&nbsp;<\/p>\n<h3>Premi\u00e8re \u00e9tape : Cr\u00e9ation du disque virtuel<\/h3>\n<p>Apr\u00e8s avoir install\u00e9 les outils de virtualisation (apt-get install kvm libvirt-bin), il faut cr\u00e9er un fichier qui servira de disque virtuel. Ce fichier peut \u00eatre \u00ab\u00a0format\u00e9\u00a0\u00bb de deux fa\u00e7on diff\u00e9rentes : raw ou qcow2. Pour que l&rsquo;installation de windows se passe correctement, j&rsquo;ai du choisir le mode \u00ab\u00a0raw\u00a0\u00bb :<\/p>\n<pre>qemu-img create ~\/VM\/seven.img 40G<\/pre>\n<p>Dans cet exemple j&rsquo;avais cr\u00e9e un r\u00e9pertoire VM dans mon \u00ab\u00a0home\u00a0\u00bb utilisateur. 40 GB est bien sur la taille du disque et comme rien n&rsquo;est pr\u00e9cis\u00e9, c&rsquo;est le mode raw qui est utilis\u00e9.<\/p>\n<p>&nbsp;<\/p>\n<h3>Deuxi\u00e8me \u00e9tape : Cr\u00e9ation de la machine virtuelle<\/h3>\n<pre>virt-install --name=seven --arch=x86_64 --vcpus=4 --ram=4096 --os-type=windows --os-variant=win7 --hvm --connect=qemu:system --network bridge:virbr0 --cdrom=windows_7_version_officielle_mon_cul.iso --disk path=~\/VM\/seven.img --accelerate --vnc --noautoconsole --keymap=fr --sound<\/pre>\n<p>On constate que je cr\u00e9e cette machine virtuelle avec 4 CPU et 4 GB de ram (\u00e0 adapter bien sur en fonction de votre mat\u00e9riel&#8230;) Notez aussi la variante utilis\u00e9e, ici \u00ab\u00a0win7\u00a0\u00bb. Pour connaitre la liste des variantes reconnues :<\/p>\n<pre>virt-install --os-variant list<\/pre>\n<p>Pour le r\u00e9seau, j&rsquo;utilise le bridge virbr0, automatiquement cr\u00e9e sous ubuntu lors de l&rsquo;installation des paquets li\u00e9s \u00e0 la virtualisation. A ce stade, la machine virtuelle est lanc\u00e9e, boot sur le CD, et lance l&rsquo;installation de Windows. Pour suivre l&rsquo;installation, il faut lancer un client vnc (celui que vous voulez, moi j&rsquo;aime bien remmina), et le faire pointer sur localhost (port par d\u00e9faut). Terminez l&rsquo;installation de windows normalement.<\/p>\n<p>&nbsp;<\/p>\n<h3>Troisi\u00e8me \u00e9tape : Installation des pilotes suppl\u00e9mentaires.<\/h3>\n<p>T\u00e9l\u00e9charger l&rsquo;image iso du CD contenant les drivers windows <a href=\"https:\/\/alt.fedoraproject.org\/pub\/alt\/virtio-win\/latest\/images\/\">ici<\/a>. Comme c&rsquo;est toujours le CD de windows 7 qui est \u00ab\u00a0ins\u00e9r\u00e9\u00a0\u00bb dans le lecteur virtuel. il faut changer le CD :<\/p>\n<pre>virsh domblklist seven #hdc chez moi virsh seven change-media hdc nouveau_fichier.iso<\/pre>\n<p>Installer les drivers via le gestionnaire de p\u00e9riph\u00e9rique windows en indiquant le bon emplacement sur le CD.<\/p>\n<p>&nbsp;<\/p>\n<h3>Quatri\u00e8me \u00e9tape : Post Installation<\/h3>\n<p>Une fois que vous avez install\u00e9 ce que vous voulez (rien que les mises \u00e0 jour de windows, pr\u00e9voyez une bonne apr\u00e8s-midi minimum), il reste quelque petits d\u00e9tail \u00e0 corriger. Par exemple, vous avez peut \u00eatre remarqu\u00e9 que windows ne reconnait que deux cpus, alors qu&rsquo;on lui en avait donn\u00e9 lors de la cr\u00e9ation de la VM. Pourquoi ? Et bien ce fut pour moi le <a href=\"http:\/\/serverfault.com\/questions\/101434\/why-does-my-windows-7-vm-running-under-linux-kvm-not-use-all-the-virtual-proces\">GROS LOL<\/a> du jour. Par d\u00e9faut, kvm pr\u00e9sente des cpu \u00ab\u00a0normaux\u00a0\u00bb. Autrement dit, seven d\u00e9tecte la pr\u00e9sence de 4 cpu dans la machine virtuelle. Or, seven est limit\u00e9 (brid\u00e9) pour ne pouvoir utiliser que deux cpus physiques maximum. Les deux cpu suppl\u00e9mentaires n\u2019apparaissent donc pas. Il faut modifier la configuration de kvm pour ne pas pr\u00e9senter des cpus physiques diff\u00e9rents, mais un seul et unique cpu physiques avec des c\u0153urs distincts. De plus, maintenant que Windows est install\u00e9, cela ne pose plus de probl\u00e8me d&rsquo;utiliser une image disque au format qcow2 (qui dispose de plus de fonctionnalit\u00e9, notamment snapshot, compression&#8230;) que le format raw.<\/p>\n<p>On va donc convertir l&rsquo;image disque et passer de raw \u00e0 qcow2. On va aussi \u00ab\u00a0enlever\u00a0\u00bb le CD pour que l&rsquo;iso ne soit plus automatiquement \u00ab\u00a0ins\u00e9rer\u00a0\u00bb \u00e0 chaque lancement.<\/p>\n<h4>Conversion de l&rsquo;image disque<\/h4>\n<p>STOPPER Windows. Puis :<\/p>\n<pre>qemu-img convert -c -O qcow2 ~\/VM\/seven.img ~\/VM\/seven.qcow2<\/pre>\n<p>Admirez la r\u00e9duction de taille du fichier.<\/p>\n<h4>Modifier les param\u00e8tres de la VM<\/h4>\n<p>virsh dumpxml &gt;\/tmp\/seven.xml<\/p>\n<p>\u00c9diter le fichier \/tmp\/seven.xml et modifier le nom de l&rsquo;image disque et le type (qcow2). Supprimer la ligne mentionnant l&rsquo;iso de windows. Enfin, pour le probl\u00e8me des cpu, ajouter le paragraphe suivant apr\u00e8s la section \u00ab\u00a0vcpu\u00a0\u00bb :<\/p>\n<p>&lt;cpu&gt; &lt;topology sockets=&rsquo;1&prime; cores=&rsquo;4&prime; threads=&rsquo;1&rsquo;\/&gt; &lt;\/cpu&gt;<\/p>\n<p>Il ne reste plus qu&rsquo;a importer cette nouvelle configuration et \u00e0 relancer la VM:<\/p>\n<pre>virsh undefine seven\r\nvirsh define \/tmp\/seven.xml\r\nvirsh start seven<\/pre>\n<p>Voila pour les bases de la cr\u00e9ation d&rsquo;une VM sous Windows. Amusez vous bien !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Windows ? Mais pourquoi ? Tr\u00e8s int\u00e9ress\u00e9 par SARAH, un logiciel open source qui ne fonctionne que sous windows, j&rsquo;ai pens\u00e9 que c&rsquo;\u00e9tait une bonne occasion pour tester kvm. (Car des windows chez moi il y en a pas des masses&#8230;) J&rsquo;ai d\u00e9couvert qu&rsquo;il existait d\u00e9j\u00e0 un nombre monstrueux de tuto sur le net, et [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-256","post","type-post","status-publish","format-standard","hentry","category-geekitude"],"_links":{"self":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/comments?post=256"}],"version-history":[{"count":3,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/256\/revisions"}],"predecessor-version":[{"id":486,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/256\/revisions\/486"}],"wp:attachment":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/media?parent=256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/categories?post=256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/tags?post=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}