qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: Starting QEMU by PHP/Apache


From: Bolle
Subject: [Qemu-devel] Re: Starting QEMU by PHP/Apache
Date: Wed, 14 Oct 2009 07:12:56 +0200

address@hidden
Re: Starting QEMU by PHP/Apache

Hello all

First, I forgot to say, that I use the QEMU stable version 11.0 on a Gentoo box. I did some more testings. The QEMU instance is starting and sometimes the OS starts to load, but then QEMU stucks and consumes 100% CPU.

I checked the startup it with strace. The start of QEMU itself produces the same output in strace, regardless if started by the PHP CLI or by mod_php from Apache.

I then attached strace to the QEMU process, and there is a big difference.

When starting QEMU with the PHP script from the CLI (as the same user as the web server), it works and I get something like that:
...
select(12, [6 11], [], [], {4, 993369}) = ? ERESTARTNOHAND (To be restarted)
--- SIGALRM (Alarm clock) @ 0 (0) ---
write(7, "\0"..., 1)                    = 1
sigreturn()                             = ? (mask now [])
clock_gettime(CLOCK_MONOTONIC, {2818001, 146485529}) = 0
clock_gettime(CLOCK_MONOTONIC, {2818001, 146548886}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 0}}) = 0 timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {2818001, 146758750}) = 0
clock_gettime(CLOCK_MONOTONIC, {2818001, 146819115}) = 0
clock_gettime(CLOCK_MONOTONIC, {2818001, 146879549}) = 0
clock_gettime(CLOCK_MONOTONIC, {2818001, 146938839}) = 0
--- SIGALRM (Alarm clock) @ 0 (0) ---
write(7, "\0"..., 1)                    = 1
sigreturn()                             = ? (mask now [])
...

If QEMU has been started by the web server with the same script and user, I get:
...
select(11, [5 10], [], [], {3, 767239}) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {2817617, 818297714}) = 0
clock_gettime(CLOCK_MONOTONIC, {2817617, 818382772}) = 0
clock_gettime(CLOCK_MONOTONIC, {2817617, 818444894}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 0}}) = 0 timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {2817617, 818698197}) = 0
clock_gettime(CLOCK_MONOTONIC, {2817617, 818759263}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 67453}}) = 0
clock_gettime(CLOCK_MONOTONIC, {2817617, 818894002}) = 0
clock_gettime(CLOCK_MONOTONIC, {2817617, 818954673}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 0}}) = 0 timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
...

There are no SIGALRM executed. What can be the reason for that ?

Andreas



On Tue, 13 Oct 2009 13:26:25 +0200
 "Bolle" <address@hidden> wrote:
Hello

Did anybody had success to start a QEMU instance by a PHP script under the Apache web server ?

I allow the Apache user with the help of sudoers to start the QEMU binary as root. I've hacked the "qemu-socket.c" to set the access mode to allow communication for the monitor socket (only add "chmod(path, <needed file mode bits>)").

I'm able to successfully start the QEMU instance from a PHP CLI script as the user under which Apache is running like "sudo -u <Apache user> sudo <qemu + args>". But when I run the same script by the web server, QEMU starts up to the BIOS, telling me to press F12 for a start device. The "info cpus" tells "CPU #0: pc=0x000f08b5 (halted)".

The full command executed by PHP is:
/usr/bin/sudo /usr/bin/qemu -L /usr/share/qemu -M isapc -m 16 -hda </path/and/name/to/image> -net none -serial none -parallel none -vnc :0,password -monitor unix:</path/and/name/to/socket>,server,nowait -name "QEMU TEST" -pidfile </path/and/name/to/pid> -chroot </path/to/image> -runas <service user> > /dev/null &

Any idea about where to look for more information ?

Andreas





reply via email to

[Prev in Thread] Current Thread [Next in Thread]