summaryrefslogtreecommitdiffstats
path: root/system-build/scripts/build/binary_iso
diff options
context:
space:
mode:
Diffstat (limited to 'system-build/scripts/build/binary_iso')
-rwxr-xr-xsystem-build/scripts/build/binary_iso220
1 files changed, 220 insertions, 0 deletions
diff --git a/system-build/scripts/build/binary_iso b/system-build/scripts/build/binary_iso
new file mode 100755
index 0000000..bd659a2
--- /dev/null
+++ b/system-build/scripts/build/binary_iso
@@ -0,0 +1,220 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
+##
+## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
+## This is free software, and you are welcome to redistribute it
+## under certain conditions; see COPYING for details.
+
+
+set -e
+
+# Including common functions
+[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh
+
+# Setting static variables
+DESCRIPTION="$(Echo 'build iso binary image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source
+Set_defaults
+
+case "${LIVE_IMAGE_TYPE}" in
+ iso)
+ IMAGE="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.iso"
+ ;;
+
+ iso-hybrid)
+ IMAGE="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.hybrid.iso"
+ ;;
+
+ *)
+ exit 0
+ ;;
+esac
+
+Echo_message "Begin building binary iso image..."
+
+# Requiring stage file
+Require_stagefile .build/config .build/bootstrap
+
+# Checking stage file
+Check_stagefile .build/binary_iso
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+# Checking depends
+Check_package chroot /usr/bin/xorriso xorriso
+Check_package chroot /usr/lib/ISOLINUX/isohdpfx.bin isolinux
+
+# Restoring cache
+Restore_cache cache/packages.binary
+
+# Installing depends
+Install_package
+
+# Remove old iso image
+if [ -f ${IMAGE} ]
+then
+ rm -f ${IMAGE}
+fi
+
+# Handle xorriso generic options
+XORRISO_OPTIONS="-R -r -J -joliet-long -l -cache-inodes -iso-level 3"
+
+# Handle xorriso live-build specific options
+if [ "${LIVE_IMAGE_TYPE}" = "iso-hybrid" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16"
+fi
+
+if [ "${_QUIET}" = "true" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -quiet"
+fi
+
+if [ "${_VERBOSE}" = "true" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -v"
+fi
+
+if [ -n "${LB_ISO_APPLICATION}" ] && [ "${LB_ISO_APPLICATION}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -A \"${LB_ISO_APPLICATION}\""
+fi
+
+if [ -n "${LB_ISO_PREPARER}" ] && [ "${LB_ISO_PREPARER}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -p \"${LB_ISO_PREPARER}\""
+fi
+
+if [ -n "${LB_ISO_PUBLISHER}" ] && [ "${LB_ISO_PUBLISHER}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -publisher \"${LB_ISO_PUBLISHER}\""
+fi
+
+if [ -n "${LB_ISO_VOLUME}" ] && [ "${LB_ISO_VOLUME}" != "none" ]
+then
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -V \"${LB_ISO_VOLUME}\""
+fi
+
+# Set an explicit modification date
+XORRISO_OPTIONS="${XORRISO_OPTIONS} --modification-date=$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d%H%m%S00)"
+
+LB_PRIMARY_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }')
+
+# Handle xorriso architecture specific options
+case "${LB_PRIMARY_BOOTLOADER}" in
+ grub)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table"
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/grub/stage2_eltorito"
+ XORRISO_EXCLUDE="boot/grub/stage2_eltorito"
+ ;;
+
+ grub-pc)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table"
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/grub/grub_eltorito -J"
+ XORRISO_EXCLUDE="boot/grub/grub_eltorito"
+ ;;
+
+ syslinux)
+ case "${LB_MODE}" in
+ progress-linux)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/boot.bin -c boot/boot.cat"
+ XORRISO_EXCLUDE="boot/boot.bin"
+ ;;
+
+ *)
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -b isolinux/isolinux.bin -c isolinux/boot.cat"
+ XORRISO_EXCLUDE="isolinux/isolinux.bin"
+ ;;
+ esac
+
+ XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table"
+ ;;
+
+ *)
+ Echo_warning "Bootloader on your architecture not yet supported by live-build."
+ Echo_warning "This will produce a most likely not bootable image (Continuing in 5 seconds)."
+ sleep 5
+ ;;
+esac
+
+#if [ "${LB_DEBIAN_INSTALLER}" != "live" ]
+#then
+# XORRISO_OPTIONS="${XORRISO_OPTIONS} -m ${XORRISO_EXCLUDE}"
+#fi
+
+if [ "${LB_PRIMARY_BOOTLOADER}" = "grub-pc" ]
+then
+
+cat > binary.sh << EOF
+#!/bin/sh
+
+input_dir=/usr/lib/grub/i386-pc
+
+# build core.img
+core_img=\$(mktemp)
+grub-mkimage -d \${input_dir} -o \${core_img} -O i386-pc biosdisk iso9660
+
+# build grub_eltorito image
+cat \${input_dir}/cdboot.img \${core_img} > binary/boot/grub/grub_eltorito
+
+rm -f \${core_img}
+
+for file in \${input_dir}/*.mod \${input_dir}/efiemu??.o \
+ \${input_dir}/command.lst \${input_dir}/moddep.lst \${input_dir}/fs.lst \
+ \${input_dir}/handler.lst \${input_dir}/parttool.lst
+do
+ if test -f "\$file"
+ then
+ cp -f "\$file" binary/boot/grub/i386-pc
+ fi
+done
+EOF
+
+else
+ echo "#!/bin/sh" > binary.sh
+fi
+
+cat >> binary.sh << EOF
+
+xorriso -as mkisofs ${XORRISO_OPTIONS} -o ${IMAGE} binary
+EOF
+
+case "${LB_BUILD_WITH_CHROOT}" in
+ true)
+ # Moving image
+ mv binary.sh chroot
+ mv binary chroot
+
+ Chroot chroot "sh binary.sh"
+
+ # Move image
+ mv chroot/binary chroot/${IMAGE} ./
+ rm -f chroot/binary.sh
+ ;;
+
+ false)
+ sh binary.sh
+ rm -f binary.sh
+ ;;
+esac
+
+# Saving cache
+Save_cache cache/packages.binary
+
+# Removing depends
+Remove_package
+
+# Creating stage file
+Create_stagefile .build/binary_iso