summaryrefslogtreecommitdiff
path: root/tools/boot
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2018-07-11 21:53:04 +0000
committerWarner Losh <imp@FreeBSD.org>2018-07-11 21:53:04 +0000
commitc89deb8fcc68be0cdf9f2c94a3ec2d60eae220ea (patch)
tree008087c0a6cb4dfd5c3957a3be07f998b9e7ab99 /tools/boot
parent8a894c1aa1713909d4a34682af83183f6500510b (diff)
Notes
Diffstat (limited to 'tools/boot')
-rwxr-xr-xtools/boot/install-boot.sh76
1 files changed, 40 insertions, 36 deletions
diff --git a/tools/boot/install-boot.sh b/tools/boot/install-boot.sh
index 99e513510388..9aaf07784964 100755
--- a/tools/boot/install-boot.sh
+++ b/tools/boot/install-boot.sh
@@ -27,18 +27,33 @@ find-part() {
gpart show $dev | tail +2 | awk '$4 == "'$part'" { print $3; }'
}
-boot_nogeli_gpt_ufs_legacy() {
+make_esp() {
+ local dev dst mntpt
+
dev=$1
dst=$2
- idx=$(find-part $dev "freebsd-boot")
- if [ -z "$idx" ] ; then
- die "No freebsd-boot partition found"
+ newfs_msdos -a 32 /dev/${dev}
+ mntpt=$(mktemp -d /tmp/stand-test.XXXXXX)
+ mount -t msdos /dev/${md} ${mntpt}
+ mkdir -p ${mntpt}/efi/boot
+ cp ${dst}/boot/loader.efi ${mntpt}/efi/boot/bootx64.efi
+ umount ${mntpt}
+ rmdir ${mntpt}
+}
+
+make_esp_mbr() {
+ dev=$1
+ dst=$2
+
+ s=$(find-part $dev "!239")
+ if [ -z "$s" ] ; then
+ die "No ESP slice found"
fi
- doit gpart bootcode -b ${gpt0} -p ${gpt2} -i $idx $dev
+ make_esp /dev/${dev}s${s} ${dst}
}
-boot_nogeli_gpt_ufs_uefi() {
+make_esp_gpt() {
dev=$1
dst=$2
@@ -46,7 +61,22 @@ boot_nogeli_gpt_ufs_uefi() {
if [ -z "$idx" ] ; then
die "No ESP partition found"
fi
- doit gpart bootcode -p ${efi2} -i $idx $dev
+ make_esp /dev/${dev}p${idx} ${dst}
+}
+
+boot_nogeli_gpt_ufs_legacy() {
+ dev=$1
+ dst=$2
+
+ idx=$(find-part $dev "freebsd-boot")
+ if [ -z "$idx" ] ; then
+ die "No freebsd-boot partition found"
+ fi
+ doit gpart bootcode -b ${gpt0} -p ${gpt2} -i $idx $dev
+}
+
+boot_nogeli_gpt_ufs_uefi() {
+ make_esp_gpt $1 $2
}
boot_nogeli_gpt_ufs_both() {
@@ -66,14 +96,7 @@ boot_nogeli_gpt_zfs_legacy() {
}
boot_nogeli_gpt_zfs_uefi() {
- dev=$1
- dst=$2
-
- idx=$(find-part $dev "efi")
- if [ -z "$idx" ] ; then
- die "No ESP partition found"
- fi
- doit gpart bootcode -p ${efi2} -i $idx $dev
+ make_esp_gpt $1 $2
}
boot_nogeli_gpt_zfs_both() {
@@ -94,14 +117,7 @@ boot_nogeli_mbr_ufs_legacy() {
}
boot_nogeli_mbr_ufs_uefi() {
- dev=$1
- dst=$2
-
- s=$(find-part ${dev} "!239")
- if [ -z "$s" ] ; then
- die "No ESP slice found"
- fi
- doit gpart bootcode -p ${efi2} -i ${s} ${dev}
+ make_esp_mbr $1 $2
}
boot_nogeli_mbr_ufs_both() {
@@ -133,14 +149,7 @@ boot_nogeli_mbr_zfs_legacy() {
}
boot_nogeli_mbr_zfs_uefi() {
- dev=$1
- dst=$2
-
- s=$(find-part $dev "!239")
- if [ -z "$s" ] ; then
- die "No ESP slice found"
- fi
- doit gpart bootcode -p ${efi2} -i ${s} ${dev}
+ make_eps_mbr $1 $2
}
boot_nogeli_mbr_zfs_both() {
@@ -246,11 +255,6 @@ gpt0=${DESTDIR}/boot/pmbr
gpt2=${DESTDIR}/boot/gptboot
gptzfs2=${DESTDIR}/boot/gptzfsboot
-# For gpt + EFI we install the ESP
-# XXX This should use newfs or makefs, but it doesn't yet
-efi1=${DESTDIR}/boot/boot1.efi
-efi2=${DESTDIR}/boot/boot1.efifat
-
# For MBR, we have lots of choices, but select mbr, boot0 has issues with UEFI
mbr0=${DESTDIR}/boot/mbr
mbr2=${DESTDIR}/boot/boot