X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=grml-live;h=28c3e842d6f52de148560ca2676e058323ebac77;hp=923c934396ea7280cc3fb4db1f3842b487e46524;hb=8136c87214c11d1edc88029c40b8611fc7491f72;hpb=e1381625ad6dd4600b8b61ed296d1351d55c07b9 diff --git a/grml-live b/grml-live index 923c934..28c3e84 100755 --- a/grml-live +++ b/grml-live @@ -81,13 +81,13 @@ More details: man grml-live + /usr/share/doc/grml-live/grml-live.html Please send your bug reports and feedback to the grml-team: http://grml.org/bugs/ " + [ "$(id -u 2>/dev/null)" != 0 ] && echo "Please notice that this script requires root permissions." } # make sure it's possible to get usage information without being # root or actually executing the script if [ "$1" = '-h' -o "$1" = '--help' ] ; then usage - [ "$(id -u 2>/dev/null)" != 0 ] && echo "Please notice that this script requires root permissions." exit 0 fi # }}} @@ -152,6 +152,7 @@ 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/run 2>/dev/null || /bin/true umount $CHROOT_OUTPUT/sys 2>/dev/null || /bin/true umount $CHROOT_OUTPUT/dev/pts 2>/dev/null || /bin/true umount $CHROOT_OUTPUT/dev 2>/dev/null || /bin/true @@ -291,7 +292,7 @@ copy_addon_file() { # }}} # command line parsing {{{ -while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:U:v:AbBFnNqQuVz" opt; do +while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:U:v:AbBFhnNqQuVz" opt; do case "$opt" in a) ARCH="$OPTARG" ;; A) CLEAN_ARTIFACTS=1 ;; @@ -303,6 +304,7 @@ while getopts "a:C:c:d:D:e:g:i:I:o:r:s:t:U:v:AbBFnNqQuVz" opt; do D) GRML_FAI_CONFIG="$(readlink -f $OPTARG)" ;; e) EXTRACT_ISO_NAME="$(readlink -f $OPTARG)" ;; g) GRML_NAME="$OPTARG" ;; + h) usage ; bailout 0 ;; i) ISO_NAME="$OPTARG" ;; I) CHROOT_INSTALL="$OPTARG" ;; n) SKIP_MKISOFS=1 ;; @@ -355,7 +357,7 @@ fi [ -n "$BOOT_METHOD" ] || BOOT_METHOD='isolinux' [ -n "$CLASSES" ] || CLASSES="GRMLBASE,GRML_FULL,$(echo ${ARCH} | tr 'a-z' 'A-Z')" [ -n "$DATE" ] || DATE="$(date +%Y-%m-%d)" -[ -n "$DISTRI_INFO" ] || DISTRI_INFO='Grml - Live Linux for system administrators ' +[ -n "$DISTRI_INFO" ] || DISTRI_INFO='Grml - Live Linux for system administrators' [ -n "$DISTRI_NAME" ] || DISTRI_NAME="grml" [ -n "$DISTRI_SPLASH" ] || DISTRI_SPLASH='grml.png' [ -n "$FORCE_ISO_REBUILD" ] || FORCE_ISO_REBUILD="false" @@ -366,7 +368,7 @@ fi [ -n "$NFSROOT_CONF" ] || NFSROOT_CONF="${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" [ -n "$RELEASENAME" ] || RELEASENAME='grml-live rocks' [ -n "$SQUASHFS_EXCLUDES_FILE" ] || SQUASHFS_EXCLUDES_FILE="${GRML_FAI_CONFIG}/config/grml/squashfs-excludes" -[ -n "$SUITE" ] || SUITE='squeeze' +[ -n "$SUITE" ] || SUITE='testing' [ -n "$TEMPLATE_DIRECTORY" ] || TEMPLATE_DIRECTORY='/usr/share/grml-live/templates' [ -n "$USERNAME" ] || USERNAME='grml' [ -n "$VERSION" ] || VERSION='0.0.1' @@ -543,7 +545,7 @@ if [ -n "$EXTRACT_ISO_NAME" ]; then eend 1 bailout 1 fi - unsquashfs -d "${CHROOT_OUTPUT}" "${mountpoint}"/live/*.squashfs ; rc=$? + unsquashfs -d "${CHROOT_OUTPUT}" "${mountpoint}"/live/*/*.squashfs ; rc=$? umount "$mountpoint" rmdir "$mountpoint" if [ "$rc" != 0 ]; then @@ -824,6 +826,17 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then bailout 11 fi + # EFI boot files + if [ -r "${CHROOT_OUTPUT}/boot/efi.img" -a -r "${CHROOT_OUTPUT}/boot/bootx64.efi" ] ; then + einfo "Moving EFI boot files into ISO path." + log "Moving EFI boot files into ISO path." + RC=$0 + mv "${CHROOT_OUTPUT}/boot/efi.img" "${BUILD_OUTPUT}/boot/" || RC=$? + mkdir -p "${BUILD_OUTPUT}/efi/boot/" || RC=$? + mv "${CHROOT_OUTPUT}/boot/bootx64.efi" "${BUILD_OUTPUT}/efi/boot/bootx64.efi" || RC=$? + eend $? + fi + [ -n "$TEMPLATE_DIRECTORY" ] || TEMPLATE_DIRECTORY='/usr/share/grml-live/templates' if ! [ -d "${TEMPLATE_DIRECTORY}"/boot ] ; then log "Error: ${TEMPLATE_DIRECTORY}/boot does not exist. Exiting." @@ -891,6 +904,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/*-pc/*.lst "${BUILD_OUTPUT}"/boot/grub/ cp -a "${CHROOT_OUTPUT}"/usr/share/grub/ascii.pf2 "${BUILD_OUTPUT}"/boot/grub/ cp -a "${CHROOT_OUTPUT}"/boot/grub/core.img "${BUILD_OUTPUT}"/boot/grub/ + cp -a "${CHROOT_OUTPUT}"/boot/grub/grub.img "${BUILD_OUTPUT}"/boot/grub/ if ! [ -d "${TEMPLATE_DIRECTORY}"/GRML ] ; then log "Error: ${TEMPLATE_DIRECTORY}/GRML does not exist. Exiting." @@ -898,17 +912,17 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then bailout 9 fi - [ -d "$BUILD_OUTPUT"/GRML ] || mkdir "$BUILD_OUTPUT"/GRML - cp -a ${TEMPLATE_DIRECTORY}/GRML/* "$BUILD_OUTPUT"/GRML/ + mkdir -p "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/ + cp -a ${TEMPLATE_DIRECTORY}/GRML/* "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/ # adjust boot splash information: RELEASE_INFO="$GRML_NAME $VERSION - Release Codename $RELEASENAME" RELEASE_INFO="$(cut_string 68 "$RELEASE_INFO")" RELEASE_INFO="$(extend_string_end 68 "$RELEASE_INFO")" - if [ -r "$BUILD_OUTPUT"/GRML/grml-version ] ; then - sed -i "s/%RELEASE_INFO%/$GRML_NAME $VERSION - $RELEASENAME/" "$BUILD_OUTPUT"/GRML/grml-version - sed -i "s/%DATE%/$DATE/" "$BUILD_OUTPUT"/GRML/grml-version + if [ -r "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/grml-version ] ; then + sed -i "s/%RELEASE_INFO%/$GRML_NAME $VERSION - $RELEASENAME/" "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/grml-version + sed -i "s/%DATE%/$DATE/" "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/grml-version fi # make sure the squashfs filename is set accordingly: @@ -1041,8 +1055,8 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then if ! [ -r "$DPKG_LIST" ] ; then ewarn "$DPKG_LIST could not be read, ignoring to store package information on ISO therefore." else - einfo "Storing package list information as /GRML/${GRML_NAME}-packages.txt on ISO." - cp "$DPKG_LIST" "${BUILD_OUTPUT}/GRML/${GRML_NAME}-packages.txt" + einfo "Storing package list information as /GRML/${GRML_NAME}/packages.txt on ISO." + cp "$DPKG_LIST" "${BUILD_OUTPUT}"/GRML/"${GRML_NAME}"/packages.txt eend $? fi @@ -1083,7 +1097,7 @@ elif [ -n "$SKIP_MKSQUASHFS" ] ; then log "Skipping stage 'squashfs' as requested via option -q or -N" ewarn "Skipping stage 'squashfs' as requested via option -q or -N" ; eend 0 else - [ -d "$BUILD_OUTPUT"/live ] || mkdir "$BUILD_OUTPUT"/live + mkdir -p "$BUILD_OUTPUT"/live/"${GRML_NAME}"/ # make sure we don't leave (even an empty) base.tgz: [ -f "$CHROOT_OUTPUT/base.tgz" ] && rm -f "$CHROOT_OUTPUT/base.tgz" @@ -1132,11 +1146,11 @@ else [ -n "$SQUASHFS_INFO_MSG" ] && SQUASHFS_INFO_MSG="using options: $SQUASHFS_INFO_MSG" einfo "Squashfs build information: running binary $SQUASHFS_BINARY $SQUASHFS_INFO_MSG" - log "$SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/${GRML_NAME}.squashfs -noappend $SQUASHFS_OPTIONS" + log "$SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/${GRML_NAME}/${GRML_NAME}.squashfs -noappend $SQUASHFS_OPTIONS" - if $SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/"${GRML_NAME}".squashfs \ + if $SQUASHFS_BINARY $CHROOT_OUTPUT/ $BUILD_OUTPUT/live/"${GRML_NAME}"/"${GRML_NAME}".squashfs \ -noappend $SQUASHFS_OPTIONS 2>"${SQUASHFS_STDERR}" ; then - echo "${GRML_NAME}.squashfs" > $BUILD_OUTPUT/live/filesystem.module + echo "${GRML_NAME}.squashfs" > $BUILD_OUTPUT/live/"${GRML_NAME}"/filesystem.module log "Finished execution of stage 'squashfs' [$(date)]" einfo "Finished execution of stage 'squashfs'" ; eend 0 else @@ -1153,7 +1167,7 @@ fi # create md5sum file: if [ -z "$BOOTSTRAP_ONLY" ] ; then - ( cd $BUILD_OUTPUT/GRML && + ( cd $BUILD_OUTPUT/GRML/"${GRML_NAME}" && find .. -type f -not -name md5sums -not -name isolinux.bin -exec md5sum {} \; > md5sums ) fi # }}} @@ -1204,47 +1218,28 @@ else bailout fi - case "$ARCH" in - amd64) - # using -eltorito-alt-boot is limited to xorriso for now - case "$MKISOFS" in - xorriso*) - einfo "Using xorriso for ISO generation." ; eend 0 - eindent - - if ! dpkg --compare-versions $(dpkg-query -W -f='${Version}\n' xorriso 2>/dev/null) gt-nl 1.1.6-1 ; then - log "Disabling (U)EFI boot support since xorriso version is not recent enough." - ewarn "Disabling (U)EFI boot support since xorriso version is not recent enough." ; eend 0 - else - log "xorriso with -eltorito-alt-boot present, enabling (U)EFI boot support." - einfo "xorriso with -eltorito-alt-boot present, enabling (U)EFI boot support." ; eend 0 - - if [ -r "${CHROOT_OUTPUT}/var/lib/grml_live_efi.img" ] ; then - einfo "Found /var/lib/grml_live_efi.img - moving to /boot/efi.img for ISO." - log "Found /var/lib/grml_live_efi.img - moving to /boot/efi.img for ISO." - mv "${CHROOT_OUTPUT}/var/lib/grml_live_efi.img" "${BUILD_OUTPUT}/boot/efi.img" - eend $? - fi - - if [ -r "${CHROOT_OUTPUT}/var/lib/grml_live_bootx64.efi" ] ; then - einfo "Found /var/lib/grml_live_bootx64.efi - moving to /efi/boot/bootx64.efi for ISO" - log "Found /var/lib/grml_live_bootx64.efi - moving to /efi/boot/bootx64.efi for ISO" - mkdir -p "${BUILD_OUTPUT}/efi/boot/" - mv "${CHROOT_OUTPUT}/var/lib/grml_live_bootx64.efi" "${BUILD_OUTPUT}/efi/boot/bootx64.efi" - eend $? - fi - - if [ -r "${BUILD_OUTPUT}"/boot/efi.img ] ; then - einfo "/boot/efi.img found and amd64 architecture present, extending boot arguments." - log "/boot/efi.img found and amd64 architecture present, extending boot arguments." - BOOT_ARGS="$BOOT_ARGS -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot" - eend $? - fi - fi + einfo "Using ${MKISOFS} to build ISO." ; eend 0 + case "${ARCH}-${MKISOFS}" in + # using -eltorito-alt-boot is limited to xorriso for now + amd64-xorriso*) + eindent + + if ! dpkg --compare-versions $(dpkg-query -W -f='${Version}\n' xorriso 2>/dev/null) gt-nl 1.1.6-1 ; then + log "Disabling (U)EFI boot support because xorriso version is too old." + ewarn "Disabling (U)EFI boot support because xorriso version is too old." ; eend 0 + else + if [ -r "${BUILD_OUTPUT}"/boot/efi.img ] ; then + einfo "Enabling (U)EFI boot." + log "Enabling (U)EFI boot." + BOOT_ARGS="$BOOT_ARGS -boot-info-table -eltorito-alt-boot -e boot/efi.img -no-emul-boot" + eend $? + else + log "Disabling (U)EFI boot support because /boot/efi.img is missing." + ewarn "Disabling (U)EFI boot support because /boot/efi.img is missing." ; eend 0 + fi + fi - eoutdent - ;; - esac + eoutdent ;; esac @@ -1395,7 +1390,10 @@ create_netbootpackage() { fi if tar -C "$OUTPUTDIR" -jcf "${OUTPUT_FILE}" "grml_netboot_package_${GRML_NAME}_${VERSION}" ; then - sha1sum "${OUTPUT_FILE}" > "${OUTPUT_FILE}.sha1" + ( + cd $(dirname "${OUTPUT_FILE}") + sha1sum $(basename "${OUTPUT_FILE}") > "${OUTPUT_FILE}.sha1" + ) einfo "Generated netboot package ${OUTPUT_FILE}" ; eend 0 rm -rf "${OUTPUTDIR}" else