chiark / gitweb /
merge many (mostly Xen) changes into the ubuntu branch
[autopkgtest.git] / xen / setup
1 #!/bin/bash
2 set -e
3 . ${ADT_XENLVM_SHARE:=/usr/share/autopkgtest/xenlvm}/readconfig
4 test $nonoptargs = 0 || fail "non-option arguments not allowed"
5
6 $ADT_XENLVM_SHARE/purge
7
8 x lvcreate -L $adt_fs_size -n $adt_lvm_baselv $adt_lvm_vg
9 x lvcreate -L $adt_fs_snapsize -n $adt_lvm_cowdatalv $adt_lvm_vg
10
11 if $adt_lvm_erasebase; then
12   x dd if=/dev/zero of=$lvm_baselv_namepath
13 fi
14 x mkfs -t $adt_fs_type $adt_mkfs_args $lvm_baselv_namepath
15
16 mkdir -p $adt_play/base
17 x mount $lvm_baselv_namepath $adt_play/base
18
19 x debootstrap                                                            \
20         --components="${adt_debootstrap_components}"                     \
21         --include=${adt_debootstrap_include},${adt_debootstrap_includemore} \
22         $adt_debootstrap_opts                                           \
23         "$adt_distro" "$adt_play/base"                                  \
24         "$adt_debootstrap_mirrors" "$adt_debootstrap_script"            \
25  |perl -pe '
26  s/^(I: (?:Retrieving|Validating|Extracting|Unpacking|Configuring) [^A-Z].*)\n/
27   sprintf "%-75s\r", $1
28   /e
29 '
30
31 $ADT_XENLVM_SHARE/fixups "$@"
32
33 echo "
34 --- writing $adt_xmconfig ---
35 "
36
37 cat <<END >$adt_xmconfig
38 kernel = "$adt_kernel"
39 memory = $adt_testbed_ram
40 root = "/dev/hda1"
41 extra = "ro console=tty0"
42 disk = [ "phy:$lvm_fslink_ptrrhs,hda1,w" ]
43 vif = [ "bridge=none,mac=$adt_guest_macaddr,ip=${adt_guest_ipaddr},script=${adt_net_vifscript}" ]
44 on_crash = "preserve"
45 on_reboot = "preserve"
46 on_shutdown = "preserve"
47 END
48
49 if [ "x$adt_ramdisk" != x ]; then
50 cat <<END >>$adt_xmconfig
51 ramdisk = "$adt_ramdisk"
52 END
53 fi
54
55 if [ "x$adt_setup_hook" != x ]; then
56         $adt_setup_hook ${adt_play}/base
57 fi
58
59 x umount $lvm_baselv_namepath
60
61 mkdir -p ${lvm_fslink_dirpath}
62 ln -sf ../$lvm_baselv_namerhs ${lvm_fslink_ptr}
63 x xm create $adt_xmconfig name=$adt_xmname
64 retries=10
65
66 if grep 0 /proc/sys/net/ipv4/ip_forward >/dev/null; then
67         cat <<END
68
69 ********** WARNING - IP FORWARDING IS TURNED OFF **********
70 Your testbed will probably have trouble with downloads, DNS, etc.
71 You must turn this on manually, since it is a major config change.
72
73 END
74 fi
75
76 while true; do
77         if ping -c 1 $adt_guest_ipaddr && \
78            /usr/share/autopkgtest/xenlvm/on-testbed '
79                 set -e; umask 002; cd /var/lib;
80                 mkdir -p autopkgtest; cd autopkgtest;
81                 touch xenlvm-created
82         '; then break; fi
83         if [ $retries -le 0 ]; then 
84                 echo >&2 'no response from guest'
85                 x xm console $adt_xmname
86                 exit 1
87         fi
88         retries=$(($retries-1))
89         sleep 2
90 done
91
92 x xm mem-set $adt_xmname $adt_freeze_ram
93 retries=$adt_vm_reduce_retries
94 while sleep 1; do
95   if x xm mem-max $adt_xmname $adt_freeze_ram; then break; fi
96   if [ $retries -le 0 ]; then echo >&2 'cannot reduce memory'; exit 1; fi
97   retries=$(($retries-1))
98 done
99
100 x xm save $adt_xmname $adt_play/xen-save
101 rm ${lvm_fslink_ptr}