diff options
-rw-r--r-- | GNUmakefile | 5 | ||||
-rwxr-xr-x | qemu-run | 36 |
2 files changed, 24 insertions, 17 deletions
diff --git a/GNUmakefile b/GNUmakefile index c79fb2f..7fcb5e2 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -45,8 +45,11 @@ build: endif install: build + $(INSTALL_DIR) $(bindir) $(DESTDIR)/etc $(INSTALL_BINARY) $(TARGETS) $(bindir) - $(INSTALL_DATA) $(DESKTOP) $(appdir) + $(INSTALL_SCRIPT) qemu-run $(bindir) + $(INSTALL_SCRIPT) qemu-virbr0-if* $(DESTDIR)/etc +# $(INSTALL_DATA) $(DESKTOP) $(appdir) clean: -rm -f *.o *~ $(depfiles) @@ -15,12 +15,13 @@ my $showmon = defined($opts{'m'}) ? 1 : 0; my $tapup = "/etc/qemu-virbr0-ifup"; my $tapdown = "/etc/qemu-virbr0-ifdown"; my $mondir = $ENV{HOME} . "/.qemu-gtk"; -my $monitor = $mondir . "/" . $name . ",server,nowait"; +my $monitor = $mondir . "/" . $name; # vars my ($xml, $help, $parser, @cmdline, $pid); my $level = 0; my $indent = 3; +my $skip_qemu = 0; my @xml_path; my $xml_string; @@ -246,7 +247,7 @@ foreach my $nic (@nics) { # build cmdline -- hardwired stuff push @cmdline, "-monitor"; -push @cmdline, "unix:$monitor"; +push @cmdline, "unix:" . $monitor . ",server,nowait"; push @cmdline, "-serial"; push @cmdline, "unix:,server,nowait"; if ($graphics) { @@ -254,31 +255,34 @@ if ($graphics) { push @cmdline, "127.0.0.1:0,to=128,password"; } -print "-- \n" if $debug; - # prepare +print "-- \n" if $debug; mkdir $mondir unless -d $mondir; -unlink($monitor); # run qemu emulator -$pid = fork(); -die "fork: $!" unless defined($pid); -if (0 == $pid) { - # child - print join(", ", map { "\"$_\"" } @cmdline) . "\n" - if $debug; - exec(@cmdline); - exit(1); +if (-S $monitor and !system("fuser", "-s", $monitor)) { + # still running + printf "VM %s still running, reconnecting\n", $name; +} else { + $pid = fork(); + die "fork: $!" unless defined($pid); + if (0 == $pid) { + # child + print join(", ", map { "\"$_\"" } @cmdline) . "\n" + if $debug; + exec(@cmdline); + exit(1); + } } # run qemu-gtk @cmdline = (); push @cmdline, "qemu-gtk"; push @cmdline, "-m" if $showmon; -push @cmdline, "unix:$monitor"; -foreach my $i (0 ... 256) { +push @cmdline, "unix:" . $monitor . ",server,nowait"; +foreach my $i (0 ... 100) { last if -S $monitor; - sleep(0.03); + sleep(0.1); } print join(", ", map { "\"$_\"" } @cmdline) . "\n" if $debug; |