aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Bottomley <JBottomley@Parallels.com>2012-12-03 13:17:14 +0000
committerJames Bottomley <JBottomley@Parallels.com>2012-12-03 13:50:28 +0000
commit7bac4ef3c3e44def4765f6d7dc412714f4266195 (patch)
tree3505e836a6b6c12459dcfa2a7d825be093456924
parent001de2e40e8d03fa7be4749c0919d7ff3660b5a0 (diff)
downloadefitools-7bac4ef3c3e44def4765f6d7dc412714f4266195.tar.gz
mkusb.sh: script to create a bootable USB image with the files
-rw-r--r--Makefile1
-rwxr-xr-xmkusb.sh37
2 files changed, 38 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 17a283e..b17902d 100644
--- a/Makefile
+++ b/Makefile
@@ -17,6 +17,7 @@ install: all
$(INSTALL) -m 755 $(EFIFILES) $(EFIDIR)
$(INSTALL) -m 755 -d $(BINDIR)
$(INSTALL) -m 755 $(BINARIES) $(BINDIR)
+ $(INSTALL) -m 755 mkusb.sh $(BINDIR)/efitool-mkusb
$(INSTALL) -m 755 -d $(DOCDIR)
$(INSTALL) -m 644 README COPYING $(DOCDIR)
diff --git a/mkusb.sh b/mkusb.sh
new file mode 100755
index 0000000..e1873ec
--- /dev/null
+++ b/mkusb.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+k=$1
+e=$2
+o=$3
+if [ $# -ne 3 ]; then
+ echo "Usage $0: key_dir efi_dir output_image_file"
+ exit 1;
+fi
+t=/var/tmp/tmpusb.$$.img
+if [ ! -d "$k" ]; then
+ echo "Failed to find directory $k"
+ exit 1;
+fi
+if [ ! -d "$e" ]; then
+ echo "Failed to find directory $e"
+ exit 1;
+fi
+
+dd if=/dev/zero of=${o} bs=512 count=102096
+parted ${o} "mktable gpt"
+parted ${o} "mkpart p fat32 2048s 102049s"
+parted ${o} "toggle 1 boot"
+parted ${o} "name 1 UEFI"
+dd if=/dev/zero of=${t} bs=512 count=100000
+mkfs -t vfat -n UEFI-Tools ${t}
+mmd -i ${t} ::/EFI
+mmd -i ${t} ::/EFI/BOOT
+mmd -i ${t} ::/keys
+mcopy -i ${t} ${k}/*.esl ::/keys
+mcopy -i ${t} ${k}/*.auth ::/keys
+mcopy -i ${t} ${e}/HashTool-signed.efi ::/EFI/BOOT/HashTool.efi
+mcopy -i ${t} ${e}/KeyTool-signed.efi ::/EFI/BOOT/KeyTool.efi
+mcopy -i ${t} ${e}/PreLoader-signed.efi ::/EFI/BOOT/BOOTX64.efi
+mcopy -i ${t} ${e}/HelloWorld.efi ::/EFI/BOOT/loader.efi
+dd if=${t} of=${o} bs=512 seek=2048 count=100000
+rm -f ${t}
+exit 0;