git: 0b7472b3d8d2 - main - Mount the EFI system partition (ESP) on newly-installed systems.

Mark Millard marklmi at yahoo.com
Sun Feb 28 10:13:11 UTC 2021


On 2021-Feb-27, at 23:22, Mark Millard <marklmi at yahoo.com> wrote:

> Jessica Clarke jrtc27 at freebsd.org wrote on
> Sun Feb 28 01:25:47 UTC 2021 :
> 
>> On 28 Feb 2021, at 01:22, Brandon Bergren <bdragon at FreeBSD.org> wrote:
>>> 
>>> On Sat, Feb 27, 2021, at 7:10 PM, Brandon Bergren wrote:
>>>> This is mistakenly detecting pseries powerpc64* as an EFI platform and 
>>>> causing install to error out. Please add back the uname checks so this 
>>>> code doesn't run on powerpc*.
>>> 
>>> Specifically, the /boot/efi stuff in usr.sbin/bsdinstall/scripts/bootconfig should not run on mips / 32 bit ARM / powerpc* systems. I believe /boot/efi is always created so it can't be used to infer existence of EFI.
>> 
>> 32-bit Arm can boot via EFI. Just mips* and powerpc*.
> 
> 
> So far as I know, those 32-bit arm systems using sysutils/u-boot-*
> ports that, in turn, are using boot.scr and ublr.bin are not using
> EFI. Are there problems for any of the following contexts?
> 
> /usr/ports/sysutils/u-boot-a13-olinuxino/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-bananapi/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-bananapim2/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-beaglebone/pkg-descr: * A boot.scr (U-Boot scripts ) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-chip/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-cubieboard/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-cubieboard2/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-duovero/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-nanopi-m1plus/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-nanopi-neo-air/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-nanopi-neo/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-olimex-a20-som-evb/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-olinuxino-lime/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-olinuxino-lime2-emmc/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-olinuxino-lime2/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-orangepi-one/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-orangepi-pc-plus/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-orangepi-pc/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-orangepi-plus-2e/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-orangepi-zero/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-pandaboard/pkg-descr: * A boot.scr (U-Boot scripts ) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-pcduino3/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-riotboard/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-rpi-0-w/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included
> /usr/ports/sysutils/u-boot-sinovoip-bpi-m3/pkg-descr: * A boot.scr (U-Boot script) that loads ubldr.bin and execute it is included

(I became curious and so looked around some more
at the modern context.)

I suppose a more direct note is that
FreeBSD-13.0-BETA4-arm-armv7-GENERICSD.img put
on a microsd card looks like:

# gpart show -p /dev/mmcsd1
=>      63  62333889    mmcsd1  MBR  (30G)
        63      2016            - free -  (1.0M)
      2079    102312  mmcsd1s1  fat32lba  [active]  (50M)
    104391   6187041  mmcsd1s2  freebsd  (3.0G)
   6291432  56042520            - free -  (27G)

# ls -Tld /mnt/*
drwxr-xr-x  1 root  wheel     4096 Feb 26 01:06:32 2021 /mnt/EFI
-rwxr-xr-x  1 root  wheel   103488 Feb 25 21:59:06 2021 /mnt/MLO
-rwxr-xr-x  1 root  wheel    26533 Feb  1 03:42:56 2021 /mnt/bcm2709-rpi-2-b.dtb
-rwxr-xr-x  1 root  wheel    52456 Feb  1 03:42:56 2021 /mnt/bootcode.bin
-rwxr-xr-x  1 root  wheel       89 Feb 25 22:12:10 2021 /mnt/config.txt
drwxr-xr-x  1 root  wheel     8192 Feb 26 01:06:32 2021 /mnt/dtb
-rwxr-xr-x  1 root  wheel     7302 Feb  1 03:42:56 2021 /mnt/fixup.dat
-rwxr-xr-x  1 root  wheel     3179 Feb  1 03:42:56 2021 /mnt/fixup_cd.dat
-rwxr-xr-x  1 root  wheel    10291 Feb  1 03:42:56 2021 /mnt/fixup_db.dat
-rwxr-xr-x  1 root  wheel    10289 Feb  1 03:42:56 2021 /mnt/fixup_x.dat
drwxr-xr-x  1 root  wheel     4096 Feb 26 01:06:36 2021 /mnt/overlays
-rwxr-xr-x  1 root  wheel  2951392 Feb  1 03:42:56 2021 /mnt/start.elf
-rwxr-xr-x  1 root  wheel   791996 Feb  1 03:42:56 2021 /mnt/start_cd.elf
-rwxr-xr-x  1 root  wheel  4792808 Feb  1 03:42:56 2021 /mnt/start_db.elf
-rwxr-xr-x  1 root  wheel  3703208 Feb  1 03:42:56 2021 /mnt/start_x.elf
-rwxr-xr-x  1 root  wheel   467824 Feb 25 22:11:32 2021 /mnt/u-boot.bin
-rwxr-xr-x  1 root  wheel   716804 Feb 25 21:59:06 2021 /mnt/u-boot.img
-r-xr-xr-x  1 root  wheel   462412 Feb 26 01:00:54 2021 /mnt/ubldr.bin

# find /mnt/EFI/ -print
/mnt/EFI/
/mnt/EFI/BOOT
/mnt/EFI/BOOT/bootarm.efi

(Nothing for efi/boot/startup.nsh . Also a capitalization
style difference vs. what I see on the OverDrive 1000 and
MACCHIATOBin Double Shot that I have in use
[ efi/boot/BOOTaa64.efi ].)

So it looks like EFI/BOOT/bootarm.efi exists even when it is
not used, when the context is based on a release or snapshot
GENERICSD for armv7. (I've not identified an armv7
EFI/BOOT/bootarm.efi use but there may well be some for all
I know.)

The above also points out u-boot.bin and u-boot.img contexts,
as well as the boot.scr / ubldr.bin ones. When one of these
are used, EFI/BOOT/bootarm.efi is not used, even when present.

As for aarch64 . . .

Looking at FreeBSD-13.0-BETA4-arm64-aarch64-mini-memstick.img
shows (when expanded to a microsd card):

# gpart show -p /dev/mmcsd1
=>     3  679832    mmcsd1  GPT  (30G) [CORRUPT]
       3   66584  mmcsd1p1  efi  (33M)
   66587  613248  mmcsd1p2  freebsd-ufs  (299M)

# find /mnt/ -print
/mnt/
/mnt/EFI
/mnt/EFI/BOOT
/mnt/EFI/BOOT/bootaa64.efi

(Again: capitalization and startup.nsh differences
compared to what I see on the OverDrive 1000 and
MACCHIATObin Double Shot.)

RPI, PINE64, PINE64-LTS, ROCK64, and ROCKPRO64
have images for aarch64.

Looking at RPI:

# gpart show -p /dev/mmcsd1
=>      63  62333889    mmcsd1  MBR  (30G)
        63      2016            - free -  (1.0M)
      2079    102312  mmcsd1s1  fat32lba  [active]  (50M)
    104391   6187041  mmcsd1s2  freebsd  (3.0G)
   6291432  56042520            - free -  (27G)

So, not GPT.

# find /mnt/ -print
/mnt/
/mnt/EFI
/mnt/EFI/BOOT
/mnt/EFI/BOOT/bootaa64.efi
/mnt/dtb
. . . (dtb substructure omitted) . . .
/mnt/README
/mnt/u-boot.bin
/mnt/armstub8.bin
/mnt/armstub8-gic.bin
/mnt/bootcode.bin
/mnt/fixup_cd.dat
/mnt/fixup_db.dat
/mnt/fixup_x.dat
/mnt/fixup.dat
/mnt/LICENCE.broadcom
/mnt/start_cd.elf
/mnt/start_db.elf
/mnt/start_x.elf
/mnt/start.elf
/mnt/fixup4.dat
/mnt/fixup4cd.dat
/mnt/fixup4db.dat
/mnt/fixup4x.dat
/mnt/start4.elf
/mnt/start4cd.elf
/mnt/start4db.elf
/mnt/start4x.elf
/mnt/bcm2710-rpi-2-b.dtb
/mnt/bcm2710-rpi-3-b.dtb
/mnt/bcm2710-rpi-3-b-plus.dtb
/mnt/bcm2711-rpi-4-b.dtb
/mnt/config.txt
/mnt/overlays
/mnt/overlays/mmc.dtbo
/mnt/overlays/pwm.dtbo
/mnt/overlays/disable-bt.dtbo

# more /mnt/config.txt 
[all]
arm_64bit=1
dtparam=audio=on,i2c_arm=on,spi=on
dtoverlay=mmc
dtoverlay=disable-bt
device_tree_address=0x4000
kernel=u-boot.bin

[pi4]
hdmi_safe=1
armstub=armstub8-gic.bin

So it has EFI/BOOT/bootaa64.efi but is a
u-boot.bin context in operation: bootaa64.efi
is unused unless changes are made.

By contrast, ROCK64 does use GPT and has just:

# find /mnt/ -print
/mnt/
/mnt/EFI
/mnt/EFI/BOOT
/mnt/EFI/BOOT/bootaa64.efi
/mnt/dtb
. . . (dtb substructure omitted) . . .
      (spans more than ROCK64)

and EFI/BOOT/bootaa64.efi is used.

(I'll not look at the other 3 --or at
riscv64 or the like.)


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the dev-commits-src-main mailing list