Sunday, April 4, 2010

The ultimate way of starting qemu under Windows

Being on vacation I gave a shot on building and launching qemu under Windows. Of course I was stumbled on getting the message

chardev: backend "stdio" not found
qemu: could not open serial device 'mon:stdio': No such file or directory

when running with  -nographic option. The option is necessary for launching qemu with SPARCstation-5's OBP, as it doesn't support qemu's TCX graphic card.

I googled, but found only that many people have stumbled over this problem before with no luck of solving it. And then I was so desperate that I read the qemu manual page. And you know what? The solution is described there! Instead of using console for standard I/O, it's possible to redirect it to a port, and telnet there:

sparc-softmmu/qemu-system-sparc -nographic  -serial mon:telnet::4444,server,nowait -bios ../sparc/ss5.bin -hdd ../sparc/solaris-disk

And then just telnet to localhost:4444.
Now I have Solaris/sparc running on my Windows laptop. ;-)

Moreover I think the option -serial mon:telnet::4444,server,nowait is pretty useful for Unix hosts too. When stated with it you have ability to get into qemu console by pressing Ctrl-A c,  and hence eject/insert virtual CD-ROMs, plugging unplugging disks and so on.

Update:  the above method works if qemu is  compiled under cygwin. With plain msys/MinGW, it has to be started with
-monitor file:bob.txt -bios ..\ss5.bin -m 256 -M SS-5 -serial mon:telnet:,server,nowait
options. Thanks, Neozeed.


Jason Stevens said...

lol how on earth did everyone (me included) miss that?!

I'll have to break out some solaris CD's for sure!!!!!

atar said...

I've nearly missed it myself. Had to laugh at least 15 minutes long after finding the solution.

It would be cool to test Solaris 2.0-2.3, as 2.4-2.6 are known to work, and 5.7-9 are known not to work (I think due to a bug in all this Solaris versions, will publish a patch soon).

Solaris 1.x starts, but is unusable after switching the serial port into some weird mode. It looks like it is a bug too. Solaris 1.x installer doesn't support CTS/RTS. I think it was fixed afterwards, but not for the installer.

Jason Stevens said...

C:\msys\1.0\src\qemu-0.12.3\sparc-softmmu>qemu-system-sparc -nographic -serial
mon:telnet::4444,server,nowait -bios ../ss5.bin

C:\msys\1.0\src\qemu-0.12.3\sparc-softmmu>type stderr.txt
chardev: backend "stdio" not found

Sigh. I'm going to have to do some more digging.

Jason Stevens said...

qemu-system-sparc.exe -nographic -cdro
m ..\sol-8-u7-install-sparc.iso -boot d -monitor file:bob.txt -bios ..\ss5.bin -
m 256 -M SS-5 -serial mon:telnet:,server,nowait

And.. now I get the console!!!!!!!

atar said...

Hmm. Strange. I used mingw which comes with cygwin to compile it, you probably just msys. But it was compiled with the nocygwin option in my case. There should have been no difference.

In your case the monitor is redirected twice. Does the switching between qemu and guest consoles work with Ctrl-A c ?

Jason Stevens said...

Yeah I get the console thing hitting ctrl-a-c ... I built with MinGW, no cygwin...

Oh well the war was fun, my SunOS CD won't boot, and I only have nextstep/solaris 8... lol but I can confirm the git version works, and 12.2.3 had issues booting anything constantly throwing short reads or "data access error"...

I got nextstep to go thru the bootloader, but once it's loaded I surmise it's expecting a graphical console, like it did on the m68k hardware...

atar said...

Yeah, played with the NextSTEP too. It's useless without the graphics adapter.

For political reasons they don't want to include one very small patch in 12.x: I submitted it when the last release candidate was already out.

So till 0.13 one have to use the git version.

hadimotamedi said...

Sorry. No error message is being displayed when pressing the 'ENTER' button.It just returns back to the command prompt.

hadimotamedi said...

Ok. Please find it below:
C:\Documents and Settings\user\qemu_with_mgrclnt-0.12.3\qemu-new>qemu-system-sparc -L . -nographic -bios ss5.bin -cdrom Solaris8.iso -serial mon:telnet:,server,nowait

C:\Documents and Settings\user\qemu_with_mgrclnt-0.12.3\qemu-new>

atar said...

Please read the how-to. The version 0.12.3 is not supported. You'll have to compile the git version yourself.

Or wait till 0.13 is out.

hadimotamedi said...

Sorry. I cannot understand the meaning of the following paragraph:
'git clone git://
cd qemu
./configure --target-list=sparc-softmmu
Can you please do me favor and clarify it a little bit more?
Thank you in advance

atar said...

Those are the steps which describe building qemu from the git repository for the developers.

Please refer to git, qemu and your compiler manuals. Or just wait for 0.13 packages.

hadimotamedi said...

Thank you very much. I appreciate your reply. Do you see any time frame that the 0.13 packages outcome can be anticipated? Can you please do me favor and give me the link to periodically check if the 0.13 package is available?

atar said...

Can't tell you anything which is not written on the project page:

There used to be a release schedule, but recently it was removed:

hadimotamedi said...

Thank you very much for your kind continuous technical support. According to you, version 0.12.3 is not supported . Can you please let me know if this version can support older Solaris releases? Currently I am using Solaris 8 but I can fall back to older releases if version 0.12.3 can support them.
Thank you again

hadimotamedi said...

Sorry. Can we make use of '-hda file' option to introduce an saved image of an real Solaris 8 Sparc server hard drive as our virtual Sparc IDE hard drive? Do you think it can works here?
Thank you

atar said...

No, it won't. And qemu 0.12 do not support booting any solaris/sparc version.

louis said...

Wow Neozeed, you solved my problem to find how to get console with qemu mingw version. Thanks a lot.

atar said...

Implying his variant is working for you and mine doesn't?

sudhir said...

I have install GNS3, FreeBSD Install but i cam't open the console in Junos-olive installation.

atar said...

What is the command line and what error message do you get?

msilver said...

I'm trying to run qemu-system-ppc64.exe on Windows 2016 and I got the AIX 7.2 Diagnostics CD booting up using the instructions from the link below and the command below:

1- Downloaded and installed qemu 4.2 for Windows win64
2- Downloaded the AIX 7.2 Diagnostics CD (.iso) and and copied them to Windows VM
3- Downloaded Python4 Windows, run the patch described above to create the modcd.iso
4- Ran the command qemu-img.exe create -f qcow2 aix71diag.img 6G
5- Ran
qemu-system-ppc64.exe -cpu POWER8 -machine pseries -m 2G -serial mon:stdio -hda aix7diag.qcow2 -cdrom c:\cd\modcd.iso -d guest_errors -prom-env "input-device=/vdevice/vty@71000000" -prom-env "output-device=/vdevice/vty@71000000" -prom-env "boot-command=dev / 0 0 s\" ibm,aix-diagnostics\" property boot cdrom:\ppc\chrp\bootfile.exe -s verbose" -vga none -nographic

It boots up quickly and after 2 min stops on the AIX KBD (Kernel Debugger) not the OS prompt as desired.

I went ahead and got the AIX 7.1 TL5 .ISO CD but I can't figure it out the correct qemu command to boot with it and install it on the qemu emulated VM, activate an IP and be able to SSH to it to work on it on the command line, I don't need graphics.
I'm not a developer, know nothing about github and I'm just trying to get a simple AIX 7.1 command prompt to do some investigation, but I dont have the IBM POWER hardware.
Any help from anyone is appreciated. I can't believe no one done it before.
Please let me know if you know how to do it or found it documented somewhere.
Thanks in advance

Thanks in advance