Add support for installation of Debian stretch (issue #77)
[grml-debootstrap.git] / grml-debootstrap
index 0f3304c..89c56f4 100755 (executable)
@@ -142,6 +142,7 @@ fi
 # early helper functions {{{
 GOOD='\e[32;01m'
 BAD='\e[31;01m'
+WARN='\e[33;01m'
 NORMAL='\e[0m'
 
 einfo() {
@@ -156,6 +157,11 @@ einfon() {
   return 0
 }
 
+ewarn() {
+  printf " ${WARN}*${NORMAL} $*\n"
+  return 0
+}
+
 eerror() {
   [ "${RC_ENDCOL}" != "yes" ] && [ "${LAST_E_CMD}" = "ebegin" ] && echo
   printf " ${BAD}*${NORMAL} $*\n" >&2
@@ -219,7 +225,7 @@ cleanup() {
 
       # ugly, but make sure we really don't leave anything (/proc /proc and
       # /dev /dev are intended, trying to work around timing issues, see #657023)
-      for ARG in /sys /proc /proc /dev /dev ; do
+      for ARG in /sys /proc /proc /dev/pts /dev/pts /dev /dev ; do
         [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount $ARG >/dev/null 2>&1
         umount "$MNTPOINT"/$ARG >/dev/null 2>&1
       done
@@ -529,6 +535,7 @@ prompt_for_release()
             squeeze  Debian/6.0 \
             wheezy   Debian/7.0 \
             jessie   Debian/8.0 \
+            stretch  Debian/9.0 \
             sid      Debian/unstable)"
   [ $? -eq 0 ] || bailout
 }
@@ -832,7 +839,7 @@ fi
 # Support for generic release codenames is unavailable. {{{
 if [ "$RELEASE" = "stable" ] || [ "$RELEASE" = "testing" ] ; then
    eerror "Generic release codenames (stable, testing) are unsupported. \
-Please use specific codenames such as lenny, squeeze, wheezy or jessie." ; eend 1
+Please use specific codenames such as lenny, squeeze, wheezy, jessie or stretch." ; eend 1
    bailout 1
 fi
 # }}}
@@ -1030,7 +1037,7 @@ prepare_vm() {
     einfo "Adjusting disk signature to a fixed (non-random) value"
     MBRTMPFILE=$(mktemp)
     dd if="${TARGET}" of="${MBRTMPFILE}" bs=512 count=1
-    echo -en "\x41\x41\x41\x41\x41" | dd of="${MBRTMPFILE}" conv=notrunc seek=440 bs=1
+    echo -en "\x41\x41\x41\x41" | dd of="${MBRTMPFILE}" conv=notrunc seek=440 bs=1
     dd if="${MBRTMPFILE}" of="${TARGET}" conv=notrunc
     eend $?
   fi
@@ -1090,6 +1097,7 @@ finalize_vm() {
   mount -t proc none "${MNTPOINT}"/proc
   mount -t sysfs none "${MNTPOINT}"/sys
   mount --bind /dev "${MNTPOINT}"/dev
+  mount --bind /dev/pts "${MNTPOINT}"/dev/pts
 
   mkdir -p "${MNTPOINT}/boot/grub"
   if ! [ -d "${MNTPOINT}"/usr/lib/grub/i386-pc/ ] ; then
@@ -1124,6 +1132,7 @@ finalize_vm() {
 
   umount "${MNTPOINT}"/proc
   umount "${MNTPOINT}"/sys
+  umount "${MNTPOINT}"/dev/pts
   umount "${MNTPOINT}"/dev
   umount "${MNTPOINT}"
   kpartx -d "${ORIG_TARGET}" >/dev/null
@@ -1388,11 +1397,13 @@ chrootscript() {
   else
     einfo "Executing chroot-script now"
     mount --bind /dev "$MNTPOINT"/dev
+    mount --bind /dev/pts "$MNTPOINT"/dev/pts
     if [ "$DEBUG" = "true" ] ; then
       chroot "$MNTPOINT" /bin/sh -x /bin/chroot-script ; RC=$?
     else
       chroot "$MNTPOINT" /bin/chroot-script ; RC=$?
     fi
+    try_umount 3 "$MNTPOINT"/dev/pts
     try_umount 3 "$MNTPOINT"/dev
     eend $RC
   fi