svn commit: r335349 - head/tools/boot
Warner Losh
imp at FreeBSD.org
Mon Jun 18 23:16:48 UTC 2018
Author: imp
Date: Mon Jun 18 23:16:47 2018
New Revision: 335349
URL: https://svnweb.freebsd.org/changeset/base/335349
Log:
Switch to creating UEFI ESPs using loader.efi instead of boot1.efi.
Cope for the fact that laoder.efi, not being boot1, doesn't read
/boot.config by setting boot_serial and force the serial console.
Also add sysctl so we can display the boot method.
Provide a variable, do_boot1_efi, if you want to use boot1 for
testing. But since it's transient, it's just a variable and not
available on the command line.
Modified:
head/tools/boot/rootgen.sh
Modified: head/tools/boot/rootgen.sh
==============================================================================
--- head/tools/boot/rootgen.sh Mon Jun 18 23:00:15 2018 (r335348)
+++ head/tools/boot/rootgen.sh Mon Jun 18 23:16:47 2018 (r335349)
@@ -2,6 +2,8 @@
# $FreeBSD$
+do_boot1_efi=0
+
#
# Builds all the bat-shit crazy combinations we support booting from,
# at least for amd64. It assume you have a ~sane kernel in /boot/kernel
@@ -29,6 +31,29 @@ cpsys() {
(cd $src ; tar cf - .) | (cd $dst; tar xf -)
}
+make_esp()
+{
+ local src dst md mntpt
+ src=$1
+ dst=$2
+
+ if [ "${do_boot1_efi}" -eq 1 ]; then
+ cp ${src}/boot/boot1.efifat ${dst}
+ else
+ dd if=/dev/zero of=${dst} count=1 seek=$((100 * 1024 * 1024 / 512))
+ md=$(mdconfig -f ${dst})
+ newfs_msdos -a 32 /dev/${md}
+ mntpt=$(mktemp -d /tmp/stand-test.XXXXXX)
+ mount -t msdos /dev/${md} ${mntpt}
+# mkdir -p ${mntpt}/efi/freebsd # not yet
+ mkdir -p ${mntpt}/efi/boot
+ cp ${src}/boot/loader.efi ${mntpt}/efi/boot/bootx64.efi
+ umount ${mntpt}
+ rmdir ${mntpt}
+ mdconfig -d -u ${md}
+ fi
+}
+
mk_nogeli_gpt_ufs_legacy() {
src=$1
img=$2
@@ -50,8 +75,7 @@ mk_nogeli_gpt_ufs_uefi() {
cat > ${src}/etc/fstab <<EOF
/dev/ada0p2 / ufs rw 1 1
EOF
-# XXX need to make msdos part for this to work XXXX
- cp ${src}/boot/boot1.efifat ${img}.p1
+ make_esp ${src} ${img}.p1
makefs -t ffs -B little -s 200m ${img}.p2 ${src}
mkimg -s gpt \
-p efi:=${img}.p1 \
@@ -66,12 +90,11 @@ mk_nogeli_gpt_ufs_both() {
cat > ${src}/etc/fstab <<EOF
/dev/ada0p3 / ufs rw 1 1
EOF
- # XXX need to make msdos part for this to work XXXX
- cp ${src}/boot/boot1.efifat ${img}.p1
+ make_esp ${src} ${img}.p1
makefs -t ffs -B little -s 200m ${img}.p3 ${src}
# p1 is boot for uefi, p2 is boot for gpt, p3 is /
mkimg -b ${src}/boot/pmbr -s gpt \
- -p efi:=${src}/boot/boot1.efifat \
+ -p efi:=${img}.p1 \
-p freebsd-boot:=${src}/boot/gptboot \
-p freebsd-ufs:=${img}.p3 \
-o ${img}
@@ -100,7 +123,7 @@ mk_nogeli_gpt_zfs_legacy() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
EOF
@@ -138,7 +161,7 @@ mk_nogeli_gpt_zfs_uefi() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
EOF
@@ -177,7 +200,7 @@ mk_nogeli_gpt_zfs_both() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
EOF
@@ -213,7 +236,7 @@ mk_nogeli_mbr_ufs_uefi() {
cat > ${src}/etc/fstab <<EOF
/dev/ada0s1a / ufs rw 1 1
EOF
- cp ${src}/boot/boot1.efifat ${img}.s1
+ make_esp ${src} ${img}.s1
makefs -t ffs -B little -s 200m ${img}.s2a ${src}
mkimg -s bsd -p freebsd-ufs:=${img}.s2a -o ${img}.s2
mkimg -a 1 -s mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
@@ -227,7 +250,7 @@ mk_nogeli_mbr_ufs_both() {
cat > ${src}/etc/fstab <<EOF
/dev/ada0s1a / ufs rw 1 1
EOF
- cp ${src}/boot/boot1.efifat ${img}.s1
+ make_esp ${src} ${img}.s1
makefs -t ffs -B little -s 200m ${img}.s2a ${src}
mkimg -s bsd -b ${src}/boot/boot -p freebsd-ufs:=${img}.s2a -o ${img}.s2
mkimg -a 2 -s mbr -b ${src}/boot/mbr -p efi:=${img}.s1 -p freebsd:=${img}.s2 -o ${img}
@@ -258,7 +281,7 @@ mk_nogeli_mbr_zfs_legacy() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
EOF
@@ -299,7 +322,7 @@ mk_nogeli_mbr_zfs_uefi() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
EOF
@@ -340,7 +363,7 @@ mk_nogeli_mbr_zfs_both() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
EOF
@@ -489,7 +512,7 @@ mk_geli_gpt_zfs_legacy() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
geom_eli_load=YES
@@ -532,7 +555,7 @@ mk_geli_gpt_zfs_uefi() {
# NB: The online guides go nuts customizing /var and other mountpoints here, no need
cpsys ${src} ${mntpt}
# need to make a couple of tweaks
- cat > ${mntpt}/boot/loader.conf <<EOF
+ cat >> ${mntpt}/boot/loader.conf <<EOF
zfs_load=YES
opensolaris_load=YES
geom_eli_load=YES
@@ -744,6 +767,11 @@ mkdir -p ${DESTDIR}/boot/kernel
cp /boot/boot1 ${DESTDIR}/boot
cp /boot/kernel/kernel ${DESTDIR}/boot/kernel
echo -h -D -S115200 > ${DESTDIR}/boot.config
+cat > ${DESTDIR}/boot/loader.conf <<EOF
+console=comconsole
+comconsole_speed=115200
+boot_serial=-h
+EOF
# XXX
cp /boot/device.hints ${DESTDIR}/boot/device.hints
# Assume we're already built
@@ -752,12 +780,13 @@ make install DESTDIR=${DESTDIR} MK_MAN=no MK_INSTALL_A
mkdir -p ${DESTDIR}/sbin ${DESTDIR}/bin \
${DESTDIR}/lib ${DESTDIR}/libexec \
${DESTDIR}/etc ${DESTDIR}/dev
-for f in /sbin/halt /sbin/init /bin/sh $(ldd /bin/sh | awk 'NF == 4 { print $3; }') /libexec/ld-elf.so.1; do
+for f in /sbin/halt /sbin/init /bin/sh /sbin/sysctl $(ldd /bin/sh | awk 'NF == 4 { print $3; }') /libexec/ld-elf.so.1; do
cp $f ${DESTDIR}/$f
done
cat > ${DESTDIR}/etc/rc <<EOF
#!/bin/sh
+sysctl machdep.bootmethod
echo "RC COMMAND RUNNING -- SUCCESS!!!!!"
halt -p
EOF
More information about the svn-src-head
mailing list