#!/bin/bash # # Script to create a bootable CD image file containing rEFInd. # Usage: # # ./mkcdimage {version} # # where {version} is the rEFInd version number. # # This script relies on the mcopy utility. # # The script creates an image file from the binary package # stored in ../snapshots/{version}/refind-bin-{version}.zip # The resulting CD image file is stored in # ../snapshots/{version}/refind-cd-{version}.iso StartDir=`pwd` Version=$1 # Unzip the binary archive file.... cd ../snapshots/$Version rm -rf temp mkdir temp cd temp unzip ../refind-bin-$Version.zip cp $StartDir/SHELLS.txt ./refind-bin-$Version # Create a boot directory and (temporarily) copy the EFI shell # files to it.... mkdir -p refind-bin-$Version/EFI/boot cd refind-bin-$Version/EFI/boot cp $StartDir/shell*.efi ./ # Create hard links to the rEFInd files so that they'll be suitable for an # EFI-boot CD... ln ../../refind/refind_ia32.efi ./bootia32.efi ln ../../refind/refind_x64.efi ./bootx64.efi ln ../../refind/refind.conf-sample ./refind.conf mkdir icons cd icons ln ../../../refind/icons/* ./ cd ../../.. # Get the size of the binaries to go in the El Torito image in kB ToritoSize=`du -s EFI | cut -f 1` let ToritoSize=($ToritoSize)/28 let ToritoSize=($ToritoSize)*32 # Move the EFI shell files back to the root where they belong # (They were in EFI/boot just so they'd get counted in ToritoSize) mv EFI/boot/shell*.efi ./ # Prepare a FAT filesystem image and populate it with the # EFI boot files.... dd if=/dev/zero of=refind-bin-$Version.img bs=1024 count=$ToritoSize mkdosfs -n "rEFInd.ET" refind-bin-$Version.img mcopy -irefind-bin-$Version.img -s EFI shell*.efi ::/ # Make the ISO-9660 image file.... mkisofs -A "Bootable rEFInd" -V "rEFInd $Version" -volset "rEFInd $Version" \ -J -r -v -x ./lost+found -o ../../refind-cd-$Version.iso \ -eltorito-alt-boot -efi-boot refind-bin-$Version.img \ -no-emul-boot ./ # Below is like above, but also creates an El Torito entry for BIOS # booting. That's useless, but in case something flakes out without # it, I'll preserve this version for a while.... #mkisofs -A "Bootable rEFInd" -V "rEFInd $Version" -volset "rEFInd $Version" \ # -J -r -v -x ./lost+found -o ../../refind-cd-$Version.iso \ # -b refind-bin-$Version.img -c boot.cat -no-emul-boot -boot-load-size 4 \ # -eltorito-alt-boot -efi-boot refind-bin-$Version.img \ # -no-emul-boot ./ # Create a bootable USB flash drive image, using the FAT filesystem # created above and a stored partition table image (plus some empty # sectors).... # # Note: Seems to work on only a few systems, so I'm not distributing # the resulting images yet.... # rm ../../refind-flashdrive-$Version.* cat $StartDir/flashparts.img refind-bin-$Version.img > refind-flashdrive-$Version.img cp $StartDir/README-flashdrive.txt ./ cd .. mv refind-bin-$Version refind-flashdrive-$Version zip -9r ../refind-flashdrive-$Version.zip \ refind-flashdrive-$Version/refind-flashdrive-$Version.img \ refind-flashdrive-$Version/docs refind-flashdrive-$Version/LICENSE.txt \ refind-flashdrive-$Version/COPYING.txt \ refind-flashdrive-$Version/CREDITS.txt \ refind-flashdrive-$Version/README.txt \ refind-flashdrive-$Version/SHELLS.txt \ refind-flashdrive-$Version/README-flashdrive.txt mv refind-flashdrive-$Version/refind-flashdrive-$Version.img ../ cd ../ # Zip up the optical disc image.... rm -f refind-cd-$Version.zip zip -9 refind-cd-$Version.zip refind-cd-$Version.iso rm -r temp/