2 #emacs: -*- mode: shell-script; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil -*-
3 #ex: set sts=4 ts=4 sw=4 noet:
7 # TODO: arguments later on to become cmdline args
8 #iso=debian-squeeze-di-beta1-amd64-businesscard.iso
9 iso=debian-testing-i386-businesscard.iso
10 di_cd=$(readlink -f $PWD/../../../neurodebian-images/$iso)
11 di_host=hydra # where to look for di preseed
20 eula="This virtual appliance contains Free and Open Source Software (FOSS) released under licenses compliant with the Debian Free Software Guidelines (DFSG, see http://www.debian.org/social_contract), such as, GPL, BSD, MIT, etc. Such software is free to be used or customized for any purpose.
22 However, by default this virtual machine is also enabled to install additional software from Debian and NeuroDebian repositories that is distributed under more restrictive licenses (e.g. closed-source, non-commercial, research-only). It is the user's responsibility to adhere to the terms and conditions of any particular software that is installed and used in this virtual machine. Copyright and license details for any installed PACKAGE are available in /usr/share/doc/PACKAGE/copyright inside the virtual machine."
28 # By default 32bit unless installer image has amd64
29 # TODO: might need to make more robust?
31 vm_arch_name=" (32bit)"
32 if file $di_cd | grep -q ' amd64 '; then
35 vm_arch_name=" (64bit)"
38 vm_disk="$build_dir/nd-${vm_version}_${vm_arch}.vdi"
39 vm_name="${vendor} VirtualMachine${vm_arch_name}"
40 vm_ovf="${dist_dir}/${vendor}_${vm_version}_${vm_arch}.ovf"
41 product_name="${vendor} VirtualMachine (${vm_arch})"
48 # TODO: remove whenever done
49 VBoxManage storagectl "${vm_name}" \
50 --name "SATA Controller" --remove || :
51 VBoxManage storagectl "${vm_name}" \
52 --name "IDE Controller" --remove || :
54 VBoxManage closemedium disk "${vm_disk}" || :
55 VBoxManage unregistervm "${vm_name}" --delete || :
59 clean_buildvm # clean things up
61 # Check that no previous VM was left (can happen if previous failures
63 if VBoxManage list vms | grep -q "^\"${vm_name}\".*"; then
64 echo >&2, "VM $vm_name still exists -- something is wrong, Can't continue"
68 _info Assure build directory
71 _info Create HardDisk for the VM
72 VBoxManage createhd --filename $vm_disk \
73 --size 20000 --format VDI
74 # documented but not implemented:
75 # --comment "Drive for NeuroDebian VM installer"
78 VBoxManage createvm --name "${vm_name}" --register \
79 --ostype "${vm_ostype}" --basefolder $build_dir
82 VBoxManage modifyvm "${vm_name}" \
84 --audiocontroller ac97 \
97 VBoxManage storagectl "${vm_name}" \
98 --name "IDE Controller" \
101 VBoxManage storageattach "${vm_name}" \
102 --storagectl "IDE Controller" \
108 VBoxManage storagectl "${vm_name}" \
109 --name "SATA Controller" \
111 --controller "IntelAHCI"
113 VBoxManage storageattach "${vm_name}" \
114 --storagectl "SATA Controller" \
118 --medium "${vm_disk}"
120 VBoxManage showvminfo "${vm_name}"
122 _info "Run Debian Installer"
123 # When boot menu appears you will have to
125 # type auto url=$di_host
128 VBoxManage startvm "${vm_name}"
130 sleep 5 # give some time to make sure we get to menu
131 # Send our sequence -- cruel way
132 #VBoxManage controlvm "${vm_name}" keyboardputscancode \
134 # 1e 9e 16 96 14 94 18 98 39 b9 16 96 13 93 26 a6 0d 8d 23 a3 15 95 20 a0 13 93 1e 9e \
135 # 1c 9c # ESCAPE, auto url=hydra, ENTER
136 echo "typeGuest \"${vm_name}\" \"&ESC;Wauto url=${di_host}&ENTER;\"" | /usr/lib/virtualbox/vboxshell.py
139 oops -- asked either I want to store Partitioning on the disk...
144 # wait for it to finish! -- found no cleaner way :-/
146 while VBoxManage showvminfo "${vm_name}" | grep -q running; do
151 sudo ./nd_compactvdi "${vm_disk}"
153 _info Exporting the appliance
155 VBoxManage export "${vm_name}" -o "$vm_ovf" \
157 --product "${vendor} VirtualMachine (${vm_arch})" \
158 --producturl "http://neuro.debian.net/vm.html" \
159 --vendor "${vendor}" \
160 --vendorurl "http://neuro.debian.net" \
161 --version "$vm_version" \
164 _info Cleaning after ourselves
167 _info Testing import of the appliance
168 VBoxManage import "$vm_ovf" --vsys 0 --eula accept
170 _info Starting imported machine
171 VBoxManage startvm "${vm_name}"