28 février 2021

Tuto Virtualisation avec KVM, partie V : VM avec Debootstrap et noyau de l’hyperviseur

Dans cette cinquième partie de la série sur KVM, nous allons commencer à creuser un peu car faire des machines à partir d’une ISO, c’est rigolo, mais ce n’est pas pratique. Question automatisation, on a vu mieux.

Il est tout a fait possible de l’automatiser avec la fonction de preseed. C’est un fichier qui simule ce que vous pourriez taper au clavier. C’est mieux, mais bon, ça reste pas terrible terrible à mon gout.

On va donc tenter de faire quelque chose qui va nous rapprocher de ce que Xen permet avec xen-create-image, en utilisant debootstrap.

Debootstrap, c’est un truc tout bête qui vous permet de préparer une Debian depuis une autre Debian.

Et avec cette façon de faire, on peut encore procéder de deux façons…

La première, qu’on va voir ici et qui est similaire aux machines Xen par défaut, où une VM va utiliser le noyau de l’hyperviseur pour booter.

 

I – Préparatifs

On va créer le LV en passant par virsh :

# virsh vol-create-as kvm-lvm debiandeboot 4G

On peut le voir dans :

# virsh vol-list kvm-lvm

 

Ensuite, on va simplement le formater :

# mkfs.ext4 /dev/vg0/debiandeboot

Puis on le monte :

# mount /dev/vg0/debiandeboot /mnt

 

II – Debootstrap

Il suffit de l’installer :

# apt install debootstrap

Et tout simplement :

# debootstrap stable /mnt/

Bien sur, on s’assure que le point de montage soit disponible.

Ensuite, on va juste changer le mdp root de cette nouvelle Debian en chrootant :

# chroot /mnt

Puis :

chroot# passwd root
chroot# exit

Avant de lancer la création de la machine, on va désactiver une fonction qui, sinon, va nous faire un boucle pendant 30 sec.

On édite le fichier /etc/initramfs-tools/conf.d/resume pour modifier :

# RESUME=xxxxxx
RESUME=none

On termine avec :

# update-initramfs -u

On pense à démonter :

# umount /mnt

 

III – Création de la VM

On lance la création de la machine :

virt-install --name debiandeboot
--vcpus 1
--cpu host
--ram 1024
--import
--disk vol=kvm-lvm/debiandeboot,bus=virtio
--network=none
--boot kernel=/vmlinuz,initrd=/initrd.img,kernel_args="root=/dev/vda console=ttyS0"
--graphics none
--console pty,target_type=serial
--os-variant debian10
  • import : permet de spécifier que l’OS est deja installé
  • disk : on spécifie le nom du volume et le nom de l’image
  • network : ici pas besoin de réseau, on veut juste une machine basique pour le test
  • boot : c’est la que la magie opère, on lui spécifie le noyau de l’hyperviseur. Attention dans la partie kernel_args, ne pas inverser les options, sinon, ça plante…

 

IV – Conclusion

Une fois la machine chargée, on peut se connecter dessus, mais, c’est tout.

Le FS est en read only (bah oui, pas de fstab), le hostname n’est pas configuré, le swap n’existe pas, pas de réseau…. il manque plein de choses, mais au moins, ça boot.

L’important ici était de vous montrer la technique.

Dans la partie suivante, nous commencerons à préparer le terrain pour créer des VMs « complètes », en préparant un template pour nos futures VMs.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *