diff options
author | emaste <emaste@FreeBSD.org> | 2014-09-09 16:11:04 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2014-09-09 16:11:04 +0000 |
commit | 63b0cc75c97ae06d7f517106c5fe4c4663c03b40 (patch) | |
tree | 93e04406df031d2f43fe5abdaee00cefed008ac0 | |
parent | 39bf2b650932364d54f4ae2c2eb7200766d81816 (diff) | |
download | FreeBSD-src-63b0cc75c97ae06d7f517106c5fe4c4663c03b40.zip FreeBSD-src-63b0cc75c97ae06d7f517106c5fe4c4663c03b40.tar.gz |
MFC UEFI memstick build script
r264935 (gjb):
Add a separate script to build the memstick.img and the
mini-memstick.img with UEFI support.
As the comments in the file suggest, 1) there must
be existing ${.OBJDIR}/usr/src/release/{release,bootonly};
2) TARGET/TARGET_ARCH must be amd64; and 3) it must be
a vt(4)-enabled kernel with vt_efifb (*not* vt_vga).
This script is not hooked into release/Makefile in any way
until further testing is complete.
r264992 (nwhitehorn):
Make a dual-boot BIOS/UEFI memstick image. Testing required before
this gets renamed make-memstick.sh.
r265017 (nwhitehorn):
loader's GPT support on BIOS does not seem to like the root
filesystem being the last filesystem on the disk for some reason
when made by this script. Add a vestigial swap partition to allow
this to boot with QEMU BIOS.
Approved by: re
Sponsored by: The FreeBSD Foundation
-rwxr-xr-x | release/amd64/make-uefi-memstick.sh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/release/amd64/make-uefi-memstick.sh b/release/amd64/make-uefi-memstick.sh new file mode 100755 index 0000000..6c289e0 --- /dev/null +++ b/release/amd64/make-uefi-memstick.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# +# This script generates a "memstick image" (image that can be copied to a +# USB memory stick) from a directory tree. Note that the script does not +# clean up after itself very well for error conditions on purpose so the +# problem can be diagnosed (full filesystem most likely but ...). +# +# Usage: make-memstick.sh <directory tree> <image filename> +# +# $FreeBSD$ +# + +PATH=/bin:/usr/bin:/sbin:/usr/sbin +export PATH + +if [ $# -ne 2 ]; then + echo "make-memstick.sh /path/to/directory /path/to/image/file" + exit 1 +fi + +if [ ! -d ${1} ]; then + echo "${1} must be a directory" + exit 1 +fi + +if [ -e ${2} ]; then + echo "won't overwrite ${2}" + exit 1 +fi + +echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab +makefs -B little -o label=FreeBSD_Install ${2}.part ${1} +if [ $? -ne 0 ]; then + echo "makefs failed" + exit 1 +fi +rm ${1}/etc/fstab + +mkimg -s gpt -b ${1}/boot/pmbr -p efi:=${1}/boot/boot1.efifat -p freebsd-boot:=${1}/boot/gptboot -p freebsd-ufs:=${2}.part -p freebsd-swap::1M -o ${2} +rm ${2}.part + |