X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=xen%2Fsetup;h=262f5eaa406d60271ec9159596083cb2dd63a712;hb=aa43f2a81adb120c1da99919c5b3523ea952d170;hp=f1d52539641564de92bb4231cb66afab56d55a8f;hpb=b01d98dcb6043d1ef3a42c8d72b195c8be0d742e;p=autopkgtest.git diff --git a/xen/setup b/xen/setup index f1d5253..262f5ea 100755 --- a/xen/setup +++ b/xen/setup @@ -1,23 +1,59 @@ #!/bin/bash set -e +adt_readconfig_needkernel=y +adt_readconfig_needlock=y . ${ADT_XENLVM_SHARE:=/usr/share/autopkgtest/xenlvm}/readconfig +test $nonoptargs = 0 || fail "non-option arguments not allowed" -$ADT_XENLVM_SHARE/cleanup -lvchange -a n $lvm_cowdata_namepath ||: -lvremove $lvm_baselv_namepath ||: -lvremove $lvm_cowdata_namepath ||: +$ADT_XENLVM_SHARE/purge "$@" -lvcreate -L $adt_fs_size -n $adt_lvm_baselv $adt_lvm_vg -lvcreate -L $adt_fs_snapsize -n $adt_lvm_cowdatalv $adt_lvm_vg -dd if=/dev/zero of=$lvm_baselv_namepath -mkfs -t $adt_fs_type $adt_mkfs_args $lvm_baselv_namepath +#----- create fs base + +lvm_create_base () { + xl lvcreate -L $3 -n $2 $1 $4 + xl lvcreate -L $6 -n $5 $1 $7 + if $8; then + basesize=`lvdisplay -c $9 8>&- 3>&-` + basesize="${basesize#*:*:*:*:*:*:}" + basesize="${basesize%%:*}" + x dd if=/dev/zero of=$9 bs=512 count="$basesize" + fi +} + +lvm_create_base $adt_lvm_vg \ + $adt_lvm_baselv $adt_fs_size $adt_lvm_pv_fsbase \ + $adt_lvm_cowdatalv $adt_fs_snapsize $adt_lvm_pv_fssnap \ + $adt_lvm_erasebase $lvm_baselv_namepath + +x mkfs -t $adt_fs_type $adt_mkfs_args $lvm_baselv_namepath + +#----- create swap base + +if $provide_swap; then + lvm_create_base $adt_lvm_swapvg \ + $adt_lvm_swapbaselv $adt_swap_size $adt_lvm_pv_swapbase \ + $adt_lvm_swapcowdatalv $adt_swap_snapsize $adt_lvm_pv_swapsnap \ + $adt_lvm_eraseswap $lvm_baselv_swapnamepath + x mkswap $lvm_baselv_swapnamepath + swapdisk=", \"phy:$lvm_swaplink_ptrrhs,hda2,w\"" +fi + +#----- create base filesystem and info mkdir -p $adt_play/base -mount $adt_lvm_baselv $adt_play/base +x mount $lvm_baselv_namepath $adt_play/base -pbuilder create --configfile /dev/null --distribution $distro \ - --no-targz --buildplace $adt_play/base \ - $adt_pbuilder_args --debootstrapopts --variant='' +x debootstrap \ + --components="${adt_debootstrap_components}" \ + --include=${adt_debootstrap_include},${adt_debootstrap_includemore} \ + $adt_debootstrap_opts \ + "$adt_distro" "$adt_play/base" \ + "$adt_debootstrap_mirrors" "$adt_debootstrap_script" \ + |perl -pe ' + s/^(I: (?:Retrieving|Validating|Extracting|Unpacking|Configuring) [^A-Z].*)\n/ + sprintf "%-75s\r", $1 + /e +' $ADT_XENLVM_SHARE/fixups "$@" @@ -26,48 +62,74 @@ echo " " cat <$adt_xmconfig -kernel = "$kernel" +kernel = "$adt_kernel" memory = $adt_testbed_ram root = "/dev/hda1" -extra = "ro console=tty0" -disk = [ "phy:$lvm_fslink_ptrrhs,hda1,w" ] -vif = [ "bridge=none,mac=$adt_guest_macaddr,ip=${adt_guest_ipaddr},script=${adt_net_vifscript}" ] +extra = "ro console=tty0 $adt_xmhook_extra" +disk = [ "phy:$lvm_fslink_ptrrhs,hda1,w"$swapdisk $adt_xmhook_disk ] +vif = [ "bridge=none,mac=$adt_guest_macaddr,ip=${adt_guest_ipaddr},script=${adt_net_vifscript}" $adt_xmhook_vif ] on_crash = "preserve" on_reboot = "preserve" on_shutdown = "preserve" +$adt_xmhook_config END -if [ "x$ramdisk" != x ]; then +if [ "x$adt_ramdisk" != x ]; then cat <>$adt_xmconfig -ramdisk = "$ramdisk" +ramdisk = "$adt_ramdisk" END fi -umount $adt_lvm_baselv +if [ "x$adt_setup_hook" != x ]; then + $adt_setup_hook ${adt_play}/base +fi + +x umount $lvm_baselv_namepath + +for fs in fs swap; do + swap=${fs#fs}; eval " + mkdir -p \${lvm_${fs}link_dirpath} + ln -sf ../\$lvm_baselv_${swap}namerhs \${lvm_${fs}link_ptr} + " +done -mkdir -p /dev/${lvm_fslink_dirpath} -ln -sf ../$lvm_baselv_namerhs ${lvm_fslink_ptr} -xm create $adt_xmconfig name=$adt_xmname +x xm create $adt_xmconfig name=$adt_xmname retries=10 +if grep 0 /proc/sys/net/ipv4/ip_forward >/dev/null; then + cat <&2 'no response from guest' - xm console $adt_xmname + x xm console $adt_xmname exit 1 fi retries=$(($retries-1)) sleep 2 done -xm mem-set $adt_xmname $adt_freeze_ram +x xm mem-set $adt_xmname $adt_freeze_ram retries=$adt_vm_reduce_retries while sleep 1; do - if xm mem-max $adt_xmname $adt_freeze_ram; then break; fi + if x xm mem-max $adt_xmname $adt_freeze_ram; then break; fi if [ $retries -le 0 ]; then echo >&2 'cannot reduce memory'; exit 1; fi retries=$(($retries-1)) done -xm save $adt_xmname $adt_play/xen-save -rm ${lvm_fslink_ptr} +x xm save $adt_xmname $adt_play/xen-save +rm ${lvm_fslink_ptr} ${lvm_swaplink_ptr} +touch "$adt_play/good"