+#!/bin/sh
+# based on <https://wiki.debian.org/DebianInstaller/WritableUSBStick>
+set -e
+cd $(dirname "$0")
+. lib/abort
+. lib/abort_if_not_user
+. lib/abort_if_offline
+. lib/constants_installer
+. lib/expect_min_n_args
+. lib/get_mountable_device_path
+
+INSTALLER_VERSION=12.10.0
+PATH_MNT_ISO=/mnt/iso
+
+abort_if_not_user root
+abort_if_offline root
+abort_if_command_unknown() {
+ if ! which "$1" > /dev/null; then
+ abort "expected command unavailable: ${1}."
+ fi
+}
+abort_if_command_unknown wget
+abort_if_command_unknown rsync
+abort_if_command_unknown parted
+abort_if_command_unknown mkfs.vfat
+
+expect_min_n_args 1 '(device name, e.g. "sdb")' $@
+PATH_STICK="$(get_mountable_device_path $1)"
+
+FILENAME_ISO="debian-${INSTALLER_VERSION}-amd64-netinst.iso"
+echo "Retrieving ${FILENAME_ISO}."
+URL_ISO="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/${FILENAME_ISO}"
+PATH_ISO="/tmp/${FILENAME_ISO}"
+wget --output-document "${PATH_ISO}" "${URL_ISO}"
+
+echo "Preparing partition/filesystem on ${PATH_STICK}."
+parted --script "${PATH_STICK}" mklabel msdos
+parted --script "${PATH_STICK}" mkpart primary fat32 0% 100%
+PATH_PARTITION="${PATH_STICK}1"
+mkfs.vfat "${PATH_PARTITION}"
+
+echo "Mounting ${PATH_MNT_ISO} and ${PATH_MNT_STICK}."
+mkdir -p "${PATH_MNT_ISO}" "${PATH_MNT_STICK}"
+mount "${PATH_PARTITION}" "${PATH_MNT_STICK}"
+mount -o loop "${PATH_ISO}" "${PATH_MNT_ISO}"
+do_umounts() {
+ set +e
+ echo "Unmounting ${PATH_MNT_ISO}"
+ umount "${PATH_MNT_ISO}"
+ echo "Unmounting ${PATH_MNT_STICK}"
+ umount "${PATH_MNT_STICK}"
+ set -e
+}
+trap do_umounts EXIT INT TERM
+
+echo "Copying contents of ${PATH_MNT_ISO} to ${PATH_MNT_STICK}/."
+PATH_RSYNC_ERRORS=/tmp/rsync_errors
+set +e
+rsync -a "${PATH_MNT_ISO}/" "${PATH_MNT_STICK}/" 2> "${PATH_RSYNC_ERRORS}"
+RESULT=$?
+set -e
+if [ "${RESULT}" != "0" ]; then
+ echo 'rsync errors:'
+ cat "${PATH_RSYNC_ERRORS}"
+ echo 'rsync encountered errors, see above – continue? (Y/N)'
+ rm "${PATH_RSYNC_ERRORS}"
+ read ANSWER
+ FIRST_CHAR=$(echo "${ANSWER}" | cut -c1)
+ if ! [ "${FIRST_CHAR}" = 'y' -o "${FIRST_CHAR}" = 'Y' ]; then
+ abort 'as requested'
+ fi
+fi
+
+echo "Installing preseed file."
+cp "${PATH_PRESEED_CFG}" "${PATH_MNT_STICK}/"
+sed --in-place 's/ --- / --- preseed\/file=\/cdrom\/'"${FILENAME_PRESEED_CFG}"' /g' "${PATH_MNT_STICK}/boot/grub/grub.cfg"
+
+rm "${PATH_ISO}"
+echo "Done!"