Après avoir effectué une migration physique-vers-virtuel (P2M) d’un serveur Debian 6 (Squeeze) dans un environnement de virtualisation KVM sous Linux, je me suis vu confronté au bug unaligned pointer suivant lorsque la machine tentait de booter.
1 2 3 |
Loading Linux 2.6.32-5-amd ... unaligned pointer 0x91fc002 Aborted. Press any key to exit. |
Choix croisé du module vidéo et du bus disque
On peut trouver sur internet sans difficulté que c’est un problème de module vidéo, mais je ne suis pas arrivé à ce constat. Pour moi c’est un bug croisé entre le module vidéo choixi, et le bus de disque dur.
En effet pour ma part, la machine virtuelle bootait sans difficulté avec le bus disque « SATA » mais le message d’erreur ci-dessus se déclenchait avec « virtio ». Le pilote graphique était fixé à « QXL ».
En basculant au pilote vidéo « VGA » j’ai pu conserver virtio sur les disques durs sans problème. C’est le module vidéo le plus simple qui soit disponible, et donc celui à privilégier pour limiter les incompatibilités. A l’inverse, QXL et VMVGA sont normalement plus poussés au niveau des performances.
Vidéo \ HDD | SATA | virtio |
---|---|---|
QXL | ||
VGA | ||
Cirrus | ? | ? |
VMVGA | ? |
Le tableau ci-dessus présente les cas de figure où le bug est rencontré. Je n’ai personnellement testé que les modules vidéo QXL et VGA, les autres informations sont issues de pages web sur la question, elles ne sont pas vérifiées d’où le point d’interrogation.
- http://blog.obnox.de/running-debian-squeeze-as-libvirtkvm-guest-on-ubuntu
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652593
Instructions supplémentaires pour utiliser virtio
Les machines virtuelles sous Linux n’ont généralement pas de difficulté à employer le bus virtio pour accélérer les IO disque et réseau. Le wiki Debian spécifie tout de même des précautions à observer pour être certain que tout se passe comme prévu.
Pour que le noyau ait tous les modules requis dès le démarrage, directement dans le initramfs, il est recommandé d’ajouter les modules noyau virtio_pci et virtio_blk dans /etc/initramfs-tools/modules puis d’appliquer les changements avec la commande update-initramfs -u .