# variables {{{
PN="$(basename $0)"
-VERSION='0.28'
+VERSION='0.30'
MNTPOINT="/mnt/debootstrap.$$"
# inside the chroot system locales might not be available, so use minimum:
)
if [ "$CHOOSE_MIRROR" = 'net' ] ; then
- [ -n "$MIRROR" ] || MIRROR='ftp://ftp.de.debian.org/debian'
+ [ -n "$MIRROR" ] || MIRROR='http://cdn.debian.net/debian'
MIRROR="$(dialog --stdout --title "${PN}" --inputbox \
"Please enter Debian mirror you would like to use for installing packages." \
0 0 $MIRROR)"
fi
device="$1"
- device_map=/boot/grub/device.map
+ device_map=$(mktemp)
# create device.map
- if ! [ -f "$device_map" ] ; then
- echo 'quit' | grub --device-map="$device_map" 1>/dev/null 2>&1
+ if which grub >/dev/null 2>&1 ; then
+ echo 'quit' | grub --device-map="$device_map" >/dev/null 2>&1
+ elif which grub-mkdevicemap >/dev/null 2>&1 ; then
+ grub-mkdevicemap --no-floppy --device-map="$device_map" >/dev/null 2>&1
+ else
+ echo "Error: neither grub nor grub-mkdevicemap command found." >&2
+ return 1
fi
# based on code from d-i's trunk/packages/arch/i386/grub-installer/grub-installer:
- tmp_disk=`echo "$device" | sed -e 's%\([sh]d[a-z]\)[0-9]*$%\1%' \
+ tmp_disk=$(echo "$device" | sed -e 's%\(\(s\|h\|v\|xv\)d[a-z]\)[0-9]*$%\1%' \
-e 's%\(fd[0-9]*\)$%\1%' \
-e 's%/part[0-9]*$%/disc%' \
- -e 's%\(c[0-7]d[0-9]*\).*$%\1%'`
- tmp_part=`echo "$device" | sed -e 's%.*/[sh]d[a-z]\([0-9]*\)$%\1%' \
+ -e 's%\(c[0-7]d[0-9]*\).*$%\1%' \
+ -e 's%\(mmcblk[0-9]d[0-9]*\).*$%\1%' \
+ -e 's%\(/mapper/mpath[0-9]\+\)-part[0-9]\+$%\1%')
+ tmp_part=$(echo "$device" | sed -e 's%.*/\(s\|h\|v\|xv\)d[a-z]\([0-9]*\)$%\2%' \
-e 's%.*/fd[0-9]*$%%' \
-e 's%.*/floppy/[0-9]*$%%' \
-e 's%.*/\(disc\|part\([0-9]*\)\)$%\2%' \
- -e 's%.*c[0-7]d[0-9]*p*%%'`
+ -e 's%.*c[0-7]d[0-9]*p*%%' \
+ -e 's%.*mmcblk[0-9]d[0-9]*p%%' \
+ -e 's%.*/mapper/mpath[0-9]\+-part\([0-9]\+\)%\1%')
tmp_drive=$(grep -v '^#' $device_map | grep "$tmp_disk *$" | sed 's%.*\([hf]d[0-9][a-g0-9,]*\).*%\1%')
+ if [ -z "$tmp_drive" ]; then
+ echo "Error: $device does not have any corresponding BIOS drive." >&2
+ return 1
+ fi
+
case $1 in
/dev/[sh]d[a-z]) # we expect something like 'hd0'
echo "$tmp_drive"
;;
*) # we expect something like 'hd0,0'
- echo "$tmp_drive" | sed "s%$%,`expr $tmp_part - 1`%" # FIXME => md0
+ echo "$tmp_drive" | sed "s%$%,$(expr $tmp_part - 1)%" # FIXME => md0
;;
esac
+ rm -f "$device_map"
}
# }}}
TMPDEVICE=$(echo ${SELECTED_PARTITIONS} | awk '{print $1}') # use first disk only
GRUB="$(grubdevice ${TMPDEVICE%%[0-9]})" # like: hd0
GROOT="$(grubdevice ${TMPDEVICE})" # like: hd0,0
- echo "debug: GRUB = $GRUB - GROOT = $GROOT" >/tmp/debug # FIXME
fi
else
[ -n "$BOOT_PARTITION" ] && GRUB="$(grubdevice $BOOT_PARTITION)"
touch $CHROOT_VARIABLES
chmod 600 $CHROOT_VARIABLES # make sure nobody except root can read it
echo "# Configuration of ${PN}" > $CHROOT_VARIABLES
- [ -n "$ARCH" ] && echo "ARCH=$ARCH" >> $CHROOT_VARIABLES
- [ -n "$GROOT" ] && echo "GROOT=$GROOT" >> $CHROOT_VARIABLES
- [ -n "$GRUB" ] && echo "GRUB=$GRUB" >> $CHROOT_VARIABLES
- [ -n "$HOSTNAME" ] && echo "HOSTNAME=$HOSTNAME" >> $CHROOT_VARIABLES
- [ -n "$ISODIR" ] && echo "ISODIR=$ISO" >> $CHROOT_VARIABLES
- [ -n "$ISO" ] && echo "ISO=$ISO" >> $CHROOT_VARIABLES
- [ -n "$MIRROR" ] && echo "MIRROR=$MIRROR" >> $CHROOT_VARIABLES
+ [ -n "$ARCH" ] && echo "ARCH=$ARCH" >> $CHROOT_VARIABLES
+ [ -n "$GROOT" ] && echo "GROOT=$GROOT" >> $CHROOT_VARIABLES
+ [ -n "$GRUB" ] && echo "GRUB=$GRUB" >> $CHROOT_VARIABLES
+ [ -n "$HOSTNAME" ] && echo "HOSTNAME=$HOSTNAME" >> $CHROOT_VARIABLES
+ [ -n "$INSTALL_NOTES" ] && echo "INSTALL_NOTES=$INSTALL_NOTES" >> $CHROOT_VARIABLES
+ [ -n "$ISODIR" ] && echo "ISODIR=$ISO" >> $CHROOT_VARIABLES
+ [ -n "$ISO" ] && echo "ISO=$ISO" >> $CHROOT_VARIABLES
+ [ -n "$MIRROR" ] && echo "MIRROR=$MIRROR" >> $CHROOT_VARIABLES
[ -n "$KEEP_SRC_LIST" ] && echo "KEEP_SRC_LIST=$KEEP_SRC_LIST" >> $CHROOT_VARIABLES
- [ -n "$PACKAGES" ] && echo "PACKAGES=$PACKAGES" >> $CHROOT_VARIABLES
- [ -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 "$PACKAGES" ] && echo "PACKAGES=$PACKAGES" >> $CHROOT_VARIABLES
+ [ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES
+ [ -n "$TARGET" ] && echo "TARGET=$TARGET" >> $CHROOT_VARIABLES
+ [ -n "$TARGET_UUID" ] && echo "TARGET_UUID=$TARGET_UUID" >> $CHROOT_VARIABLES
cp $VERBOSE $CONFFILES/chroot-script $MNTPOINT/bin/chroot-script
chmod 755 $MNTPOINT/bin/chroot-script
sed -i "s#GRUB=.*#GRUB=\"$GRUB\"#" $MNTPOINT/etc/debootstrap/config
sed -i "s#GROOT=.*#GROOT=\"$GROOT\"#" $MNTPOINT/etc/debootstrap/config
+ # install notes:
+ if [ -n "$INSTALL_NOTES" ] ; then
+ [ -r "$INSTALL_NOTES" ] && cp "$INSTALL_NOTES" $MNTPOINT/etc/debootstrap/
+ fi
+
# package selection:
cp $VERBOSE ${_opt_packages:-$CONFFILES/packages} \
$MNTPOINT/etc/debootstrap/packages
}
# }}}
-# unmount $MNTPOINRT {{{
+# unmount $MNTPOINT {{{
umount_chroot() {
+
+ # display installation notes:
+ if [ -n "$INSTALL_NOTES" ] ; then
+ [ -r "${MNTPOINT}/${INSTALL_NOTES}" ] && cat "${MNTPOINT}/${INSTALL_NOTES}"
+ fi
+
if [ -n "$ISODIR" ] ; then
if grep -q "$ISODIR" /proc/mounts ; then
einfo "Unmount $MNTPOINT/$ISODIR"