Replace vol_id command with blkid.
[grml-debootstrap.git] / grml-debootstrap
index 7edc29b..72ff57d 100755 (executable)
@@ -11,7 +11,7 @@ set -e # exit on any error
 
 # variables {{{
 PN="$(basename $0)"
-VERSION='0.33'
+VERSION='0.35'
 MNTPOINT="/mnt/debootstrap.$$"
 
 # inside the chroot system locales might not be available, so use minimum:
@@ -57,15 +57,17 @@ Configuration options:
                              /etc/debootstrap/config
   -d, --confdir <path>     Place of config files for debootstrap, defaults
                              to /etc/debootstrap
-      --packages[=<file>]  Install packages defined in specified list file.
-      --debconf[=<file>]   Pre-seed packages using specified pre-seed db file.
+      --packages <file>    Install packages defined in specified list file.
+      --nopackages         Skip installation of packages defined in
+                             /etc/debootstrap/packages
+      --debconf <file>     Pre-seed packages using specified pre-seed db file.
       --keep_src_list      Do not overwrite user provided apt sources.list.
       --hostname <name>    Hostname of Debian system.
       --password <pwd>     Use specified password as password for user root.
       --bootappend <line>  Add specified appendline to kernel whilst booting.
       --chroot-scripts <d> Execute chroot scripts from specified directory.
-      --pre-scripts[=<d>]  Execute scripts from specified directory (before chroot-scripts).
-      --scripts[=<dir>]    Execute scripts from specified directory (after chroot-scripts).
+      --pre-scripts <dir>  Execute scripts from specified directory (before chroot-scripts).
+      --scripts <dir>      Execute scripts from specified directory (after chroot-scripts).
 
 Other options:
 
@@ -140,6 +142,7 @@ fi
 [ "$_opt_interactive" ]         && INTERACTIVE=1
 [ "$_opt_config" ]              && CONFIGFILE=$_opt_config
 [ "$_opt_packages_set" ]        && PACKAGES='yes'
+[ "$_opt_nopackages" ]          && PACKAGES=''
 [ "$_opt_debconf_set" ]         && DEBCONF='yes'
 [ "$_opt_scripts_set" ]         && SCRIPTS='yes'
 [ "$_opt_pre_scripts_set" ]     && PRE_SCRIPTS='yes'
@@ -207,7 +210,7 @@ prompt_for_target()
   fi
 
   PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do
-                       echo "$i $(vol_id --type $i 2>/dev/null || echo [no_filesystem_yet])"
+                       echo "$i $(blkid -s TYPE -o value $i 2>/dev/null || echo [no_filesystem_yet])"
                    done)
 
   TARGET=$(dialog --title "$PN" --single-quoted --stdout \
@@ -388,7 +391,7 @@ AVAILABLE_PARTITIONS=$(LANG=C fdisk -l 2>/dev/null | \
              gawk -v num=0 -v ORS=' ' '/^\/dev\// {print $1}')
 [ -n "$AVAILABLE_PARTITIONS" ] || echo "FIXME: no partitions available?"
 PARTITION_LIST=$(for i in $(echo $AVAILABLE_PARTITIONS) ; do
-                     echo "$i $(vol_id --type $i 2>/dev/null || echo [no_filesystem_yet]) off"
+                     echo "$i $(blkid -s TYPE -o value $i 2>/dev/null || echo [no_filesystem_yet]) off"
                  done)
 
 dialog --title "$PN" --separate-output \
@@ -758,8 +761,10 @@ debootstrap_system() {
   if grep -q "$MNTPOINT" /proc/mounts || [ -n "$DIRECTORY" ] ; then
      einfo "Running $DEBOOTSTRAP $DEBOOTSTRAP_OPT for release ${RELEASE}${ARCHINFO} using ${MIRROR}${ISO}"
      if [ -n "$MIRROR" ] ; then
+        einfo "Executing: $DEBOOTSTRAP $ARCHCMD $KEYRING $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $MIRROR"
         $DEBOOTSTRAP $ARCHCMD $KEYRING $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $MIRROR
      else
+        einfo "Executing: $DEBOOTSTRAP $ARCHCMD $KEYRING $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $ISO"
         $DEBOOTSTRAP $ARCHCMD $KEYRING $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $ISO
      fi
      eend $?
@@ -791,6 +796,7 @@ preparechroot() {
   [ -n "$ROOTPASSWORD" ]  && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES
   [ -n "$TARGET" ]        && echo "TARGET=$TARGET"             >> $CHROOT_VARIABLES
   [ -n "$TARGET_UUID" ]   && echo "TARGET_UUID=$TARGET_UUID"   >> $CHROOT_VARIABLES
+  [ -n "$RM_APTCACHE" ]   && echo "RM_APTCACHE=$RM_APTCACHE"   >> $CHROOT_VARIABLES
 
   cp $VERBOSE $CONFFILES/chroot-script $MNTPOINT/bin/chroot-script
   chmod 755 $MNTPOINT/bin/chroot-script
@@ -920,18 +926,21 @@ grub_install() {
      return 0
   fi
 
+  if ! [ -x "$(which grub-install)" ] ; then
+     echo "Error: grub-install not available. (Error while installing grub package?)"
+     return 1
+  fi
+
   if [ -n "$SELECTED_PARTITIONS" ] ; then # using sw-raid
      for device in $SELECTED_PARTITIONS ; do
         GRUB="${device%%[0-9]}"
         einfo "Installing grub on ${GRUB}:"
-        [ -x /usr/sbin/grub-install ] && GRUBINSTALL="/usr/sbin/grub-install --no-floppy" || GRUBINSTALL="/sbin/grub-install --no-floppy"
-        $GRUBINSTALL --root-directory="$MNTPOINT" "$GRUB"
+        grub-install --no-floppy --root-directory="$MNTPOINT" "$GRUB"
         eend $?
      done
   else
      einfo "Installing grub on ${GRUB}:"
-     [ -x /usr/sbin/grub-install ] && GRUBINSTALL="/usr/sbin/grub-install --no-floppy" || GRUBINSTALL="/sbin/grub-install --no-floppy"
-     $GRUBINSTALL --root-directory="$MNTPOINT" "$GRUB"
+     grub-install --no-floppy --root-directory="$MNTPOINT" "$GRUB"
      eend $?
   fi
 }
@@ -985,6 +994,12 @@ done
 # }}}
 
 # finalize {{{
+if [ -n "$ISODIR" ] ; then
+   einfo "Unmounting Debian image loopback from $MNTPOINT/$ISODIR."
+   umount "$MNTPOINT/$ISODIR"
+   eend $?
+fi
+
 einfo "Removing ${CHROOT_VARIABLES}" ; rm "$CHROOT_VARIABLES" ; eend $?
 einfo "Removing ${STAGES}" ; rmdir "$STAGES" ; eend $?