Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Restauration du MBR + table des partitions qui ne fonctionne pas sous KVM

5 réponses
Avatar
Gmaurice
Bonjour tout le monde,

Je suis nouveau sur la liste parce que je cherche une réponse un peu
spécifique et je pense qu'ici je pourrais la trouver.
En gros, je veux pouvoir faire du provisioning de guest KVM de manière
automatique et je teste une méthode et je ne vois pas pourquoi ça bloque.

Dans un premier temps, je crée une VM (en vue d'établir mon template),
je l'installe, elle boote, elle est utilisable.
Elle est sur un disque qui ne contient qu'une partition ( / en
l'occurence).
Les disques de mes vm sont dans des logical volumes.

Donc, VM éteinte, j'en extraie le MBR et la table de partitions avec un :
dd if=/dev/mapper/vm-1-disk of=/root/tmpl-mbr_part bs=512 count=1

Je créé une archive du "/" en montant la partition de la VM au niveau de
l'hôte KVM (avec kpartx + mount).

Pour la création d'une nouvelle VM à partir de mon template, je fais :
dd if=/root/tmpl-mbr_part of=/dev/mapper/vm-2-disk bs=512 count=1
## je précise que le disque de la VM 2 et créé de la même manière et
avec les mêmes caractéristiques que la VM 1.

Je vérifie que la table de partition est bonne, et que la première
partition est bien bootable (via fdisk), ok.

Ensuite, je formate en ext3 et monte la partition "/" au niveau de
l'hôte KVM et j'y extraie les fichiers de l'OS.
Sachant que grub identifie les partitions avec leur UUID, sur mon FS "/"
je réaffecte l'UUID utilisé lors du template via tune2fs.
Je démonte le tout, supprime les mappings fait par kpartx et à cette
étape, pour moi, j'ai :
- le mbr
- la table de partitions
- ma partition système (avec le flag boot)
- les fichiers système

Je lance la VM, ça semble booter, mais rien ne se passe, il ne me dit
pas que le périphérique n'est pas bootable.

Pour que mon install fonctionne finalement, je suis obligé d'utiliser
une distrib live, je monte un chroot sur le disque de la VM et je fais
un grub-setup "(hd0)". Et là, Ô miracle, ça fonctionne bien au
redémarrage de la VM.


La question est : que fait grub-setup de plus que je ne fais pas ?


Précision : les MBR et table de partitions avant et après le grub-setup
sont identiques. (via hexdump du dd et des diff sur les deux versions)

Voilà, il n'y avait peut-être pas besoin d'un long message, mais en tout
cas j'ai fais en sorte que vous ayez tout.
Merci par avance pour vos avis ou aide.
Germain

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/4E00DD50.1090200@linkfluence.net

5 réponses

Avatar
daniel huhardeaux
Le 21/06/2011 20:05, Gmaurice a écrit :
Bonjour tout le monde,



Bonsoir

[...]
Je lance la VM, ça semble booter, mais rien ne se passe, il ne me dit
pas que le périphérique n'est pas bootable.

Pour que mon install fonctionne finalement, je suis obligé d'utiliser
une distrib live, je monte un chroot sur le disque de la VM et je fais
un grub-setup "(hd0)". Et là, Ô miracle, ça fonctionne bien au
redémarrage de la VM.


La question est : que fait grub-setup de plus que je ne fais pas ?


[...]

Je ne sais répondre à ta question mais je ne comprends pas pourquoi
sauvegarder et restaurer le MBR puisque tu fais un dd de /

Comment je procède (aussi LVM mais xfs au lieu de ext3) pour une Lenny:

- bzip de ma machine virtuelle:
#dd if=/dev/vg0/LennyTemplate conv=sync,noerror bsdk | bzip2 -c -9
/var/backups/LennyTemplate.bz2



- creation d'un lvm quelquepart puis
# bunzip2 -c /var/backups/LennyTemplate.bz2 | dd of=/dev/vg0/MyVMName
bsdk

- adaptation pour kvm de/etc/libvirt/qemu/NouvelleVM.xml en particulier
- UUID of VM
- RAM size
- disk source dev
- Mac address
- VNC port

Démarrage de la VM et tout est OK

On peut même agrandir la VM si nécessaire

Aucune de mes copies de VM n'a posée de problème de démarrage ou autre.

--
Daniel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Germain
Merci Daniel pour ta réponse.

Dans la méthode que je viens de présenter, je ne fais pas de dd de
l'intégralité du disque mais juste sur la table de partition et le MBR.
Les paramètres bsQ2 et count=1 sont là pour ça.

Justement, j'ai oublié de préciser que j'ai tenté la méthode brutale du
dd sur l'intégralité du disque, ça passe mais c'est long.
Après, je n'ai pas mis d'option au dd et je crois que ton bsdk me
permettrait de gagner du temps.
Verdict : Je viens de faire le test, sur 11G de taille du disque, 900
secondes avec un dd sans options et 150 secondes avec bsdk.
J'ai donc moyen de simplifier par ce biais mon provisioning.

Bon, si quelqu'un a une explication sur le pourquoi du blocage je suis
preneur.
Bonne nuit !

Le 21/06/11 22:29, daniel huhardeaux a écrit :
Le 21/06/2011 20:05, Gmaurice a écrit :
Bonjour tout le monde,



Bonsoir

[...]
Je lance la VM, ça semble booter, mais rien ne se passe, il ne me dit
pas que le périphérique n'est pas bootable.

Pour que mon install fonctionne finalement, je suis obligé d'utiliser
une distrib live, je monte un chroot sur le disque de la VM et je
fais un grub-setup "(hd0)". Et là, Ô miracle, ça fonctionne bien au
redémarrage de la VM.


La question est : que fait grub-setup de plus que je ne fais pas ?


[...]

Je ne sais répondre à ta question mais je ne comprends pas pourquoi
sauvegarder et restaurer le MBR puisque tu fais un dd de /

Comment je procède (aussi LVM mais xfs au lieu de ext3) pour une Lenny:

- bzip de ma machine virtuelle:
#dd if=/dev/vg0/LennyTemplate conv=sync,noerror bsdk | bzip2 -c -9
>/var/backups/LennyTemplate.bz2

- creation d'un lvm quelquepart puis
# bunzip2 -c /var/backups/LennyTemplate.bz2 | dd of=/dev/vg0/MyVMName
bsdk

- adaptation pour kvm de/etc/libvirt/qemu/NouvelleVM.xml en particulier
- UUID of VM
- RAM size
- disk source dev
- Mac address
- VNC port

Démarrage de la VM et tout est OK

On peut même agrandir la VM si nécessaire

Aucune de mes copies de VM n'a posée de problème de démarrage ou autre.




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Sylvain L. Sauvage
Le mercredi 22 juin 2011 à 01:27:01, Germain a écrit :
[…]



Si j’ai bien compris : un dd total fonctionne, un grub-setup
fonctionne, un dd de 512 octets ne fonctionne pas.

Bon, si quelqu'un a une explication sur le pourquoi du
blocage je suis preneur.



512 octets ne sont peut-être pas suffisants…

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
daniel huhardeaux
Le 22/06/2011 01:27, Germain a écrit :
Merci Daniel pour ta réponse.

Dans la méthode que je viens de présenter, je ne fais pas de dd de
l'intégralité du disque mais juste sur la table de partition et le
MBR. Les paramètres bsQ2 et count=1 sont là pour ça.

Justement, j'ai oublié de préciser que j'ai tenté la méthode brutale
du dd sur l'intégralité du disque, ça passe mais c'est long.
Après, je n'ai pas mis d'option au dd et je crois que ton bsdk me
permettrait de gagner du temps.
Verdict : Je viens de faire le test, sur 11G de taille du disque, 900
secondes avec un dd sans options et 150 secondes avec bsdk.
J'ai donc moyen de simplifier par ce biais mon provisioning.



Ma machine virtuelle originelle est créée avec une taille de 2Go Cela
est parfait et rapide sachant que les machines de destinations vont
pouvoir être retaillées à une taille plus importante

Explication: le LV de ma nouvelle VM est taillé 10Go par ex. Une fois
la VM up *dans la VM* je supprime son disk / (j'ai toujours /boot à
part) par fdisk puis recréé à partir du *même* cylindre de départ en
prenant tout l'espace disponible, j'écris et redémarre la VM. Après
redémarrage, un simple xfs_growfs / et ma nouvelle VM fait 10Go :-)

[...]

--
Daniel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Francois Scala
Bonjour,

Selon la méthode d'installation de grub, cele peut être :

1) Le fichier /boot/grub/core.img qui est copié dans les premier
secteurs entre le mbr et le début de la première partition.

dd if=/dev/mapper/vm-1-disk of=/root/tmpl-mbr_part bsQ2 countb

2) Le fichier /boot/grub/core.img est lu directement depuis le
filesystem, mais sont ofset est ecrit en dur dans le boot sector, donc
quand tu recréer la partition, le fichier n'est plus a la place
attendue. Une solution est alors de faire une partition /boot et de
l'inclure dans l'image.



On 21/06/2011 20:05, Gmaurice wrote:
Bonjour tout le monde,

Je suis nouveau sur la liste parce que je cherche une réponse un peu
spécifique et je pense qu'ici je pourrais la trouver.
En gros, je veux pouvoir faire du provisioning de guest KVM de manière
automatique et je teste une méthode et je ne vois pas pourquoi ça bloque.

Dans un premier temps, je crée une VM (en vue d'établir mon template),
je l'installe, elle boote, elle est utilisable.
Elle est sur un disque qui ne contient qu'une partition ( / en
l'occurence).
Les disques de mes vm sont dans des logical volumes.

Donc, VM éteinte, j'en extraie le MBR et la table de partitions avec un :
dd if=/dev/mapper/vm-1-disk of=/root/tmpl-mbr_part bsQ2 count=1

Je créé une archive du "/" en montant la partition de la VM au niveau
de l'hôte KVM (avec kpartx + mount).

Pour la création d'une nouvelle VM à partir de mon template, je fais :
dd if=/root/tmpl-mbr_part of=/dev/mapper/vm-2-disk bsQ2 count=1
## je précise que le disque de la VM 2 et créé de la même manière et
avec les mêmes caractéristiques que la VM 1.

Je vérifie que la table de partition est bonne, et que la première
partition est bien bootable (via fdisk), ok.

Ensuite, je formate en ext3 et monte la partition "/" au niveau de
l'hôte KVM et j'y extraie les fichiers de l'OS.
Sachant que grub identifie les partitions avec leur UUID, sur mon FS
"/" je réaffecte l'UUID utilisé lors du template via tune2fs.
Je démonte le tout, supprime les mappings fait par kpartx et à cette
étape, pour moi, j'ai :
- le mbr
- la table de partitions
- ma partition système (avec le flag boot)
- les fichiers système

Je lance la VM, ça semble booter, mais rien ne se passe, il ne me dit
pas que le périphérique n'est pas bootable.

Pour que mon install fonctionne finalement, je suis obligé d'utiliser
une distrib live, je monte un chroot sur le disque de la VM et je fais
un grub-setup "(hd0)". Et là, Ô miracle, ça fonctionne bien au
redémarrage de la VM.


La question est : que fait grub-setup de plus que je ne fais pas ?


Précision : les MBR et table de partitions avant et après le
grub-setup sont identiques. (via hexdump du dd et des diff sur les
deux versions)

Voilà, il n'y avait peut-être pas besoin d'un long message, mais en
tout cas j'ai fais en sorte que vous ayez tout.
Merci par avance pour vos avis ou aide.
Germain




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/