X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=bac2cd51fab2e919a36ea064630b6549c53c29da;hp=a82aaafc7436dfa063f77ea3c802917bde729c89;hb=6f8ba91b9f1b033abe9cbdf2c6349f97e5ae0732;hpb=4fac6ee3c5b66fb3f070defb9ceb5ab4b158e679 diff --git a/grml-debootstrap b/grml-debootstrap index a82aaaf..bac2cd5 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -689,11 +689,13 @@ elif [ -n "$INTERACTIVE" ] ; then [ -n "$RELEASE" ] && INFOTEXT="$INFOTEXT Using release: $RELEASE" [ -n "$HOSTNAME" ] && INFOTEXT="$INFOTEXT - Using hostname $HOSTNAME" + Using hostname: $HOSTNAME" [ -n "$MIRROR" ] && INFOTEXT="$INFOTEXT Using mirror: $MIRROR" [ -n "$ISO" ] && INFOTEXT="$INFOTEXT Using ISO: $ISO" + [ -n "$ARCH" ] && INFOTEXT="$INFOTEXT + Using arch: $ARCH" INFOTEXT="$INFOTEXT @@ -704,7 +706,7 @@ Is this ok for you? Notice: selecting 'No' will exit ${PN}." [ $? -eq 0 ] || bailout 0 else # if not running automatic installation display configuration and prompt for execution: - einfo "$PN - Please recheck configuration before execution:" + einfo "$PN [${VERSION}] - Please recheck configuration before execution:" echo echo " Target: $TARGET" @@ -718,9 +720,10 @@ else # if not running automatic installation display configuration and prompt fo fi [ -n "$RELEASE" ] && echo " Using release: $RELEASE" - [ -n "$MIRROR" ] && echo " Using mirror: $MIRROR" [ -n "$HOSTNAME" ] && echo " Using hostname: $HOSTNAME" + [ -n "$MIRROR" ] && echo " Using mirror: $MIRROR" [ -n "$ISO" ] && echo " Using ISO: $ISO" + [ -n "$ARCH" ] && echo " Using arch: $ARCH" if [ -n "$VIRTUAL" ] ; then echo " Deploying as Virtual Machine." [ -n "$VMSIZE" ] && echo " Using Virtual Disk file with size of ${VMSIZE}." @@ -774,6 +777,17 @@ if [ -z "$TARGET" -o -n "$INTERACTIVE" ] ; then fi # }}} +# architecture setup {{{ +if [ -n "$ARCH" ] ; then + ARCHCMD="--arch $ARCH" + ARCHINFO=" (${ARCH})" +else + ARCH="$(dpkg --print-architecture)" + ARCHCMD="--arch $ARCH" + ARCHINFO=" (${ARCH})" +fi +# }}} + checkconfiguration # finally make sure at least $TARGET is set [the partition for the new system] {{{ @@ -825,24 +839,13 @@ else fi # }}} -# architecture setup {{{ -if [ -n "$ARCH" ] ; then - ARCHCMD="--arch $ARCH" - ARCHINFO=" (${ARCH})" -else - ARCH="$(dpkg --print-architecture)" - ARCHCMD="--arch $ARCH" - ARCHINFO=" (${ARCH})" -fi -# }}} - # make sure we have the right syntax when using an iso image {{{ if [ -n "$ISO" ] ; then case $ISO in file*) # do nothing ;; *) - ISO=file:$1 + ISO=file:$ISO ;; esac fi @@ -942,7 +945,7 @@ prepare_vm() { # if dm-mod isn't available then kpartx will fail with # "Is device-mapper driver missing from kernel? [...]" - if ! kpartx -av $TARGET >/dev/null 2>&1 ; then + if ! kpartx -av $TARGET >/dev/null 2>&1 || ! grep -q device-mapper /proc/misc >/dev/null 2>&1 ; then einfo "Device-mapper not ready yet, trying to load dm-mod module." modprobe dm-mod ; eend $? fi @@ -1032,19 +1035,33 @@ debootstrap_system() { fi 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 $? + : else - eerror "Error: $MNTPOINT not mounted, can not continue." - eend 1 + eerror "Error: $MNTPOINT not mounted, can not continue." + eend 1 ; exit 1 fi + + 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 + RC=$? + else + einfo "Executing: $DEBOOTSTRAP $ARCHCMD $KEYRING $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $ISO" + $DEBOOTSTRAP $ARCHCMD $KEYRING $DEBOOTSTRAP_OPT $RELEASE $MNTPOINT $ISO + RC=$? + fi + + if [ $RC -ne 0 ] ; then + if [ -r "$MNTPOINT/debootstrap/debootstrap.log" ] && \ + [ -s "$MNTPOINT/debootstrap/debootstrap.log" ] ; then + einfo "Presenting last ten lines of debootstrap.log:" + tail -10 $MNTPOINT/debootstrap/debootstrap.log + einfo "End of debootstrap.log" + fi + fi + + eend $RC } # }}} @@ -1203,18 +1220,29 @@ execute_scripts() { # execute chroot-script {{{ chrootscript() { if ! [ -r "$MNTPOINT/bin/chroot-script" ] ; then - mount_target + mount_target fi - if [ -x "$MNTPOINT/bin/chroot-script" ] ; then - einfo "Executing chroot-script now" - mount --bind /dev "$MNTPOINT"/dev - chroot "$MNTPOINT" /bin/chroot-script ; RC=$? - umount "$MNTPOINT"/dev - eend $RC + if ! [ -x "$MNTPOINT/bin/chroot-script" ] ; then + eerror "Fatal: $MNTPOINT/bin/chroot-script could not be found." + eend 1 else - eerror "Fatal: $MNTPOINT/bin/chroot-script could not be found." - eend 1 + einfo "Executing chroot-script now" + mount --bind /dev "$MNTPOINT"/dev + chroot "$MNTPOINT" /bin/chroot-script ; RC=$? + umount "$MNTPOINT"/dev + eend $RC + fi + + # finally get rid of chroot-script again, there's no good reason to + # keep it on the installed system + if grep -q GRML_CHROOT_SCRIPT_MARKER "${MNTPOINT}/bin/chroot-script" ; then + einfo "Removing chroot-script again" + rm -f "${MNTPOINT}/bin/chroot-script" + eend $? + else + einfo "Keeping chroot-script as string GRML_CHROOT_SCRIPT_MARKER could not be found" + eend 0 fi } # }}}