#!/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/purge "$@" #----- 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 x mount $lvm_baselv_namepath $adt_play/base 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 "$@" echo " --- writing $adt_xmconfig --- " cat <$adt_xmconfig kernel = "$adt_kernel" memory = $adt_testbed_ram root = "/dev/hda1" 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$adt_ramdisk" != x ]; then cat <>$adt_xmconfig ramdisk = "$adt_ramdisk" END fi 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 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' x xm console $adt_xmname exit 1 fi retries=$(($retries-1)) sleep 2 done x xm mem-set $adt_xmname $adt_freeze_ram retries=$adt_vm_reduce_retries while sleep 1; do 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 x xm save $adt_xmname $adt_play/xen-save rm ${lvm_fslink_ptr} ${lvm_swaplink_ptr} touch "$adt_play/good"