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

Re: [Xen-devel] [PATCH OSSTEST v2 12/15] distros: support PV guest install from Debian netinst media.



Ian Campbell writes ("[PATCH OSSTEST v2 12/15] distros: support PV guest 
install from Debian netinst media."):
> The netinst media are iso images containing a base Debian install and some
> (image size dependent) additional tasks.
> 
> On x86 the "multiarch" iso flavour contains a Xen capable kernel for both i386
> and amd64 so use that.
> 
> This adds support for two classes of ISO, the CD sized ones which are built
> nightly and the DVD sized ones which are built weekly.
> 
> The images are downloaded using jigdo which sources the majority of the data
> from a local Debian mirror, for this reason I have not worried about the fact
> that the i386 and amd64 tests are downloading the same thing (adding a 
> specific
> download job would require finding up to 4GB of scratch space for each 
> flight).
> 
> The ISOs booted using pygrub which can extract the kernel and initrd from a 
> ISO
> image. The resulting guests are also booted with pygrub since the pv-grub-menu
> package is not available on the ISO images and we have pvgrub coverage from 
> the
> netboot tests.
> 
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> ---
>  Osstest/Debian.pm    |  7 +++++--
>  make-distros-flight  | 22 ++++++++++++++++++++
>  ts-debian-di-install | 57 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 84 insertions(+), 2 deletions(-)
> 
> diff --git a/Osstest/Debian.pm b/Osstest/Debian.pm
> index ad478ab..b149e8d 100644
> --- a/Osstest/Debian.pm
> +++ b/Osstest/Debian.pm
> @@ -433,8 +433,6 @@ sub preseed_base ($$;@) {
>      $extra_packages ||= '';
>  
>      my $preseed= (<<END);
> -d-i mirror/suite string $suite
> -
>  d-i debian-installer/locale string en_GB
>  d-i console-keymaps-at/keymap select gb
>  d-i keyboard-configuration/xkb-keymap string en_GB
> @@ -502,6 +500,11 @@ $xopts{ExtraPreseed}
>  
>  END
>  
> +    # For CDROM the suite is part of the image
> +    $preseed .= <<END unless $xopts{CDROM};
> +d-i mirror/suite string $suite
> +END
> +
>      # deb http://ftp.debian.org/debian/ wheezy-backports main
>      $preseed .= <<END if $xopts{EnableBackports};
>  d-i apt-setup/local0/repository string 
> http://$c{DebianMirrorHost}/$c{DebianMirrorSubpath} $suite-backports main
> diff --git a/make-distros-flight b/make-distros-flight
> index 244d582..a679c61 100755
> --- a/make-distros-flight
> +++ b/make-distros-flight
> @@ -86,6 +86,19 @@ test_do_one_netboot () {
>        all_hostflags=$most_hostflags
>  }
>  
> +test_do_one_netinst () {
> +  # Always pygrub since no pv-grub-menu on CD
> +  job_create_test test-$xenarch$kern-$dom0arch-$domU-$cd-netinst \
> +    test-debian-di xl $xenarch $dom0arch                        \
> +      kernbuildjob=${bfi}build-$dom0arch-$kernbuild             \
> +      debian_arch=$domU                                         \
> +      debian_cd=$cd                                             \
> +      debian_method=netinst                                     \
> +      debian_bootloader=pygrub                                  \
> +      all_hostflags=$most_hostflags
> +
> +}
> +
>  test_matrix_do_one () {
>    case ${xenarch} in
>    amd64) domUarches="amd64 i386";;
> @@ -104,6 +117,15 @@ test_matrix_do_one () {
>  
>      done
>  
> +    for cd in current weekly ; do
> +      case ${domU}_${dist} in
> +      armhf_*) continue;; # No iso targets for armhf
> +      *) ;;
> +      esac
> +
> +      test_do_one_netinst
> +
> +    done
>    done
>  }
>  
> diff --git a/ts-debian-di-install b/ts-debian-di-install
> index 5ed15e4..56feee6 100755
> --- a/ts-debian-di-install
> +++ b/ts-debian-di-install
> @@ -46,6 +46,53 @@ sub prep () {
>      target_cmd_root($ho, "umount $gho->{Lvdev} ||:");
>  }
>  
> +sub setup_netinst($$$)
> +{
...
> +    # Use the MD5SUMs file as an index
> +    logm("Fetch index from $baseurl/MD5SUMS");
> +    open C, "curl $baseurl/MD5SUMS|" or die "curl: $!";

This needs to be done in a way that has a timeout.  I don't know what
curl's default is but I think it would be best to arrange to use cmd
in TestSupport.pm somehow.  (Maybe directly, in which case it needs to
be exported.)


> +    target_cmd_root($ho, <<END, 3600);
> +    cd $didir && jigdo-lite --noask $netinst_jigdo
> +END

Can you indent the script line so this is easier to read ?

> +    store_runvar("$gho->{Guest}_netinst_jigdo", $netinst_jigdo);
> +
> +    return (<<END, "\"file:$didir/$filebase.iso,xvdd:cdrom,r\",");
> +bootloader = "pygrub"
> +bootloader_args = ["--kernel=$props->{IsoPath}/vmlinuz", 
> "--ramdisk=$props->{IsoPath}/initrd.gz"]

Could be wrapped.

Thanks,
Ian.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.