Différences entre les versions de « Creation de VM linux »
| Ligne 1 : | Ligne 1 : | ||
__TOC__ | __TOC__ | ||
On part ici dans l'hypothèse que l'on a déja une fichier image tar.gz de son OS linux. La création de la vm se fait sous kvm, mais le principe est le même sur un hyperV. | On part ici dans l'hypothèse que l'on a déja une fichier image tar.gz de son OS linux. Pour la création d'une image linux voir cette, il suffit d'installer un linux sur un serveur, rebooter le serveur en pxe, monter les disques, puis faire un tar.gz. La création de la vm se fait sous kvm, mais le principe est le même sur un hyperV. | ||
=== Création du fichier === | === Création du fichier et detar de l'image === | ||
==== Cas 1 : fichier img ==== | ==== Cas 1 : fichier img ==== | ||
| Ligne 11 : | Ligne 11 : | ||
# losetup /dev/loop0 www1.img | # losetup /dev/loop0 www1.img | ||
# fdisk /dev/loop0 | # fdisk /dev/loop0 | ||
On peut soit faire une seule partition /, soit un / et un /boot. Les différences seront marquées plus bas suivant les 2 cas. On créé ici juste un / | |||
# fdisk -l /dev/loop0 | |||
Device Boot Start End Blocks Id System | |||
/dev/loop0p1 1 652 5237158+ 83 Linux | |||
# kpartx -a /dev/loop0 (cela nous permet d'avoir acces au sous partition de loop0 : loop0p1, loop0p2... | |||
# mkfs.ext3 /dev/mapper/loop0p1 | |||
# mount /dev/mapper/loop0p1 /mnt | |||
(si il y a un /boot monter apres l'autre partition correspondant au /boot) | |||
# cd /mnt | |||
# tar xzvf /nom_image.tar.gz | |||
</pre> | </pre> | ||
| Ligne 17 : | Ligne 30 : | ||
Travailler avec des fichier en block device (LV ou partion /dev/sdaX) permet de bien meilleur performance de la VM. | Travailler avec des fichier en block device (LV ou partion /dev/sdaX) permet de bien meilleur performance de la VM. | ||
# lvcreate -L6G -n centos6test vol_kvm1 (lvcreate -LtailleG -n nom_du_lv nom_vg) | |||
# cfdisk /dev/vol_kvm1/centos6test | |||
# fdisk -l /dev/vol_kvm1/centos6test | |||
Device Boot Start End Blocks Id System | |||
dev/vol_kvm1/centos6test1 1 652 5237158+ 83 Linux | |||
# kpartx -a /dev/vol_kvm1/centos6test | |||
# mkfs.ext3 /dev/mapper/vol_kvm1-centos6test1 | |||
# mount /dev/mapper/vol_kvm1-centos6test1 /mnt/ | |||
(si il y a un /boot monter apres l'autre partition correspondant au /boot) | |||
=== Modification dans l'image === | |||
Pour que l'image soit bootable, il y a 3 fichiers à modifier. On peut avoir ici soit du vdX (driver virtio sous kvm), soit du sdX (scsi classique), ou bien alors hdX (ide mais rare) | |||
* /mnt/etc/fstab | |||
<pre> | |||
/dev/vda1 / ext3 defaults 1 1 | |||
# et eventuellement si /boot | |||
# /dev/vda2 / ext3 defaults 1 1 | |||
# et si on a une partition pour le swap | |||
#/dev/vdb1 swap swap defaults 0 0 | |||
# ou /dev/vdb pour le swap ca revient au même | |||
none /dev/pts devpts gid=5,mode=620 0 0 | |||
none /proc proc defaults 0 0 | |||
none /dev/shm tmpfs defaults 0 0 | |||
</pre> | |||
* /mnt/boot/grub/menu.lst | |||
Ici on rajoute /boot devant le nom du kernel et de l'initramfs car on n'a pas de partition /boot. Si on a une partition /boot, ce n'est pas la peine | |||
<pre> | |||
efault=0 | |||
timeout=5 | |||
hiddenmenu | |||
title CentOS (2.6.32-279.5.2.el6.x86_64) | |||
root (hd0,0) | |||
kernel /boot/vmlinuz-2.6.32-279.5.2.el6.x86_64 ro root=/dev/vda1 | |||
initrd /boot/initramfs-2.6.32-279.5.2.el6.x86_64.img | |||
</pre> | |||
* /mnt/boot/grub/device.map | |||
La ligne à modifier est celle de hd0 | |||
<pre> | |||
(fd0) /dev/fd0 | |||
(hd0) /dev/vda | |||
</pre> | |||
=== Installation de grub === | |||
Version du 20 novembre 2012 à 17:23
On part ici dans l'hypothèse que l'on a déja une fichier image tar.gz de son OS linux. Pour la création d'une image linux voir cette, il suffit d'installer un linux sur un serveur, rebooter le serveur en pxe, monter les disques, puis faire un tar.gz. La création de la vm se fait sous kvm, mais le principe est le même sur un hyperV.
Création du fichier et detar de l'image
Cas 1 : fichier img
# dd if=/dev/zero of=www1.img bs=1 count=1 seek=10G (n'ecris sur le disque qu'un octet, est cree un fichier de 10Go, dd instantanné)
# losetup /dev/loop0 www1.img
# fdisk /dev/loop0
On peut soit faire une seule partition /, soit un / et un /boot. Les différences seront marquées plus bas suivant les 2 cas. On créé ici juste un /
# fdisk -l /dev/loop0
Device Boot Start End Blocks Id System
/dev/loop0p1 1 652 5237158+ 83 Linux
# kpartx -a /dev/loop0 (cela nous permet d'avoir acces au sous partition de loop0 : loop0p1, loop0p2...
# mkfs.ext3 /dev/mapper/loop0p1
# mount /dev/mapper/loop0p1 /mnt
(si il y a un /boot monter apres l'autre partition correspondant au /boot)
# cd /mnt
# tar xzvf /nom_image.tar.gz
Cas 2 : fichier block device LV
Travailler avec des fichier en block device (LV ou partion /dev/sdaX) permet de bien meilleur performance de la VM.
- lvcreate -L6G -n centos6test vol_kvm1 (lvcreate -LtailleG -n nom_du_lv nom_vg)
- cfdisk /dev/vol_kvm1/centos6test
- fdisk -l /dev/vol_kvm1/centos6test
Device Boot Start End Blocks Id System
dev/vol_kvm1/centos6test1 1 652 5237158+ 83 Linux
- kpartx -a /dev/vol_kvm1/centos6test
- mkfs.ext3 /dev/mapper/vol_kvm1-centos6test1
- mount /dev/mapper/vol_kvm1-centos6test1 /mnt/
(si il y a un /boot monter apres l'autre partition correspondant au /boot)
Modification dans l'image
Pour que l'image soit bootable, il y a 3 fichiers à modifier. On peut avoir ici soit du vdX (driver virtio sous kvm), soit du sdX (scsi classique), ou bien alors hdX (ide mais rare)
- /mnt/etc/fstab
/dev/vda1 / ext3 defaults 1 1 # et eventuellement si /boot # /dev/vda2 / ext3 defaults 1 1 # et si on a une partition pour le swap #/dev/vdb1 swap swap defaults 0 0 # ou /dev/vdb pour le swap ca revient au même none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0
- /mnt/boot/grub/menu.lst
Ici on rajoute /boot devant le nom du kernel et de l'initramfs car on n'a pas de partition /boot. Si on a une partition /boot, ce n'est pas la peine
efault=0
timeout=5
hiddenmenu
title CentOS (2.6.32-279.5.2.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-279.5.2.el6.x86_64 ro root=/dev/vda1
initrd /boot/initramfs-2.6.32-279.5.2.el6.x86_64.img
- /mnt/boot/grub/device.map
La ligne à modifier est celle de hd0
(fd0) /dev/fd0 (hd0) /dev/vda