Re: Raspberry Pi 4 and M.2 SATA SSD recognized but not booting or available for install - unsupported interface

From: Mark Millard <marklmi_at_yahoo.com>
Date: Fri, 12 Apr 2024 15:10:30 UTC
On Apr 12, 2024, at 06:41, Johan Helsingius <julf@Julf.com> wrote:

> On 11/04/2024 19:57, Mark Millard wrote:
>> As far as I know, the absence of sufficient material in
>> da1p1 (efiboot0) could be your only problem.
> 
> OK, I have some progress (but not quite sure how). The
> system now boots from the USB stick, but with the ZFS
> file system from the SSD as it should - but without the
> USB stick it doesn't boot, complaining "Firmware not found".
> 
> Here is the current partitioning, da0 is the USB stick,
> da1 the SSD:
> 
> $ gpart show
> =>      63  31301568  da0  MBR  (15G)
>        63      1985       - free -  (993K)
>      2048    102400    1  fat32lba  [active]  (50M)
>    104448  10381312    2  freebsd  (5.0G)
>  10485760  20815871       - free -  (9.9G)
> 
> =>       0  10381312  da0s2  BSD  (5.0G)
>         0       128         - free -  (64K)
>       128  10381184      1  freebsd-ufs  (4.9G)
> 
> =>       40  937703008  da1  GPT  (447G)
>         40     532480    1  efi  (260M)
>     532520       2008       - free -  (1.0M)
>     534528    4194304    2  freebsd-swap  (2.0G)
>    4728832  932972544    3  freebsd-zfs  (445G)
>  937701376       1672       - free -  (836K)
> 
> $ gpart show -pl
> =>      63  31301568    da0  MBR  (15G)
>        63      1985         - free -  (993K)
>      2048    102400  da0s1  (null)  [active]  (50M)
>    104448  10381312  da0s2  (null)  (5.0G)
>  10485760  20815871         - free -  (9.9G)
> 
> =>       0  10381312   da0s2  BSD  (5.0G)
>         0       128          - free -  (64K)
>       128  10381184  da0s2a  (null)  (4.9G)
> 
> =>       40  937703008    da1  GPT  (447G)
>         40     532480  da1p1  efiboot0  (260M)
>     532520       2008         - free -  (1.0M)
>     534528    4194304  da1p2  swap0  (2.0G)
>    4728832  932972544  da1p3  zfs0  (445G)
>  937701376       1672         - free -  (836K)
> 
> da0s1 and da1p1 (that I assume are the EFI boot partitions)
> have totally different contents:
> 
> SSD / da1p1:
> $ find /boot/efi
> /boot/efi
> /boot/efi/efi
> /boot/efi/efi/freebsd
> /boot/efi/efi/freebsd/loader.efi
> /boot/efi/efi/boot
> /boot/efi/efi/boot/bootaa64.efi
> /boot/efi/ubootefi.var
> 
> 
> USB stick / da0s1:
> 
> $ find /mnt/da0s1
> /mnt
> /mnt/EFI
> /mnt/EFI/BOOT
> /mnt/EFI/BOOT/bootaa64.efi
> /mnt/dtb
> /mnt/dtb/allwinner
> /mnt/dtb/allwinner/sun50i-a64-nanopi-a64.dtb
> /mnt/dtb/allwinner/sun50i-a64-olinuxino.dtb
> /mnt/dtb/allwinner/sun50i-a64-pine64-lts.dtb
> /mnt/dtb/allwinner/sun50i-a64-pine64-plus.dtb
> /mnt/dtb/allwinner/sun50i-a64-pine64.dtb
> /mnt/dtb/allwinner/sun50i-a64-pinebook.dtb
> /mnt/dtb/allwinner/sun50i-a64-sopine-baseboard.dtb
> /mnt/dtb/allwinner/sun50i-h5-orangepi-pc2.dtb
> /mnt/dtb/allwinner/sun50i-h5-nanopi-neo2.dtb
> /mnt/dtb/allwinner/sun50i-h6-pine-h64.dtb
> /mnt/dtb/allwinner/sun50i-h6-pine-h64-model-b.dtb
> /mnt/dtb/overlays
> /mnt/dtb/overlays/sun50i-a64-mmc0-disable.dtbo
> /mnt/dtb/overlays/sun50i-a64-mmc1-disable.dtbo
> /mnt/dtb/overlays/sun50i-a64-mmc2-disable.dtbo
> /mnt/dtb/overlays/sun50i-a64-pwm.dtbo
> /mnt/dtb/overlays/sun50i-a64-rpwm.dtbo
> /mnt/dtb/overlays/sun50i-a64-spi0-spigen.dtbo
> /mnt/dtb/overlays/sun50i-a64-timer.dtbo
> /mnt/dtb/overlays/sun50i-h5-opp.dtbo
> /mnt/dtb/overlays/sun50i-h5-nanopi-neo2-opp.dtbo
> /mnt/dtb/overlays/rk3328-analog-sound.dtbo
> /mnt/dtb/overlays/rk3328-i2c0.dtbo
> /mnt/dtb/overlays/rk3328-uart1.dtbo
> /mnt/dtb/overlays/rk3399-mmc0-disable.dtbo
> /mnt/dtb/overlays/rk3399-mmc1-disable.dtbo
> /mnt/dtb/overlays/rk3399-sdhci-disable.dtbo
> /mnt/dtb/overlays/spigen-rpi3.dtbo
> /mnt/dtb/overlays/spigen-rpi4.dtbo
> /mnt/dtb/rockchip
> /mnt/dtb/rockchip/rk3399-khadas-edge-captain.dtb
> /mnt/dtb/rockchip/rk3399-khadas-edge.dtb
> /mnt/dtb/rockchip/rk3399-khadas-edge-v.dtb
> /mnt/dtb/rockchip/rk3399-nanopc-t4.dtb
> /mnt/dtb/rockchip/rk3328-nanopi-r2s.dtb
> /mnt/dtb/rockchip/rk3399-nanopi-r4s.dtb
> /mnt/dtb/rockchip/rk3399-rock-pi-4.dtb
> /mnt/dtb/rockchip/rk3328-rock-pi-e.dtb
> /mnt/dtb/rockchip/rk3328-rock64.dtb
> /mnt/dtb/rockchip/rk3399-firefly.dtb
> /mnt/dtb/rockchip/rk3399-rockpro64.dtb
> /mnt/dtb/freescale
> /mnt/dtb/freescale/fsl-ls1028a-rdb.dtb
> /mnt/dtb/freescale/fsl-lx2160a-clearfog-cx.dtb
> /mnt/dtb/freescale/fsl-lx2160a-honeycomb.dtb
> /mnt/dtb/freescale/fsl-lx2160a-qds.dtb
> /mnt/dtb/freescale/fsl-lx2160a-rdb.dtb
> /mnt/dtb/freescale/imx8mq-evk.dtb
> /mnt/dtb/freescale/imx8mq-nitrogen.dtb
> /mnt/dtb/marvell
> /mnt/dtb/marvell/armada-3720-espressobin.dtb
> /mnt/dtb/marvell/armada-8040-clearfog-gt-8k.dtb
> /mnt/dtb/marvell/armada-8040-db.dtb
> /mnt/dtb/marvell/armada-8040-mcbin.dtb
> /mnt/dtb/marvell/armada-8040-mcbin-singleshot.dtb
> /mnt/dtb/nvidia
> /mnt/dtb/nvidia/tegra210-p2371-2180.dtb
> /mnt/dtb/nvidia/tegra210-p3450-0000.dtb
> /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/bcm2710-rpi-cm3.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
> 

In the above notation and context, you would need to
do the likes of:

# cp -aRx /mnt/ /boot/efi/

Likely: Edit the /boot/efi/config.txt to also have:

#
# Local addition that avoids USB3 SSD boot failures that look like:
#   uhub_reattach_port: port ? reset failed, error=USB_ERR_TIMEOUT
#   uhub_reattach_port: device problem (USB_ERR_TIMEOUT), disabling port ?
# WARNING, not sufficient for "boot -s": that needs the full force_turbo=1
initial_turbo=60

# shutdown -p now

Disconnect the USB stick and leave it disconnected
during the boot (whenever you are booting). Only one
media should have those files in an msdosfs during
boot: the specific media that you want to boot from.

Power on.

You are responsible for putting a copy of the RP*
firmware, armstub*.bin files, and u-boot.bin and
the like to the msdosfs that you want to use. The
same is truth when any of those files need to be
updated: nothing will automatically put the files
in the msdosfs.


===
Mark Millard
marklmi at yahoo.com