Release new version 0.108
[grml-debootstrap.git] / packer / debian64_provision.sh
index 8d1920e..480df1c 100644 (file)
@@ -32,13 +32,6 @@ trap 'bailout ${LINENO} $?' ERR
 
 ## helper functions
 virtualbox_setup() {
-  case "$DEBIAN_VERSION" in
-    lenny)
-      echo "* Debian lenny doesn't support Virtualbox Guest Additions, skipping."
-      return 0
-      ;;
-  esac
-
   if ! mountpoint "${TARGET}" &>/dev/null ; then
     echo "* Mounting target system"
     mount "${INSTALL_TARGET}" "${TARGET}"
@@ -67,7 +60,13 @@ virtualbox_setup() {
   mountpoint "${TARGET}/media/cdrom" >/dev/null && umount "${TARGET}/media/cdrom"
   mount -t iso9660 $isofile "${TARGET}/media/cdrom/"
   UTS_RELEASE=$KERNELVERSION LD_PRELOAD=/tmp/fake-uname.so grml-chroot "$TARGET" /media/cdrom/VBoxLinuxAdditions.run --nox11 || true
-  tail -10 "${TARGET}/var/log/VBoxGuestAdditions.log"
+  if grep -q "make: .*vboxguest.*Error 2" "${TARGET}/var/log/vboxadd-install.log" ; then
+    echo "Error: looks like a fatal error happened during installation of VirtualBox Guest Additions." >&2
+    exit 1
+  fi
+  [ -r "${TARGET}/var/log/VBoxGuestAdditions.log" ] && tail -10 "${TARGET}/var/log/VBoxGuestAdditions.log"
+  [ -r "${TARGET}/var/log/vboxadd-install.log" ]    && tail -10 "${TARGET}/var/log/vboxadd-install.log"
+  [ -r "${TARGET}/var/log/vboxadd-setup.log" ]      && tail -10 "${TARGET}/var/log/vboxadd-setup.log"
   umount "${TARGET}/media/cdrom/"
 
   # work around bug in VirtualBox 4.3.18 which leaves process behind,
@@ -100,7 +99,7 @@ vagrant_setup() {
   chroot ${TARGET} apt-get -y install sudo
 
   echo "* Adding Vagrant user"
-  chroot ${TARGET} useradd -d /home/vagrant -m -u 1000 vagrant
+  chroot ${TARGET} useradd -d /home/vagrant -m -u 1000 vagrant -s /bin/bash
 
   echo "* Installing Vagrant ssh key"
   mkdir -m 0700 -p ${TARGET}/home/vagrant/.ssh
@@ -109,12 +108,8 @@ vagrant_setup() {
   chroot ${TARGET} chown vagrant:vagrant /home/vagrant/.ssh /home/vagrant/.ssh/authorized_keys
 
   echo "* Setting up sudo configuration for user vagrant"
-  if ! [ -d "${TARGET}/etc/sudoers.d" ] ; then # lenny:
-    echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> "${TARGET}/etc/sudoers"
-  else # wheezy and newer:
-    echo "vagrant ALL=(ALL) NOPASSWD: ALL" > "${TARGET}/etc/sudoers.d/vagrant"
-    chmod 0440 "${TARGET}/etc/sudoers.d/vagrant"
-  fi
+  echo "vagrant ALL=(ALL) NOPASSWD: ALL" > "${TARGET}/etc/sudoers.d/vagrant"
+  chmod 0440 "${TARGET}/etc/sudoers.d/vagrant"
 
   host="$(cat ${TARGET}/etc/hostname)"
   if ! grep -q "${host}$" "${TARGET}"/etc/hosts ; then
@@ -182,45 +177,49 @@ EOF
   elif [ "$GRML_DEBOOTSTRAP_VERSION" = "git" ] ; then
     echo "** GRML_DEBOOTSTRAP_VERSION is set to '$GRML_DEBOOTSTRAP_VERSION'"
     echo "** Using grml-debootstrap from Git repository"
-    git clone git://git.grml.org/grml-debootstrap.git
+    git clone https://github.com/grml/grml-debootstrap.git
     cd grml-debootstrap
-    GRML_DEBOOTSTRAP="$(pwd)/grml-debootstrap"
+    GRML_DEBOOTSTRAP="CONFFILES=$(pwd) $(pwd)/grml-debootstrap"
   elif [ "$GRML_DEBOOTSTRAP_VERSION" = "local" ] ; then
     echo "** GRML_DEBOOTSTRAP_VERSION is set to '$GRML_DEBOOTSTRAP_VERSION'"
-    echo "** Using /tmp/grml-debootstrap derived from local system as grml-deboostrap script"
-    GRML_DEBOOTSTRAP="bash /tmp/grml-debootstrap"
+    echo "** Using /tmp/grml-debootstrap derived from local system"
+    cd /tmp/grml-debootstrap
+    export CONFFILES=$(pwd)/etc/debootstrap
+    GRML_DEBOOTSTRAP="bash $(pwd)/usr/sbin/grml-debootstrap"
   elif [ "$GRML_DEBOOTSTRAP_VERSION" = "iso" ] ; then
     echo "** GRML_DEBOOTSTRAP_VERSION is set to '$GRML_DEBOOTSTRAP_VERSION'"
     echo "** Using grml-debootstrap as provided on ISO"
   fi
 }
 
-verify_debootstrap_version() {
-  local required_version=1.0.65
-  local present_version=$(dpkg-query --show --showformat='${Version}' debootstrap)
-
-  if dpkg --compare-versions $present_version lt $required_version ; then
-    echo "** debootstrap version $present_version is older than minimum required version $required_version - upgrading."
-    apt-get update
-    apt-get -y install debootstrap
-  fi
-}
-
 grml_debootstrap_execution() {
   echo "* Installing Debian"
 
+  echo "** Executing: $GRML_DEBOOTSTRAP --hostname $DEBIAN_VERSION --release $DEBIAN_VERSION --target ${INSTALL_TARGET} --grub ${GRUB_TARGET} --password grml --force $GRML_DEB_OPTIONS" | tee -a /tmp/grml-debootstrap.log
+  $GRML_DEBOOTSTRAP --hostname "${DEBIAN_VERSION}" --release "${DEBIAN_VERSION}" --target "${INSTALL_TARGET}" --grub "${GRUB_TARGET}" --password grml --force $GRML_DEB_OPTIONS 2>&1 | tee -a /tmp/grml-debootstrap.log
+}
+
+apply_nic_workaround() {
   # release specific stuff
   case "$DEBIAN_VERSION" in
-    lenny)
-      GRML_DEB_OPTIONS="--mirror http://archive.debian.org/debian/ --filesystem ext3"
+    stretch|buster|bullseye|bookworm|unstable|sid)
       ;;
-    stretch)
-      verify_debootstrap_version
+    *)
+      echo "* Debian $DEBIAN_VERSION doesn't require NIC workaround"
+      return 0
       ;;
   esac
 
-  echo "** Executing: $GRML_DEBOOTSTRAP --hostname $DEBIAN_VERSION --release $DEBIAN_VERSION --target ${INSTALL_TARGET} --grub ${GRUB_TARGET} --password grml --force $GRML_DEB_OPTIONS" | tee -a /tmp/grml-debootstrap.log
-  $GRML_DEBOOTSTRAP --hostname "${DEBIAN_VERSION}" --release "${DEBIAN_VERSION}" --target "${INSTALL_TARGET}" --grub "${GRUB_TARGET}" --password grml --force $GRML_DEB_OPTIONS 2>&1 | tee -a /tmp/grml-debootstrap.log
+  if ! mountpoint "${TARGET}" &>/dev/null ; then
+    echo "* Mounting target system"
+    mount "${INSTALL_TARGET}" "${TARGET}"
+  fi
+
+  echo "* Disabling predictable network interface names for Debian $DEBIAN_VERSION"
+  ln -s /dev/null "${TARGET}/etc/udev/rules.d/80-net-setup-link.rules"
+
+  echo "* Rebuilding initramfs to include udev configuration change"
+  chroot "${TARGET}" update-initramfs -u -k all
 }
 
 log_system_information() {
@@ -288,6 +287,7 @@ grml_debootstrap_setup
 grml_debootstrap_execution
 virtualbox_setup
 vagrant_setup
+apply_nic_workaround
 log_system_information
 clean_apt_files
 automated_tests