X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=grml-live;h=e2719b189d4500a7f67f07d10607da4c308f9394;hp=3bcf349c18ca2256c2c9a89e6c6e903da6ccf619;hb=b18889f0d17b02be6477e18bdc6657f374d60631;hpb=6d72f5e0c3eb705b3c6479a22377c0b4b7f498d0 diff --git a/grml-live b/grml-live index 3bcf349..e2719b1 100755 --- a/grml-live +++ b/grml-live @@ -355,7 +355,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" @@ -543,7 +543,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 +824,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." @@ -883,7 +894,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then if ! [ -d "${BUILD_OUTPUT}/boot/grub" ] ; then mkdir -p "${BUILD_OUTPUT}/boot/grub" fi - cp ${TEMPLATE_DIRECTORY}/boot/grub/* "$BUILD_OUTPUT"/boot/grub/ + cp -a ${TEMPLATE_DIRECTORY}/boot/grub/* "$BUILD_OUTPUT"/boot/grub/ # copy grub files from target cp -a "${CHROOT_OUTPUT}"/usr/lib/grub/*-pc/*.mod "${BUILD_OUTPUT}"/boot/grub/ @@ -891,6 +902,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 +910,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: @@ -929,7 +941,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then # adjust all variables in the templates with the according distribution information for file in "${BUILD_OUTPUT}"/boot/isolinux/*.cfg "${BUILD_OUTPUT}"/boot/isolinux/*.msg \ "${BUILD_OUTPUT}"/boot/grub/* ; do - if [ -r "${file}" ] ; then + if [ -r "${file}" ] && [ -f "${file}" ] ; then sed -i "s/%ARCH%/$ARCH/g" "${file}" sed -i "s/%DATE%/$DATE/g" "${file}" sed -i "s/%DISTRI_INFO%/$DISTRI_INFO/g" "${file}" @@ -1041,8 +1053,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 +1095,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 +1144,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 +1165,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 +1216,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