set -e
# global variables
-GRML_LIVE_VERSION='0.9.30'
+GRML_LIVE_VERSION='0.9.34-pre1'
PN="$(basename $0)"
CMDLINE="$0 $@"
SOURCES_LIST_FILE='/etc/grml/fai/apt/sources.list'
if ! [[ "$ARCH" == "i386" ]] ; then
log "Error: You specified the I386 class but are trying to build something else (AMD64?)."
eerror "Error: You specified the I386 class but are trying to build something else (AMD64?)."
- eerror "Tip: Either invoke grml-live with '-i i386' or adjust the architecture class. Exiting."
+ eerror "Tip: Either invoke grml-live with '-a i386' or adjust the architecture class. Exiting."
eend 1
bailout
fi
if ! [[ "$ARCH" == "amd64" ]] ; then
log "Error: You specified the AMD64 class but are trying to build something else (I386?)."
eerror "Error: You specified the AMD64 class but are trying to build something else (I386?)."
- eerror "Tip: Either invoke grml-live with '-i amd64' or adjust the architecture class. Exiting."
+ eerror "Tip: Either invoke grml-live with '-a amd64' or adjust the architecture class. Exiting."
eend 1
bailout
fi
fi # BUILD_DIRTY?
# }}}
+# package validator {{{
+CHECKLOG=/var/log/fai/$HOSTNAME/last
+# package validator
+if [ -r "$CHECKLOG/package_errors.log" ] && grep -q '[a-z]' "$CHECKLOG/package_errors.log" ; then
+
+ if [ -n "$EXIT_ON_MISSING_PACKAGES" ] ; then
+ eerror "The following packages were requested for installation but could not be processed:"
+ cat $CHECKLOG/package_errors.log
+ eerror "... exiting as requested via \$EXIT_ON_MISSING_PACKAGES."
+ eend 1
+ bailout 13
+ else
+ ewarn "The following packages were requested for installation but could not be processed:"
+ cat $CHECKLOG/package_errors.log
+ eend 0
+ fi
+fi
+# }}}
+
# BUILD_OUTPUT - execute arch specific stuff and squashfs {{{
[ -n "$BUILD_OUTPUT" ] || BUILD_OUTPUT="$OUTPUT/grml_cd"
mkdir -p "$BUILD_OUTPUT" || bailout 6 "Problem with creating $BUILD_OUTPUT for stage ARCH"
log "Installing /boot/memtest86+.bin"
cp /boot/memtest86+.bin "$BUILD_OUTPUT"/boot/addons/memtest
else
- ewarn "No memtest binary found, skipping."
- log "No memtest binary found, skipping."
+ ewarn "No memtest binary found (either install package grml-live-addons or memtest86+), skipping."
+ log "No memtest binary found (either install package grml-live-addons or memtest86+), skipping."
eend 0
fi
fi
else
log "Creating hybrid ISO file with isohybrid method"
einfo "Creating hybrid ISO file with isohybrid method"
+ # Notes for consideration:
+ # "-entry 4 -type 1c"
+ # * using 4 as the partition number is supposed to help with BIOSes
+ # that only support USB-Zip boot
+ # * using 1c (i.e. hidden FAT32 LBA), instead of the default 0x17
+ # (hidden NTFS, IIRC), as the partition type is sometimes needed
+ # to get the BIOS even look at the partition created by isohybrid
isohybrid "${ISO_OUTPUT}/${ISO_NAME}"
eend $?
fi
else
log "Creating hybrid ISO file with manifold method"
einfo "Creating hybrid ISO file with manifold method"
- echo 1 63 | \
- mksh /usr/share/grml-live/scripts/bootgrub.mksh -A -M 1 -p 0x83 -g $cyls:16:32 | \
- cat - boot/grub/core.img | \
- dd conv=notrunc of="${ISO_OUTPUT}/${ISO_NAME}" conv=notrunc 2>/dev/null
+ (
+ # 512 bytes: MBR, partition table, load GRUB 2
+ echo 4 63 | mksh /usr/share/grml-live/scripts/bootgrub.mksh -A -M 4:0x96 -g $cyls:16:32
+ # pad to a whole of 2048 bytes (one CD sector)
+ dd if=/dev/zero bs=512 count=3 2>/dev/null
+ # append GRUB 2 (must be <=30720 bytes)
+ cat boot/grub/core.img
+ ) | dd of="${ISO_OUTPUT}/${ISO_NAME}" conv=notrunc 2>/dev/null
eend $?
fi
fi
# finalize {{{
[ -n "$start_seconds" ] && SECONDS="$[$(cut -d . -f 1 /proc/uptime)-$start_seconds]" || SECONDS="unknown"
-einfo "Successfully finished execution of $PN [running ${SECONDS} seconds]" ; eend 0
-log "Successfully finished execution of $PN [running ${SECONDS} seconds]"
+einfo "Successfully finished execution of $PN [$(date) - running ${SECONDS} seconds]" ; eend 0
+log "Successfully finished execution of $PN [$(date) - running ${SECONDS} seconds]"
bailout 0
# }}}