X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=v3_config_guest.pl;h=04180a67d6091d6f869046bf7bfa86c49204f645;hb=afb92c93a4ab44461270987cd4da9844ea12fd3a;hp=abe7d49487a78a2d693f412598bb0e59c1c64d56;hpb=946b9684bf8fa50950f54d69b526c889743e3dae;p=palacios.git diff --git a/v3_config_guest.pl b/v3_config_guest.pl index abe7d49..04180a6 100755 --- a/v3_config_guest.pl +++ b/v3_config_guest.pl @@ -83,6 +83,7 @@ if ($config{numcores}>1) { } } +do_swapping(\%config, $pdir); print "We will give your guest the default performance tuning characteristics\n"; $config{perftune_block} .= <ide0\n"); #must have # @@ -208,6 +203,33 @@ do_network(\%config, $pdir, $dir, $name, "pci0", "southbridge"); # +# Sanity-check - is there something bootable? +# +# +if (!($config{havecd} && !($config{havehd}))) { + print "The guest's storage configuration does not have either a CD or an HD. \n"; + print "This means the guest BIOS will have nothing local to boot. \n"; + if (!($config{havenic})) { + print "The guest also does does not have a NIC, which means the BIOS cannot\n"; + print "do a network boot.\n"; + } else { + print "The guest does have a NIC, so a network boot is possible, if the\n"; + print "BIOS supports it.\n"; + } + print "If this is not your intent, you probably want to CTRL-C and try again.\n"; +} + +print "The BIOS boot sequence will be set to CD,HD. If you need to change this\n"; +print "later, edit the block within the NVRAM device.\n"; + +# +# NVRAM +# +# Note: do_storage *must* have placed an IDE named ide0 in order for this to work +# +do_device(\%config, $pdir, "V3_CONFIG_NVRAM", "NVRAM", "nvram", 1, undef, " ide0\n cd,hd\n"); #must have + +# # # Generic Catch-all Device # @@ -221,6 +243,7 @@ $target = PAL; print $target "\n\n"; print $target file_setup(\%config), "\n"; print $target memory_setup(\%config), "\n"; +print $target swapping_setup(\%config), "\n"; print $target paging_setup(\%config), "\n"; print $target memmap_setup(\%config), "\n"; print $target numa_setup(\%config), "\n"; @@ -238,7 +261,7 @@ print "\n\nYour guest is now ready in the directory $dir\n\n"; print "To run it, do:\n\n"; print " cd $dir\n"; print " v3_create -b $name.pal $name\n"; -print " v3_launch /dev/v3-vmN (N given by v3_create\n\n"; +print " v3_launch /dev/v3-vmN (N given by v3_create)\n\n"; print "Other useful tools:\n\n"; print " v3_console (CGA console)\n"; print " v3_stream (connect to stream, for example, serial port)\n\n"; @@ -382,6 +405,28 @@ sub get_numa_data() { return %numa; } + +sub do_swapping { + my ($cr, $pdir) = @_; + + my $canswap = is_palacios_core_feature_enabled($pdir,"V3_CONFIG_SWAPPING"); + my $mem = $cr->{mem}; + + if ($canswap) { + #Config for swapping + $cr->{swapping} = yn_question("Do you want to use swapping?", "n", "y", "n"); + + if ($cr->{swapping} eq "y") { + $cr->{swap_alloc} = quant_question("How much memory do you want to allocate [MB] ?", $mem/2); + print "We will use the default swapping strategy.\n"; + $cr->{swap_strat} = "default"; + print "What file do you want to swap to? [./swap.bin] "; + $cr->{swap_file} = get_user("./swap.bin"); + } + } + +} + sub do_device { my ($cr,$pdir,$feature, $class, $id, $hardfail, $optblob, $nestblob) =@_; @@ -429,7 +474,7 @@ sub do_consoles_and_ports { if (!($cancga || $canvga || $canserial || $canvirtioconsole)) { print "Hmm... No console mechanism is enabled in your Palacios build...\n"; print " This is probably not what you want...\n"; -} + } $didcga=0; if ($cancga) { @@ -495,6 +540,7 @@ sub do_consoles_and_ports { print "You have configured your guest without any obvious way of interacting with it....\n"; print " This is probably not what you want...\n"; } + } @@ -595,6 +641,10 @@ sub do_network { } $num++; } + + if ($num>0) { + $cr->{havenic}=1; + } } @@ -641,7 +691,9 @@ sub do_storage { do_storage_backend($cr, $pdir, $dir, $name, "virtioblk$i", "data$i", ""); } } -} + +} + sub do_storage_backend { @@ -717,9 +769,11 @@ sub do_storage_backend { if ($what eq "cd") { $attach.=" V3VEE CDROM\n". " CDROM\n".$frontendblock; + $cr->{havecd}=1; } else { $attach.=" V3VEE HD\n". " HD\n".$frontendblock; + $cr->{havehd}=1; } $attach.=" \n"; @@ -954,6 +1008,14 @@ sub extensions_setup { return $s; } +sub swapping_setup { + my $cr=shift; + if (defined($cr->{swapping}) && $cr->{swapping} eq "y") { + return " \n ".$cr->{swap_alloc}."\n ".$cr->{swap_file}."\n ".$cr->{swap_strat}."\n \n"; + } else { + return " \n"; + } +} sub telemetry_setup { my $cr=shift; return " ".$cr->{telemetry}."\n";