blob: c8a009448f8ad10b373d70cbdaf86d52f21f9d75 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/bin/bash
# Copyright 2012 Holger Levsen <holger@layer-acht.org>
# released under the GPLv=2
# $1 = vnc-display
# $2 = name
# $3 = wget url/jigdo url
if [ "$1" = "" ] || [ "$2" = "" ] || [ "$3" = "" ] ; then
echo "need three params"
echo '# $1 = vnc-display'
echo '# $2 = name'
echo '# $3 = wget url/jigdo url'
exit 1
fi
#
# default settings
#
set -x
set -e
export LC_ALL=C
export MIRROR=http://ftp.de.debian.org/debian
export http_proxy="http://localhost:3128"
#
# init
#
DISPLAY=$1
NAME=$2
IMAGE_URL=$3
IMAGE=$(pwd)/$(basename $IMAGE_URL)
IMAGE_MNT="/media/cd-$NAME.iso"
rm -rf results
mkdir -p results
cd results
cleanup_all() {
set -x
#
# create video
#
ffmpeg2theora --videobitrate 700 --no-upscaling snapshot_%06d.ppm --framerate 12 --max_size 800x600 -o cd-test-$NAME.ogv
rm snapshot_??????.ppm
#
# kill qemu
#
sudo kill -9 $(ps fax | grep -v grep | grep qemu-system | grep $IMAGE 2>/dev/null | cut -d " " -f1)
#
# cleanup
#
sudo umount $IMAGE_MNT
rm $NAME.qcow
}
bootstrap() {
echo "Doing cd tests for $NAME now."
qemu-img create -f qcow $NAME.qcow 20g
case $NAME in
debian-edu-wheezy)
echo "fire up qemu now..."
sudo qemu-system-x86_64 -cdrom $IMAGE -hda $NAME.qcow -boot d -m 1024 -display vnc=localhost:$DISPLAY --kernel $IMAGE_MNT/install.amd/vmlinuz --append "auto=true priority=critical url=http://10.0.2.2/userContent/$NAME-preseed.cfg video=vesa:ywrap,mtrr vga=788 initrd=/install.amd/gtk/initrd.gz -- quiet" --initrd $IMAGE_MNT/install.amd/gtk/initrd.gz &
;;
*) echo "unsupported distro."
exit 1
# wheezy: qemu-system-x86_64 -cdrom debian-6.0.6-amd64-businesscard.iso -hda debian.qcow -boot d -m 2048 -display vnc=localhost:1 --kernel /mnt/install.amd/vmlinuz --append "auto=true priority=critical url=http://10.0.2.2/userContent/preseed.cfg vga=788 initrd=/install.amd/initrd.gz" --initrd /mnt/install.amd/initrd.gz
# kernel /install.amd/vmlinuz
# append desktop=lxde video=vesa:ywrap,mtrr vga=788 initrd=/install.amd/gtk/initrd.gz -- quiet
;;
esac
}
monitor_installation() {
sleep 2
echo "Taking screenshots every 2secs now, until the installation is finished or 5h have passed"
NR=0
while [ $NR -lt 9000 ] ; do
set +x
#
# break if qemu-system has finished
#
if [ $(ps fax | grep -v grep | grep qemu-system | grep $IMAGE 2>/dev/null | wc -l) -eq 0 ] ; then
break
fi
vncsnapshot -quiet -allowblank localhost:$DISPLAY snapshot_$(printf "%06d" $NR).jpg 2>/dev/null
convert snapshot_$(printf "%06d" $NR).jpg snapshot_$(printf "%06d" $NR).ppm
rm snapshot_$(printf "%06d" $NR).jpg
let NR=NR+1
sleep 2
# give signal we are still running
if [ $(($NR % 15)) -eq 0 ] ; then
date
fi
done
set -x
}
trap cleanup_all INT TERM EXIT
# only download if $IMAGE is older than a week (60*24*7=10080)
if test $(find $IMAGE -mmin +10080) || ! test -f $IMAGE ; then
rm -f $IMAGE
curl $IMAGE_URL > $IMAGE
fi
sudo mkdir -p $IMAGE_MNT
sudo mount -o loop $IMAGE $IMAGE_MNT
bootstrap
monitor_installation
cleanup_all
trap - INT TERM EXIT
|