diff options
Diffstat (limited to 'qemu-run')
-rwxr-xr-x | qemu-run | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -3,6 +3,7 @@ use warnings; use strict; use XML::Parser; use Getopt::Std; +use POSIX; # args my %opts; @@ -169,11 +170,11 @@ close HELP; # build cmdline -- basic setup print "-- \n" if $debug; push @cmdline, $xml_elems{'emulator'}; -if (defined($xml_elems{'name'}) && $help =~ m/-name/) { +if (defined($xml_elems{'name'}) and $help =~ m/-name/) { push @cmdline, "-name"; push @cmdline, $xml_elems{'name'}; } -if (defined($xml_elems{'uuid'}) && $help =~ m/-uuid/) { +if (defined($xml_elems{'uuid'}) and $help =~ m/-uuid/) { push @cmdline, "-uuid"; push @cmdline, $xml_elems{'uuid'}; } @@ -197,6 +198,11 @@ if (defined($soundhw)) { push @cmdline, $soundhw; } +# build cmdline -- kvm +if (POSIX::access("/dev/kvm", &POSIX::W_OK) and $help =~ m/-enable-kvm/) { + push @cmdline, "-enable-kvm"; +} + # build cmdline -- disks foreach my $disk (@disks) { print "disk: " . join (", ", map { @@ -272,6 +278,7 @@ if (-S $monitor and !system("fuser", "-s", $monitor)) { # still running printf "VM %s still running, reconnecting\n", $name; } else { + unlink $monitor; $pid = fork(); die "fork: $!" unless defined($pid); if (0 == $pid) { @@ -281,6 +288,10 @@ if (-S $monitor and !system("fuser", "-s", $monitor)) { exec(@cmdline); exit(1); } + foreach my $i (0 ... 100) { + last if -S $monitor; + sleep(0.1); + } } # run qemu-gtk @@ -288,10 +299,6 @@ if (-S $monitor and !system("fuser", "-s", $monitor)) { push @cmdline, "qemu-gtk"; push @cmdline, "-m" if $showmon; push @cmdline, "unix:" . $monitor . ",server,nowait"; -foreach my $i (0 ... 100) { - last if -S $monitor; - sleep(0.1); -} print join(", ", map { "\"$_\"" } @cmdline) . "\n" if $debug; exec(@cmdline); |