X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=grml-live;h=87e53033d1b7fbfef31d190195a99c350c909f3f;hp=525011dead9837211fc85c6e56a4301534380c96;hb=11baa336b55b8ddec2c3e830013a4fb1d8bd07f8;hpb=7c309e00912077acf0b15bce0f27eec4dd055058 diff --git a/grml-live b/grml-live index 525011d..87e5303 100755 --- a/grml-live +++ b/grml-live @@ -46,6 +46,7 @@ Usage: $PN [options, see as follows] -C configuration file for grml-live -d use specified date instead of build time as date of release -D use specified configuration directory instead of /etc/grml/fai + -e extract ISO and squashfs contents from iso_name -F force execution without prompting -g set the grml flavour name -h display short usage information and exit @@ -148,6 +149,7 @@ LIVE_CONF=/etc/grml/grml-live.conf # umount all directories {{{ umount_all() { # make sure we don't leave any mounts - FAI doesn't remove them always + umount $CHROOT_OUTPUT/proc/sys/fs/binfmt_misc 2>/dev/null || /bin/true umount $CHROOT_OUTPUT/proc 2>/dev/null || /bin/true umount $CHROOT_OUTPUT/sys 2>/dev/null || /bin/true umount $CHROOT_OUTPUT/dev/pts 2>/dev/null || /bin/true @@ -289,7 +291,7 @@ copy_addon_file() { # }}} # command line parsing {{{ -while getopts "a:C:c:d:D:g:i:I:o:r:s:t:T:U:v:AbBFnNqQuVz" opt; do +while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:T:U:v:AbBFnNqQuVz" opt; do case "$opt" in a) ARCH="$OPTARG" ;; A) PACK_ARTIFACTS=1 ;; @@ -299,6 +301,7 @@ while getopts "a:C:c:d:D:g:i:I:o:r:s:t:T:U:v:AbBFnNqQuVz" opt; do C) LOCAL_CONFIG="$(readlink -f $OPTARG)" ;; d) DATE="$OPTARG" ;; D) GRML_FAI_CONFIG="$(readlink -f $OPTARG)" ;; + e) EXTRACT_ISO_NAME="$(readlink -f $OPTARG)" ;; g) GRML_NAME="$OPTARG" ;; i) ISO_NAME="$OPTARG" ;; I) CHROOT_INSTALL="$OPTARG" ;; @@ -414,6 +417,7 @@ if [ -z "$FORCE" ] ; then [ -n "$LOCAL_CONFIG" ] && echo " Configuration: $LOCAL_CONFIG" [ -n "$GRML_FAI_CONFIG" ] && echo " Config directory: $GRML_FAI_CONFIG" echo " main directory: $OUTPUT" + [ -n "$EXTRACT_ISO_NAME" ] && echo " Extract ISO: $EXTRACT_ISO_NAME" [ -n "$UNPACK_CHROOT" ] && echo " Chroot from: $UNPACK_CHROOT" [ -n "$CHROOT_OUTPUT" ] && echo " Chroot target: $CHROOT_OUTPUT" [ -n "$BUILD_OUTPUT" ] && echo " Build target: $BUILD_OUTPUT" @@ -541,6 +545,35 @@ if [ -n "${UNPACK_CHROOT}" ]; then fi # }}} +# unpack iso/squashfs {{{ +extract_iso() { +if [ -n "$EXTRACT_ISO_NAME" ]; then + log "Unpacking ISO from ${EXTRACT_ISO_NAME}" + einfo "Unpacking ISO from ${EXTRACT_ISO_NAME}" + local mountpoint=$(mktemp -d) + local rc=0 + mount -o loop "${EXTRACT_ISO_NAME}" "$mountpoint" ; rc=$? + if [ "$rc" != 0 ]; then + rmdir "$mountpoint" + log "mount failed" + eerror "mount failed" + eend 1 + bailout 1 + fi + unsquashfs -d "${CHROOT_OUTPUT}" "${mountpoint}"/live/*.squashfs ; rc=$? + umount "$mountpoint" + rmdir "$mountpoint" + if [ "$rc" != 0 ]; then + log "unsquashfs failed" + eerror "unsquashfs failed" + eend 1 + bailout 1 + fi +fi +} +extract_iso +# }}} + # cleanup CHROOT_ARCHIVE now {{{ if [ -n "${PACK_ARTIFACTS}" ]; then # can't do this earlier, as UNPACK_CHROOT might point to CHROOT_ARCHIVE @@ -1380,6 +1413,7 @@ create_netbootpackage() { mkdir -p "${WORKING_DIR}/pxelinux.cfg" if tar -C "$OUTPUTDIR" -jcf "${OUTPUT_FILE}" "grml_netboot_package_${GRML_NAME}_${VERSION}" ; then + sha1sum "${OUTPUT_FILE}" > "${OUTPUT_FILE}.sha1" einfo "Generated netboot package ${OUTPUT_FILE}" ; eend 0 rm -rf "${OUTPUTDIR}" else