## 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}"
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,
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
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="CONFFILES=$(pwd) $(pwd)/grml-debootstrap"
elif [ "$GRML_DEBOOTSTRAP_VERSION" = "local" ] ; then
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() {
grml_debootstrap_execution
virtualbox_setup
vagrant_setup
+apply_nic_workaround
log_system_information
clean_apt_files
automated_tests