Comment utiliser qemu pour exécuter un non-gui OS sur le terminal?
je veux exécuter quelques programmes sur L'ordinateur haute Performance (avec processeur 8-core) dans mon département. Maintenant j'utilise cette machine avec SSH en utilisant le terminal. La machine est équipée de Red Hat linux. Mais mes programmes doivent fonctionner sur Solaris. J'utilise Nexenta Solaris pour x86.
peut qemu être utilisé pour exécuter Nexenta Solaris sur cette machine à travers le terminal. Je dois convaincre l'administrateur qu'il peut, sinon il n'installera pas qemu sur cette machine et donc me permettre d'utiliser Solaris à travers une machine virtuelle. Notez également que je n'utilise pas GUI avec le Nexenta Solaris, juste la ligne de commande. Dans ma machine, J'utilise VMware pour l'exécuter.
3 réponses
vous pouvez compiler qemu pour vous - même et l'installer dans votre répertoire personnel. Il n'y aura pas d'accélérateur qemu en mode noyau, mais le qemu fonctionnera et la vitesse sera assez élevée.
Qemu a deux options pour la non-gui début: http://wiki.qemu.org/download/qemu-doc.html
options D'affichage:
-nographic
- Normalement, QEMU utilise SDL pour afficher la sortie VGA. Avec cette option, vous pouvez complètement désactiver sortie graphique de sorte que QEMU est une application en ligne de commande simple. Le port série émulé est redirigé sur la console. Par conséquent, vous pouvez toujours utiliser QEMU pour déboguer un noyau Linux avec une console série.
-curses
- Normalement, QEMU utilise SDL pour afficher la sortie VGA. Avec cette option, QEMU peut afficher la sortie VGA en mode texte en utilisant une interface curses/ncurses. Rien n'est affiché en mode graphique.
il peut Aussi envoyer sortie graphique vers une autre machine via le protocole VNC (-vnc
option)
-append 'console=ttyS0'
cette option était également nécessaire pour le noyau Linux be d'ailleurs -nographic
mentionné par osgx comme suit:
qemu-system-x86_64 -append 'console=ttyS0' \
-initrd rootfs.cpio.gz \
-kernel bzImage \
-nographic \
-serial mon:stdio \
Maintenant, vous pouvez effectuer les opérations suivantes:
- Ctrl + X: sortie de qemu, voir: https://superuser.com/questions/1087859/how-to-quit-the-qemu-monitor-when-not-using-a-gui
- Ctrl + C: passe à l'invité
console=ttyS0
indique au noyau d'utiliser un numéro de série port au lieu de l'affichage. Le port série envoie des caractères entre hôte et invité, au lieu de pixels sur un écran, et QEMU peut ensuite afficher ces caractères sur le terminal.
-serial mon:stdio
est optionnel dans cette commande minimale, mais c'est généralement une bonne idée d'avoir autour. Par exemple, il améliore le comportement si vous voulez aussi ajouter un handy -monitor telnet
plus tard:
- comment exécuter qemu avec-nographic et-monitor mais toujours pouvoir envoyer Ctrl+C à l'invité et quitter avec Ctrl+A X?
- https://unix.stackexchange.com/questions/167165/how-to-pass-ctrl-c-to-the-guest-when-running-qemu-with-nographic
cela peut être facilement testé avec Buildroot qemu_x86_64_defconfig
. J'ai créé il s'agit d'une configuration hautement autonome et automatisée qui vous permet de tester facilement
testé sur Ubuntu 18.04, QEMU 2.11.1.
j'ai lutté pendant un moment et enfin trouvé comment le faire fonctionner pour moi:
vous devez avoir SGABIOS installé. Il est intéressant de noter que ce BIOS n'est pas inclus dans le paquet debian qemu, vous devez donc l'installer (en tant que super-utilisateur):
apt install sgabios
puis quand vous lancez qemu utilisez l'option-device pour dire à la machine virturale d'utiliser la sortie sga
qemu-system-i386 -nographic -device sga discimage.bin
Voila! fonctionne parfaitement sur ssh avec le moniteur et la sortie de texte envoyé par stdio. Vous pouvez accéder au moniteur qemu avec C-A C.
cheers, ben