2016-09-06 1 views
0

Je dois exécuter un morceau de code dans VMX-non mode racine, en utilisant API KVM. Cela peut être facilement fait en utilisant KVM API à partir d'un programme d'espace utilisateur. Mais, je dois le faire à partir de l'espace du noyau lui-même. Envoyer des données requises à l'espace utilisateur et exécuter un programme d'espace utilisateur n'est pas une option. aprèsComment utiliser l'API KVM (machine virtuelle de base du noyau) à partir de l'espace noyau?

This mentionne un moyen d'émettre des appels ioctl de l'espace du noyau, et depuis l'API KVM utilise ioctl appelle à interagir avec le module noyau Linux KVM, il semble une approche plausible. Cependant, je ne pouvais pas comprendre l'approche, et je ne suis pas sûr si cela fonctionnera sans erreur.

Est-ce que KVM expose une API qui peut être exécutée à partir de l'espace noyau lui-même? Si non, comment puis-je faire un programme d'espace utilisateur qui reçoit les données requises de l'espace noyau (beaucoup de structures de données), puis fait la même chose?

Répondre

0

Qemu est déjà un programme d'espace utilisateur qui interagit avec KVM via ioctls. Tout ce dont vous avez besoin est pris en charge par Qemu.

Vous pouvez simplement étendre Qemu pour implémenter facilement votre application KVM en tant que commande Qemu. Jetez un coup d'œil au fichier hmp-commands.hx dans le répertoire racine de Qemu pour voir des exemples.