#!/bin/bash set -e source $(dirname $0)/version cd $(dirname $0)/.. ARTIFACTS=$(pwd)/dist/artifacts CD=${BUILD}/cd ISO=${ARTIFACTS}/$(echo ${DISTRIB_ID} | tr '[:upper:]' '[:lower:]').iso CHECKSUM=iso-checksums.txt ## TRADITIONAL MBR BOOT mkdir -p ${CD}/boot/isolinux if [ ! -f ${ARTIFACTS}/vmlinuz ] || [ ! -f ${ARTIFACTS}/initrd ]; then exit 0 fi cp ${ARTIFACTS}/initrd ${CD}/boot cp ${ARTIFACTS}/vmlinuz ${CD}/boot cp scripts/isolinux.cfg ${CD}/boot/isolinux cp /usr/lib/ISOLINUX/isolinux.bin ${CD}/boot/isolinux cp /usr/lib/syslinux/modules/bios/ldlinux.c32 ${CD}/boot/isolinux ## EFI BOOT mkdir -p ${CD}/EFI/BOOT mkdir -p ${CD}/boot/grub cp scripts/grub.cfg ${CD}/boot/grub cp -r /usr/lib/grub/x86_64-efi/ ${CD}/boot/grub (cd ${CD} && grub-mkimage -O x86_64-efi -o EFI/BOOT/BOOTX64.EFI --config=boot/grub/grub.cfg --compression=auto --prefix='()/boot/grub' disk part_msdos fat iso9660 ) # make the EFI FAT filesystem to boot EFIIMG=boot/efiboot.img CDEFI=${CD}/${EFIIMG} rm -f ${CDEFI} dd if=/dev/zero of=${CDEFI} bs=4k count=1000 mkfs.vfat ${CDEFI} mkdir -p tmp/ mount -o loop ${CDEFI} tmp/ cp -r ${CD}/EFI tmp/ umount tmp/ rmdir tmp/ rm -rf ${CD}/EFI ## BUILD THE ISO IMAGE cd ${CD} && xorriso \ -as mkisofs \ -l -J -R -V "${DISTRIB_ID}" \ -no-emul-boot -boot-load-size 4 -boot-info-table \ -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \ -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \ -eltorito-alt-boot \ -e ${EFIIMG} -no-emul-boot \ -isohybrid-gpt-basdat \ -o $ISO ${CD} cd $(dirname $ISO) rm -f $CHECKSUM for algo in sha256 md5; do echo "$algo: $(${algo}sum $(basename $ISO))" >> $CHECKSUM done