GCCCompileFarm » Historique » Version 20
Version 19 (Éric Deschamps, 27/08/2012 13:12) → Version 20/51 (Éric Deschamps, 02/09/2012 10:41)
{{>toc}}
h1. GCCCompileFarm
h2. Machines virtuelles demandées
TODO KVM a la demande sur gcc75 et 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 ?
* Idée amusante non qemu : s/390 avec l'emulateur Hercules cf "Installing a custom kernel on Debian S/390(wheezy/sid)" http://lists.debian.org/debian-s390/2012/08/msg00001.html
* openwrt MIPS
* debian/autre ARM
h2. Machines virtuelles installées
h3. Sur gcc75
* Ubuntu 12.04 LTS AMD64 : ssh farmuser@ubuntu-1204-amd64
h3. 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
h2. Pré-requis sur l'hôte des machines virtuelles (Debian)
<pre>
aptitude install virtinst virt-top qemu-kvm libvirt-bin
</pre>
h2. Gestion des machines virtuelles
*Remarque* : le compte utilisateur doit être membre du *groupe libvirt*.
h3. Lister les machines virtuelles
*En cours :*
Avec virsh :
<pre>
virsh list
</pre>
Autre commande :
<pre>
virt-top
</pre>
*Disponibles :*
<pre>
virsh list --all
</pre>
h3. Démarrer une machine virtuelle
<pre>
virsh start nom_vm
</pre>
h3. Arrêter une machine virtuelle
<pre>
virsh shutdown nom_vm
</pre>
h2. Spécificités en fonction des systèmes
Voir http://www.linux-kvm.org/page/Guest_Support_Status
h2. Installation d'une machine virtuelle
Commande virt-install donnée à titre indicatif :
<pre>
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
</pre>
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.
h2. Installation d'un machine virtuelle RedHat (RHEL) avec KVM
_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.
h3. Paramétrage réseau
* /etc/sysconfig/network (par exemple)
<pre>
NETWORKING=yes
HOSTNAME=rhel-6.3-amd64.localdomain
</pre>
* /etc/hosts (ajout, toujours par exemple)
<pre>
192.168.122.13 rhel-6.3-amd64 rhel-6.3-amd64.localdomain
</pre>
* /etc/sysconfig/network-scripts/ifcfg-eth0 (exemple)
<pre>
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"
</pre>
* Mise à jour de la configuration réseau
<pre>
# ifdown eth0
#Â ifup eth0
</pre>
h3. Enregistrement de la machine chez RedHat
<pre>
# rhn_register
</pre>
Puis login / mot de passe, suivant, etc.
h3. Mise à jour et installation des paquets nécessaires
* Mise à jour simple :
<pre>
yum update
</pre>
* Installation des paquets nécessaires
<pre>
yum groupinstall 'Development Tools'
</pre>
* Autres outils (*** à compléter ***)
<pre>
yum install screen
</pre>
h2. Machines virtuelles NetBSD
h3. Commande d'installation
Exemple pour NetBSD-current (AMD64)!
<pre>
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
</pre>
h3. Démarrage sans ACPI par défaut
"Cette page":http://www.ezunix.org/index.php?title=NetBSD_5_on_KVM 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* :
<pre>
default=3
</pre>
h3. Interface réseau
L'interface réseau *rtl8139* par défaut "ne fonctionne pas bien":http://wiki.gcu.info/doku.php?id=linux:kvm_virt-manager_nictype. Il faut la changer par une *ne2k_pci*.
Par exemple dans _/etc/libvirt/qemu/netbsd512.xml_ :
<pre>
<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>
</pre>
h3. 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* :
<pre>
#(...)
dhclient=NO
#dhclient_flags="ne0"
#(...)
</pre>
On place l'adresse de la passerelle dans */etc/mygate* :
<pre>
192.168.122.1
</pre>
Les serveurs DNS se déclarent comme toujours dans */etc/resolv.conf* :
<pre>
nameserver 192.168.122.1
</pre>
h3. Serveur SSH
Pour lancer le serveur SSH automatiquement, ajouter ceci dans */etc/rc.conf* :
<pre>
sshd=YES
</pre>
Pour le lancer à la main une première fois :
<pre>
#Â /etc/rc.d/sshd start
</pre>
h3. Installation de logiciels
La première chose est de configurer "pkgsrc":http://www.netbsd.org/docs/pkgsrc/using.html pour qu'il sache où trouver les sources des logiciels. Par exemple pour un *NetBSD-5.1.2* sur *amd64* :
<pre>
# export PKG_PATH="http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/5.1/All"
</pre>
Ensuite on installe "pkgin":http://pkgin.net/ car il facilite grandement l'installation des programmes :
<pre>
# pkg_add -v pkgin
</pre>
Une fois installé, il faut configurer les dépôts dans */usr/pkg/etc/pkgin/repositories.conf*. Toujours pour notre exemple :
<pre>
ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/$arch/5.1/All
</pre>
Ensuite on met à jour la base de *pkgin* :
<pre>
# pkgin update
</pre>
"Exemples d'utilisation de pkgin":http://www.netbsdfr.org/wiki/doku.php?id=trad:start#exemples_d_utilisation
Documentation sur pkgin :
* http://www.netbsdfr.org/wiki/doku.php?id=trad:start
* http://www.unixgarden.com/index.php/gnu-linux-magazine/un-pkgin-sans-glace-pour-la-6
* http://pkgin.net/
h2. Machines virtuelles FreeBSD
h3. Commande d'installation
Exemple pour FreeBSD-9.0 (x86)
<pre>
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
</pre>
h2. Recherche et résolution de problèmes avec virsh/libvirt
Les journaux se trouvent dans */var/log/libvirt/qemu/*.
h3. Erreur : cannot acquire state change lock
*Exemple* :
<pre>
# virsh start netbsd-512-amd64
error: Failed to start domain netbsd-512-amd64
error: Timed out during operation: cannot acquire state change lock
</pre>
Il faut relancer libvirtd :
<pre>
killall -9 libvirtd
rm /var/run/libvirtd.pid
/etc/init.d/libvirt-bin restart
</pre>
h1. GCCCompileFarm
h2. Machines virtuelles demandées
TODO KVM a la demande sur gcc75 et 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 ?
* Idée amusante non qemu : s/390 avec l'emulateur Hercules cf "Installing a custom kernel on Debian S/390(wheezy/sid)" http://lists.debian.org/debian-s390/2012/08/msg00001.html
* openwrt MIPS
* debian/autre ARM
h2. Machines virtuelles installées
h3. Sur gcc75
* Ubuntu 12.04 LTS AMD64 : ssh farmuser@ubuntu-1204-amd64
h3. 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
h2. Pré-requis sur l'hôte des machines virtuelles (Debian)
<pre>
aptitude install virtinst virt-top qemu-kvm libvirt-bin
</pre>
h2. Gestion des machines virtuelles
*Remarque* : le compte utilisateur doit être membre du *groupe libvirt*.
h3. Lister les machines virtuelles
*En cours :*
Avec virsh :
<pre>
virsh list
</pre>
Autre commande :
<pre>
virt-top
</pre>
*Disponibles :*
<pre>
virsh list --all
</pre>
h3. Démarrer une machine virtuelle
<pre>
virsh start nom_vm
</pre>
h3. Arrêter une machine virtuelle
<pre>
virsh shutdown nom_vm
</pre>
h2. Spécificités en fonction des systèmes
Voir http://www.linux-kvm.org/page/Guest_Support_Status
h2. Installation d'une machine virtuelle
Commande virt-install donnée à titre indicatif :
<pre>
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
</pre>
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.
h2. Installation d'un machine virtuelle RedHat (RHEL) avec KVM
_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.
h3. Paramétrage réseau
* /etc/sysconfig/network (par exemple)
<pre>
NETWORKING=yes
HOSTNAME=rhel-6.3-amd64.localdomain
</pre>
* /etc/hosts (ajout, toujours par exemple)
<pre>
192.168.122.13 rhel-6.3-amd64 rhel-6.3-amd64.localdomain
</pre>
* /etc/sysconfig/network-scripts/ifcfg-eth0 (exemple)
<pre>
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"
</pre>
* Mise à jour de la configuration réseau
<pre>
# ifdown eth0
#Â ifup eth0
</pre>
h3. Enregistrement de la machine chez RedHat
<pre>
# rhn_register
</pre>
Puis login / mot de passe, suivant, etc.
h3. Mise à jour et installation des paquets nécessaires
* Mise à jour simple :
<pre>
yum update
</pre>
* Installation des paquets nécessaires
<pre>
yum groupinstall 'Development Tools'
</pre>
* Autres outils (*** à compléter ***)
<pre>
yum install screen
</pre>
h2. Machines virtuelles NetBSD
h3. Commande d'installation
Exemple pour NetBSD-current (AMD64)!
<pre>
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
</pre>
h3. Démarrage sans ACPI par défaut
"Cette page":http://www.ezunix.org/index.php?title=NetBSD_5_on_KVM 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* :
<pre>
default=3
</pre>
h3. Interface réseau
L'interface réseau *rtl8139* par défaut "ne fonctionne pas bien":http://wiki.gcu.info/doku.php?id=linux:kvm_virt-manager_nictype. Il faut la changer par une *ne2k_pci*.
Par exemple dans _/etc/libvirt/qemu/netbsd512.xml_ :
<pre>
<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>
</pre>
h3. 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* :
<pre>
#(...)
dhclient=NO
#dhclient_flags="ne0"
#(...)
</pre>
On place l'adresse de la passerelle dans */etc/mygate* :
<pre>
192.168.122.1
</pre>
Les serveurs DNS se déclarent comme toujours dans */etc/resolv.conf* :
<pre>
nameserver 192.168.122.1
</pre>
h3. Serveur SSH
Pour lancer le serveur SSH automatiquement, ajouter ceci dans */etc/rc.conf* :
<pre>
sshd=YES
</pre>
Pour le lancer à la main une première fois :
<pre>
#Â /etc/rc.d/sshd start
</pre>
h3. Installation de logiciels
La première chose est de configurer "pkgsrc":http://www.netbsd.org/docs/pkgsrc/using.html pour qu'il sache où trouver les sources des logiciels. Par exemple pour un *NetBSD-5.1.2* sur *amd64* :
<pre>
# export PKG_PATH="http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/5.1/All"
</pre>
Ensuite on installe "pkgin":http://pkgin.net/ car il facilite grandement l'installation des programmes :
<pre>
# pkg_add -v pkgin
</pre>
Une fois installé, il faut configurer les dépôts dans */usr/pkg/etc/pkgin/repositories.conf*. Toujours pour notre exemple :
<pre>
ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/$arch/5.1/All
</pre>
Ensuite on met à jour la base de *pkgin* :
<pre>
# pkgin update
</pre>
"Exemples d'utilisation de pkgin":http://www.netbsdfr.org/wiki/doku.php?id=trad:start#exemples_d_utilisation
Documentation sur pkgin :
* http://www.netbsdfr.org/wiki/doku.php?id=trad:start
* http://www.unixgarden.com/index.php/gnu-linux-magazine/un-pkgin-sans-glace-pour-la-6
* http://pkgin.net/
h2. Machines virtuelles FreeBSD
h3. Commande d'installation
Exemple pour FreeBSD-9.0 (x86)
<pre>
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
</pre>
h2. Recherche et résolution de problèmes avec virsh/libvirt
Les journaux se trouvent dans */var/log/libvirt/qemu/*.
h3. Erreur : cannot acquire state change lock
*Exemple* :
<pre>
# virsh start netbsd-512-amd64
error: Failed to start domain netbsd-512-amd64
error: Timed out during operation: cannot acquire state change lock
</pre>
Il faut relancer libvirtd :
<pre>
killall -9 libvirtd
rm /var/run/libvirtd.pid
/etc/init.d/libvirt-bin restart
</pre>