123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #!/bin/sh
- #
- # Generate an EFI bootable disk image
-
- set -e
-
- function help() {
- echo "Usage: ${0} [OPTIONS] <ipxe.efi>"
- echo
- echo "where OPTIONS are:"
- echo " -h Show this help"
- echo " -b Specify boot file name (e.g. bootx64.efi)"
- echo " -o FILE Save disk image to file"
- }
-
- BOOT=bootx64.efi
-
- while getopts "hb:o:" opt; do
- case ${opt} in
- h)
- help
- exit 0
- ;;
- b)
- BOOT="${OPTARG}"
- ;;
- o)
- OUT="${OPTARG}"
- ;;
- esac
- done
-
- shift $((OPTIND - 1))
- IN=$1
-
- if [ -z "${IN}" ]; then
- echo "${0}: no input file given" >&2
- help
- exit 1
- fi
-
- if [ -z "${OUT}" ]; then
- echo "${0}: no output file given" >&2
- help
- exit 1
- fi
-
- # Create sparse output file
- rm -f ${OUT}
- truncate -s 1440K ${OUT}
-
- # Format disk
- mformat -i ${OUT} -f 1440 ::
-
- # Create directory structure
- mmd -i ${OUT} ::efi
- mmd -i ${OUT} ::efi/boot
-
- # Copy bootable image
- mcopy -i ${OUT} ${IN} ::efi/boot/${BOOT}
|