Projet

Général

Profil

GCCCompileFarm

Machines virtuelles demandées

TODO KVM a la demande sur gcc76

  • FreeBSD (diverses versions et 32/64)
  • RHEL (idem, on a 5 licences RHN)
  • OpenBSD (idem)
  • NetBSD (idem)
  • debian (idem)
  • ubuntu (idem)
  • gentoo (idem)

En non x86/amd64 qemu ?

Machines virtuelles installées

Sur gcc76

  • FreeBSD 8.3 amd64 : ssh farmuser@freebsd-83-amd64
  • Debian GNU/Linux Squeeze x86 : ssh farmuser@squeeze-x86
  • OpenBSD 5 / i386 : ssh farmuser@openbsd-5-x86
  • RedHat Linux Server 6.3 amd64 : ssh farmuser@rhel-63-amd64
  • NetBSD 5.1.2 amd64 : ssh farmuser@netbsd-512-amd64
  • FreeBSD 9.0 i386 : ssh farmuser@freebsd-90-x86
  • Ubuntu 12.04 LTS AMD64 : ssh farmuser@ubuntu-1204-amd64
  • Debian GNU/Linux Wheezy amd64 : ssh farmuser@debian-7-amd64
  • NetBSD-6.0 amd64 : ssh farmuser@netbsd-60-amd64
  • Fedora Core 18 amd64 : ssh farmuser@fc18-amd64
À mettre à jour ou réinstaller :
  • NetBSD-Current amd64 : ssh farmuser@netbsd-current-amd64

Pré-requis sur l'hôte des machines virtuelles (Debian)

aptitude install virtinst  virt-top qemu-kvm libvirt-bin

Gestion des machines virtuelles

Remarque : le compte utilisateur doit être membre du groupe libvirt.

Lister les machines virtuelles

En cours :

Avec virsh :

virsh list

Autre commande :

virt-top

Disponibles :

virsh list --all

Démarrer une machine virtuelle

virsh start nom_vm

Arrêter une machine virtuelle

virsh shutdown nom_vm

Spécificités en fonction des systèmes

Voir http://www.linux-kvm.org/page/Guest_Support_Status

Installation d'une machine virtuelle

Commande virt-install donnée à titre indicatif :

virt-install --accelerate --hvm --connect qemu:///system --cdrom ~erdesc/isos/debian-6.0.5-i386-netinst.iso -n squeeze-x86 -r 1024 \
--disk path=/var/lib/libvirt/images/debian-squeeze-x86.qcow2,bus=virtio,size=10,format=qcow2 --vnc

Petites remarques :
  • -n permet de donner un nom à la machine virtuelle
  • -r précise la taille mémoire allouée à la VM
  • --disk path=/var/lib/libvirt/images/debian-squeeze-x86.qcow2,bus=virtio,size=10,format=qcow2 : on place par défaut les images dans le répertoire /var/lib/libvirt/images/. Ici on utilise le pilote virtio parce qu'il est généralement fourni sous Linux, donc pour un BSD on préférera ide, sata ou scsi, la taille de l'image est de 10 Go et le format qcow2 est extensible, donc évite de manger les 10Go sur le disque pour rien.

Machines virtuelles RedHat (RHEL) / Fedora /CentOS

Petites notes à déplacer plus tard

RedHat documente l'installation des machines virtuelles avec KVM (* lien *).

Pour commencer, j'ai eu quelques soucis avec les pilotes virtio pour le disque virtuel et la carte réseau. J'ai résolu le problème en utilisant respectivement un contrôleur IDE et une carte ethernet e1000.

Ensuite, une fois l'installation terminée, il faut changer le nom d'hôte, parfois reparamétrer la carte réseau et enfin enregistrer la machine chez RedHat avant de mettre à jour et d'installer de nouveaux paquets.

Paramétrage réseau

  • /etc/sysconfig/network (par exemple)
    NETWORKING=yes
    HOSTNAME=rhel-6.3-amd64.localdomain
    
  • /etc/hosts (ajout, toujours par exemple)
    192.168.122.13 rhel-6.3-amd64 rhel-6.3-amd64.localdomain
    
  • /etc/sysconfig/network-scripts/ifcfg-eth0 (exemple)
    DEVICE="eth0" 
    BOOTPROTO="static" 
    IPADDR=192.168.122.13
    BROADCAST=192.168.122.255
    NETMASK=255.255.255.0
    NETWORK=192.168.122.0
    GATEWAY=192.168.122.1
    HWADDR="52:54:00:A8:19:67" 
    NM_CONTROLLED="yes" 
    ONBOOT="yes" 
    TYPE="Ethernet" 
    UUID="88376404-9ee2-4455-bee3-fe97f2df9fff" 
    
  • Mise à jour de la configuration réseau
# ifdown eth0
# ifup eth0

Spécifique à RHEL : enregistrement de la machine chez RedHat

# rhn_register

Puis login / mot de passe, suivant, etc.

Mise à jour et installation des paquets nécessaires

  • Mise à jour simple :
    yum update
    
  • Installation des paquets nécessaires
    yum groupinstall 'Development Tools'
    
  • Autres outils (* à compléter *)
    yum install screen
    
  • Pour la Fedora Core 18
    yum install nfs-utils net-tools
    

Machines virtuelles NetBSD

Commande d'installation

Exemple pour NetBSD-current (AMD64)!

virt-install --accelerate --hvm --connect qemu:///system --cdrom ~erdesc/isos/netbsd-amd64-6.0-beta2.iso -n netbsd-current-amd64 -r 1024 \
--disk path=/var/lib/libvirt/images/netbsd-current-amd64.qcow2,bus=ide,size=10,format=qcow2 --network network=default,model=ne2k_pci --vnc

Démarrage sans ACPI par défaut

Cette page précise qu'il faut démarrer sans ACPI et sans SMP. Le démarrage sans SMP ni ACPI ayant planté sur la machine virtuelle NetBSD-5.1.2-amd64, j'ai choisi de ne désactiver que l'ACPI.

/boot.cfg :

default=3

Interface réseau

L'interface réseau rtl8139 par défaut ne fonctionne pas bien. Il faut la changer par une ne2k_pci.

Par exemple dans /etc/libvirt/qemu/netbsd512.xml :

    <interface type='network'>
      <mac address='52:54:00:f5:96:fe'/>
      <source network='default'/>
      <model type='ne2k_pci'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

Configuration réseau

Si vous avez choisi DHCP à l'installation, il faut modifier quelques fichiers pour passer en IP fixe :

On désactive DHCP dans /etc/rc.conf :

#(...)
dhclient=NO
#dhclient_flags="ne0" 
#(...)

Ensuite, on peut paramétrer l'IP fixe dans le fichier /etc/ifconfig.ne0 :

up
inet 192.168.122.14

On place l'adresse de la passerelle dans /etc/mygate :

192.168.122.1

Les serveurs DNS se déclarent comme toujours dans /etc/resolv.conf :

nameserver 192.168.122.1

Serveur SSH

Pour lancer le serveur SSH automatiquement, ajouter ceci dans /etc/rc.conf :

sshd=YES

Pour le lancer à la main une première fois :

# /etc/rc.d/sshd start

Installation de logiciels

La première chose est de configurer pkgsrc pour qu'il sache où trouver les sources des logiciels. Par exemple pour un NetBSD-5.1.2 sur amd64 :

# export PKG_PATH="http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/5.1/All" 

Ensuite on installe pkgin car il facilite grandement l'installation des programmes :

# pkg_add -v pkgin

Une fois installé, il faut configurer les dépôts dans /usr/pkg/etc/pkgin/repositories.conf. Toujours pour notre exemple :

ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/$arch/5.1/All

Ensuite on met à jour la base de pkgin :

# pkgin update

Exemples d'utilisation de pkgin

Documentation sur pkgin :

Machines virtuelles FreeBSD

Commande d'installation

Exemple pour FreeBSD-9.0 (x86)

virt-install --accelerate --hvm --connect qemu:///system --cdrom ~erdesc/isos/FreeBSD-9.0-RELEASE-i386-bootonly.iso -n freebsd-90-x86 -r 1024 \
--disk path=/var/lib/libvirt/images/freebsd-90-x86.qcow2,bus=ide,size=10,format=qcow2 --network network=default,model=e1000 --vnc

Configuration réseau

Remarque : il faut ajouter un nom de domaine au nom de machine pour que le système démarre convenablement. "local" convient parfaitement.

Dans /etc/rc.conf :

hostname="freebsd-90-x86.local" 
keymap="fr.iso.acc.kbd" 
ifconfig_em0=" inet 192.168.122.18 netmask 0xffffff00" 
defaultrouter="192.168.122.1" 
sshd_enable="YES" 
tcp_extensions="YES" 

Configuration supplémentaire

J'ai lu quelque part, je ne me souviens plus où qu'il faut ajouter ceci au fichier /boot/loader.conf :

hw.ata.ata_dma=0

Installation de logiciels

On utilise les commandes pkg_add, pkg_delete et pkg_info. Par exemple, pour installer bash :

pkg_add -r bash
Installation des logiciels sur FreeBSD :

Recherche et résolution de problèmes avec virsh/libvirt

Les journaux se trouvent dans /var/log/libvirt/qemu/.

Erreur : cannot acquire state change lock

Exemple :

# virsh start netbsd-512-amd64
error: Failed to start domain netbsd-512-amd64
error: Timed out during operation: cannot acquire state change lock

Il faut relancer libvirtd :

killall -9 libvirtd
rm  /var/run/libvirtd.pid
/etc/init.d/libvirt-bin restart