X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=grml-live;h=1bb84b6bca0ad77434c69008e0bdcd753e9fb67d;hb=75e65f36279dcb8941137bc45c806392b27e3649;hp=08198bcc19ee12d5a765b3c23400d8a60d03bce7;hpb=581da7443c68c362a7677c905ab5c63eb23c5b73;p=grml-live.git diff --git a/grml-live b/grml-live index 08198bc..1bb84b6 100755 --- a/grml-live +++ b/grml-live @@ -221,7 +221,6 @@ bailout() { # get rid of automatically generated conffiles rm -f ${GRML_FAI_CONFIG}/nfsroot.conf - rm -f ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf if [ -n "$CHOWN_USER" ]; then log "Setting ownership" @@ -337,6 +336,19 @@ adjust_boot_files() { exit 1 fi + local release_info + if [ -n "${RELEASE_INFO:-}" ] ; then + release_info="${RELEASE_INFO}" + else + ewarn "Variable RELEASE_INFO is unset, applying fallback for usage in adjust_boot_files." ; eend 1 + release_info="$GRML_NAME $VERSION - Release Codename $RELEASENAME" + fi + + # ensure this has a specific length + local fixed_release_info + fixed_release_info="$(cut_string 68 "$release_info")" + fixed_release_info="$(extend_string_end 68 "$fixed_release_info")" + for file in "$@" ; do if [ -r "${file}" ] && [ -f "${file}" ] ; then sed -i "s/%ARCH%/$ARCH/g" "${file}" @@ -345,16 +357,8 @@ adjust_boot_files() { sed -i "s/%DISTRI_NAME%/$DISTRI_NAME/g" "${file}" sed -i "s/%DISTRI_SPLASH%/$DISTRI_SPLASH/g" "${file}" sed -i "s/%GRML_NAME%/$GRML_NAME/g" "${file}" - if [ -n "${fixed_squashfs_name}" ] ; then - sed -i "s/%SQUASHFS_NAME%/${fixed_squashfs_name}/g" "${file}" - else - ewarn "Variable fixed_squashfs_name is unset, can't adjust %SQUASHFS_NAME% in templates." ; eend 1 - fi - if [ -n "${fixed_release_info}" ] ; then - sed -i "s/%RELEASE_INFO%/${fixed_release_info}/g" "${file}" - else - ewarn "Variable fixed_release_info is unset, can't adjust %RELEASE_INFO% in templates." ; eend 1 - fi + sed -i "s/%SQUASHFS_NAME%/$SQUASHFS_NAME/g" "${file}" + sed -i "s/%RELEASE_INFO%/$fixed_release_info/g" "${file}" sed -i "s/%SHORT_NAME%/$SHORT_NAME/g" "${file}" sed -i "s/%VERSION%/$VERSION/g" "${file}" if [ -n "${BOOT_FILE}" ] ; then @@ -620,7 +624,7 @@ einfo "Logging actions to logfile $LOGFILE" # dump config variables into file, for script access {{{ CONFIGDUMP=$(mktemp) -set | egrep \ +set | grep -E \ '^(GRML_NAME|RELEASENAME|DATE|VERSION|SUITE|ARCH|DISTRI_NAME|USERNAME|HOSTNAME|APT_PROXY)=' \ > ${CONFIGDUMP} # }}} @@ -707,16 +711,7 @@ if [ -z "$FAI_DEBOOTSTRAP" ] ; then fi if [ -z "$FAI_DEBOOTSTRAP_OPTS" ] ; then - FAI_DEBOOTSTRAP_OPTS="--exclude=info,tasksel,tasksel-data --include=aptitude --arch $ARCH --no-merged-usr" -fi - -# create backup of old (not yet automatically generated) config file -if [ -f "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" ] ; then - if ! grep -q 'This is an automatically generated file by grml-live' "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" ; then - ewarn "Found old ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf - moving to ${GRML_FAI_CONFIG}/make-fai-nfsroot.conf.outdated" - mv "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf" "${GRML_FAI_CONFIG}/make-fai-nfsroot.conf.outdated" - eend $? - fi + FAI_DEBOOTSTRAP_OPTS="--exclude=info,tasksel,tasksel-data,isc-dhcp-client,isc-dhcp-common --include=aptitude --arch $ARCH" fi echo "# This is an automatically generated file by grml-live. @@ -724,8 +719,6 @@ echo "# This is an automatically generated file by grml-live. FAI_DEBOOTSTRAP=\"$FAI_DEBOOTSTRAP\" FAI_DEBOOTSTRAP_OPTS=\"$FAI_DEBOOTSTRAP_OPTS\" # EOF " > "${GRML_FAI_CONFIG}/nfsroot.conf" -# support FAI <=3.4.8, versions >=4.0 use nfsroot.conf -( cd ${GRML_FAI_CONFIG} && ln -sf nfsroot.conf make-fai-nfsroot.conf ) # }}} # CHROOT_OUTPUT - execute FAI {{{ @@ -910,6 +903,14 @@ grub_setup() { BOOTX32="/boot/bootia32.efi" EFI_IMG="/boot/efi.img" + local efi_size + if [[ "${SECURE_BOOT:-}" == "disable" ]] || [[ "${ARCH:-}" == "i386" ]] ; then + efi_size='4M' + else + # e.g. templates/EFI/debian for Secure Boot has >4MB and needs more space + efi_size='8M' + fi + if [[ "$ARCH" == "amd64" ]] ; then # important: this depends on execution of ${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/45-grub-images if ! [ -r "${CHROOT_OUTPUT}/${BOOTX64}" ] ; then @@ -920,7 +921,7 @@ grub_setup() { bailout 50 fi - dd if=/dev/zero of="${CHROOT_OUTPUT}/${EFI_IMG}" bs=4M count=1 2>/dev/null || bailout 50 + dd if=/dev/zero of="${CHROOT_OUTPUT}/${EFI_IMG}" bs="${efi_size}" count=1 2>/dev/null || bailout 50 mkfs.vfat -n GRML "${CHROOT_OUTPUT}/${EFI_IMG}" >/dev/null || bailout 51 mmd -i "${CHROOT_OUTPUT}/${EFI_IMG}" ::EFI || bailout 52 mmd -i "${CHROOT_OUTPUT}/${EFI_IMG}" ::EFI/BOOT || bailout 52 @@ -999,7 +1000,7 @@ grub_setup() { bailout 50 fi - dd if=/dev/zero of="${CHROOT_OUTPUT}/${EFI_IMG}" bs=4M count=1 2>/dev/null || bailout 50 + dd if=/dev/zero of="${CHROOT_OUTPUT}/${EFI_IMG}" bs="${efi_size}" count=1 2>/dev/null || bailout 50 mkfs.vfat -n GRML "${CHROOT_OUTPUT}/${EFI_IMG}" >/dev/null || bailout 51 mmd -i "${CHROOT_OUTPUT}/${EFI_IMG}" ::EFI || bailout 52 mmd -i "${CHROOT_OUTPUT}/${EFI_IMG}" ::EFI/BOOT || bailout 52 @@ -1024,6 +1025,10 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then mkdir -p "$BUILD_OUTPUT"/boot/isolinux mkdir -p "$BUILD_OUTPUT"/boot/"${SHORT_NAME}" + # this is a variable we're using for adjusting boot templates, not only in + # adjust_boot_files though, so set here + RELEASE_INFO="$GRML_NAME $VERSION - Release Codename $RELEASENAME" + # if we don't have an initrd we a) can't boot and b) there was an error # during build, so check for the file: INITRD="$(ls $CHROOT_OUTPUT/boot/initrd* 2>/dev/null| grep -v '.bak$' | sort -r | head -1)" @@ -1143,7 +1148,34 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then copy_addon_file ipxe.lkrn /usr/lib/ipxe addons copy_addon_file ipxe.efi /usr/lib/ipxe addons copy_addon_file pci.ids /usr/share/misc addons + + # memtest86+ <=5.01-3.1 copy_addon_file memtest86+.bin /boot addons + # make memtest filename FAT16/8.3 compatible + if [ -r "${BUILD_OUTPUT}/boot/addons/memtest86+.bin" ] ; then + mv "${BUILD_OUTPUT}/boot/addons/memtest86+.bin" \ + "${BUILD_OUTPUT}/boot/addons/memtest" + fi + + # memtest86+ >=6.00-1 + copy_addon_file memtest86+x32.bin /boot addons + copy_addon_file memtest86+x32.efi /boot addons + copy_addon_file memtest86+x64.bin /boot addons + copy_addon_file memtest86+x64.efi /boot addons + + # provide memtest86+ >=6.00-1 files as "memtest" file + # for BIOS boot in isolinux/syslinux + if ! [ -r "${BUILD_OUTPUT}/boot/addons/memtest" ] ; then + if [[ "$ARCH" == "amd64" ]] ; then + copy_addon_file memtest86+x64.bin /boot addons + mv "${BUILD_OUTPUT}/boot/addons/memtest86+x64.bin" \ + "${BUILD_OUTPUT}/boot/addons/memtest" + elif [[ "$ARCH" == "i386" ]] ; then + copy_addon_file memtest86+x32.bin /boot addons + mv "${BUILD_OUTPUT}/boot/addons/memtest86+x32.bin" \ + "${BUILD_OUTPUT}/boot/addons/memtest" + fi + fi # since syslinux(-common) v3:6.03~pre1+dfsg-4 the files are in a # different directory :( @@ -1158,17 +1190,13 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then copy_addon_file memdisk /usr/lib/syslinux addons - eend 0 - - # make memtest filename FAT16/8.3 compatible - mv "${BUILD_OUTPUT}/boot/addons/memtest86+.bin" \ - "${BUILD_OUTPUT}/boot/addons/memtest" - # copy only files so we can handle bsd4grml on its own for file in ${TEMPLATE_DIRECTORY}/boot/addons/* ; do test -f $file && cp $file "$BUILD_OUTPUT"/boot/addons/ done + eend 0 + if [ -n "$NO_ADDONS_BSD4GRML" ] ; then log "Skipping installation of bsd4grml as requested via \$NO_ADDONS_BSD4GRML." einfo "Skipping installation of bsd4grml as requested via \$NO_ADDONS_BSD4GRML."; eend 0 @@ -1223,14 +1251,9 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then mkdir -p "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/ cp -a ${TEMPLATE_DIRECTORY}/GRML/* "$BUILD_OUTPUT"/GRML/"${GRML_NAME}"/ - # adjust boot splash information, as used within adjust_boot_files() - RELEASE_INFO="$GRML_NAME $VERSION - Release Codename $RELEASENAME" - fixed_release_info="$(cut_string 68 "$RELEASE_INFO")" - fixed_release_info="$(extend_string_end 68 "$fixed_release_info")" - 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 + sed -i "s/%RELEASE_INFO%/$RELEASE_INFO/" "$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: @@ -1325,7 +1348,7 @@ if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then fi if [ -e "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 ]; then - sed -i "s/%RELEASE_INFO%/$GRML_NAME $VERSION - $RELEASENAME/" "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 + sed -i "s/%RELEASE_INFO%/$RELEASE_INFO/" "$BUILD_OUTPUT"/boot/addons/bsd4grml/boot.6 fi DPKG_LIST="/var/log/fai/$HOSTNAME/last/dpkg.list" # the dpkg --list output of the chroot