Im essayant de déboguer la séquence de démarrage d'un noyau linux avec qemu, la commande que j'exécute est:
qemu -serial stdio -kernel <path to kernel> -hda <path to rootfs> -append "root=/dev/sda terminal = ttyS0"
Au démarrage, tous les messages du noyau sont imprimés dans la fenêtre QEMU. Ce n'est que lorsque le démarrage est terminé que je récupère mon invite sur le terminal dans lequel j'ai exécuté QEMU.
Maintenant, je peux commencer à utiliser le terminal du noyau que j'utilise et voir la sortie dans le terminal et non dans la fenêtre QEMU.
Comment puis-je obtenir tous les messages, y compris les messages de démarrage, sur mon terminal et non sur la fenêtre QEMU (car je ne peux pas faire défiler vers le haut dans cette fenêtre ..)?
-serial stdio
paramètre-nographic
paramètreterminal = ttyS0
à console=ttyS0
. Cela devrait faire l'affaire.qemu -nographic -kernel ./bzImage -hda ./image.hda -append root=/dev/sda console=ttyS0
Vous voudrez peut-être vérifier le script que j'utilise pour le développement du noyau: https://github.com/arapov/wrap-qemukvm (ce n'est pas très "production", mais vous pouvez trouver des _ qemu
cli
paramètres ici)
référez ceci Rediriger la console Qemu vers un fichier ou le terminal hôte? pour obtenir le journal à la fois sur qemu et sur votre terminal .use "console=ttyAMA0,115200 console=tty highres=off console=ttyS0"
La redirection de la sortie Qemu vers le terminal peut provoquer un problème (personnellement, je ne l'aime pas). Vous pouvez utiliser des options telles que -noframe
(cela créera une nouvelle fenêtre mais aucun cadre de fenêtre) ou -curses
pour faire l'expérience de la sortie qemu sur le terminal.