Re: Installing 13.1 ARM on SSD

From: John Kennedy <warlock_at_phouka.net>
Date: Fri, 08 Jul 2022 18:00:27 UTC
On Fri, Jul 08, 2022 at 05:40:23PM +0000, Wall, Stephen wrote:
> I am attempting to install FreeBSD/ARM 13.1 on a RPi4 with a USB3 SSD attached.
> Steps I’ve taken:
> - Used Raspberry Pi Imager to set the board to boot from USB first, SD card second
> - downloaded and burned  FreeBSD 13.1 arm65-aarch64-RPI image
> - booted and run bsdinstall
> - selected ZFS
> - selected the USB SSD
> 
> Installation ran to completion, but when I reboot without the SD card, I get a “Firmware not found” error message.
> Searching the web gives lots of results for linux, but I can’t find anything for FreeBSD.
> Has anyone successfully done an install like this, and can point me toward some resources that will get me straightened out?

  For my RPI4, I burned the SD card and initially booted off of that.
That approach got started from Mark Millard's approach here:

	https://marc.info/?l=freebsd-arm&m=162032836014677&w=2

  The image I seeded from was "burned" via:

	xzcat < FreeBSD-13.1-STABLE-arm64-aarch64-RPI-20220603-185159f77c9-250958.img.xz | dd bs=512b of=/dev/da1

  Probably could have used a much bigger multiple of 512 for the
blocksize, da1 happened to be what the disk-to-be showed up as on my
system.

  So that's a -STABLE (vs a -RELEASE), and that "arm65" was probably a
human typo I'm guessing (vs arm64).

  From the SD card, I did a typical bsinstall onto the USB-connected
disk, then stomped on /boot/efi with the SDCARD's /boot/msdos contents
(uboot).  I suspect that is what is biting you.  I yanked out the SD card
at that point, and have been USB-only ever since.

	root@rpi4:~ # gpart show
	=>       40  488397088  da0  GPT  (233G)
	         40     532480    1  efi  (260M)
	     532520       2008       - free -  (1.0M)
	     534528   50331648    2  freebsd-swap  (24G)
	   50866176  437530624    3  freebsd-zfs  (209G)
	  488396800        328       - free -  (164K)

  This was from the SD card booted, where the USB disk is now da0, and I
think that is bash-style environment variable declaration but you get
the idea.  Reformatted what will be /boot/efi, mounted it, copied over
uboot from SD card's /boot/msdos, unmounted it:

	export TGT=da0
	newfs_msdos -F16 -L uboot /dev/${TGT}p1
	mount -vt msdos /dev/${TGT}p1 /mnt
	(cd /boot/msdos && tar jcf - .) | (cd /mnt && tar fvx -)
	umount -v /mnt

  Probably a little old-school.