Re: Troubles booting Pi2 from USB using bootcode.bin method

bob prohaska <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm,gmane.os.freebsd.devel.ports
Message-ID <[email protected]>
I should have  stated earlier that the FreeBSD system on
the USB3 disk orginated from
FreeBSD-13.0-RELEASE-arm-armv7-GENERICSD.img
using dd and then repartitioning to add a swap and separate
/usr partition.

On Thu, Oct 28, 2021 at 04:53:29PM -0700, Mark Millard wrote:
> On 2021-Oct-28, at 15:21, Mark Millard <marklmi at yahoo.com> wrote:
> 
> > On 2021-Oct-28, at 12:16, bob prohaska <[email protected]> wrote:
> > 
> >> To make a clean start on this thread I've turned on the UART
> >> for bootcode.bin per Mark's instructions and done a few boot
> >> attempts with the USB2 and USB3 mechanical disks, singly and
> >> in unison.
> >> 
> >> The bootlogs are in
> >> http://www.zefox.net/~fbsd/rpi2/bootproblems/
> >> 
> >> An immediate curiosity is that on the first try, booting
> >> with the USB3 device alone worked. I didn't record that
> >> output, unfortunately.
> > 
> > Hmm. Too bad.
> > 
Indeed! I thought maybe the failure was fixed by turning on the UART...

> >> The second attempt failed, as expected,
> >> and is recorded in bootlog-fail. The third attempt booted both
> >> USB2 and USB3 disks together, recorded in bootlog.success.
> > 
> > The two logs do not have the same set of dtdebug messages
> > for loading bcm2709-rpi-2-b.dtb . This is long before
> > u-boot.bin is loaded and so is during the RPi* firmware
> > time frame not u_Boot or FreeBSD;s loader or FreeBSD's kernel
> > or FreeBSD's world.
> > 
> > From this I infer that there are two different msdosfs's
> > wtith differing content on the 2 drives and when both
> > drives are in place .
> >

That's correct. Actually there are three, counting the microSD.
 
> > You have not reported on the following for either drive's
> > msdosfs :
> > 
> > # strings ???/start.elf | grep "VC_BUILD_"
> > 

The are different. On the USB3 disk, which I want to boot, I get
bob@www:/boot/msdos % strings start.elf | grep "VC_BUILD_"
VC_BUILD_ID_USER: dom
VC_BUILD_ID_TIME: 12:12:09
VC_BUILD_ID_VARIANT: start
VC_BUILD_ID_TIME: Feb 25 2021
VC_BUILD_ID_BRANCH: bcm2711_2
VC_BUILD_ID_HOSTNAME: buildbot
VC_BUILD_ID_PLATFORM: raspberrypi_linux
VC_BUILD_ID_VERSION: 564e5f9b852b23a330b1764bcf0b2d022a20afd0 (clean)

On the USB2 disk, which seems to be needed for booting, I get
oot@www:/mnt # strings start.elf | grep "VC_BUILD_"
VC_BUILD_ID_USER: dom
VC_BUILD_ID_TIME: 16:43:13
VC_BUILD_ID_BRANCH: master
VC_BUILD_ID_VARIANT: start
VC_BUILD_ID_TIME: Nov 19 2019
VC_BUILD_ID_HOSTNAME: buildbot
VC_BUILD_ID_PLATFORM: raspberrypi_linux
VC_BUILD_ID_VERSION: 2354eac70a98807e06bed2149bc0c5613e751c15 (clean)



> > Another thing of interest would be something like (both
> > msdosfs mounts):
> > 
> > # diff -rq ... ...
> > 
> > in order to see what files have distinctions on the
> > two media. A diff of the two config.txt files would be
> > relevant (no -q involvement).
> > 
> > 
On the USB3 disk config.txt contains
bob@www:/boot/msdos % more config.txt
init_uart_clock=3000000
enable_uart=1
kernel=u-boot.bin
kernel7=u-boot.bin
dtoverlay=mmc
enable_uart=1
uart_2ndstage=1
dtdebug=1

On the USB2 disk config.txt contains
root@www:/mnt # more config.txt
init_uart_clock=3000000
enable_uart=1
kernel=u-boot.bin
kernel7=u-boot.bin
dtoverlay=mmc

> >> I'm trying to build u-boot-rpi2 and will try to update the USB3
> >> disk with it once complete. 
Still working on that part 8-) 

> >> 
> >> The actual boot sequence using bootcode.bin is still a bit hazy:
> >> Is it microSD/dos -> USB/dos ->USB/freebsd ? 
> >> 
> > 
> > Based on the log file for success the ordering is
> > 
> > bootcode.bin from the microsd card

So bootcode.bin runs from the microSD, but config.txt and all else
is picked up from whichever USB disk is recognized first?

> > config.txt (also re-read multiple times later, not listed)
> > start.elf
> > fixup.dat
> > bcm2709-rpi-2-b.dtb
> > overlays/mmc.dtbo
> > cmdline.txt (if it exists)
> > u-boot.bin
> > efi/boot/bootarm.efi
> > efi/freebsd/loader.env
> > /boot/defaults/loader.conf
> > /boot/device.hints
> > /boot/loader.conf
> > /boot/loader.conf.local
> > /boot/boot/kernel
> > /boot/kernel/fi.lemon.ko
> > /boot/kernel/umodem.ko
> > FreeBSD world
> > 
> > 
> > However the failing one has the following involved
> > (I omit various lines):
> > 
> > . . .
> > Loading 'bcm2709-rpi-2-b.dtb' to 0x100 size 0x6879
> > Unknown dtparam 'pwr_led_gpio' - ignored
> > dterror: no symbols found
> > dtdebug: /__overrides__ node not found
> > Unknown dtparam 'uart0_clkrate' - ignored
> > dtdebug: Opened overlay file 'overlays/mmc.dtbo'
> > brfs: File read: /mfs/sd/overlays/mmc.dtbo
> > dterror: not a valid FDT - err -9
> > . . .
> > 
> > That seqeunce makes no mention of: "using platform 'bcm2835'"
> > and the like. An example is: "found override pwr_led_gpio".
> > 
> > Again, all this looks like tehre are two msdosfs involved and
> > the two are not the same by content.
> > 
> 
> Another possibility is that you have more in the microsd card's
> msdosfs than just bootcode.bin so that that microsd card might
> be the source of alternative files. (That makes up to 3 media
> that might be sources of files.)

That's correct. The microSD's msdos partition contains
-rwxr-xr-x  1 root  wheel  52456 Oct 28 02:12 bootcode.bin
-rwxr-xr-x  1 root  wheel  52456 Oct 22 16:00 bootcode.bin-e
-rwxr-xr-x  1 root  wheel  52304 Nov 22  2019 bootcode.old
-rwxr-xr-x  1 root  wheel      0 Jan 16  2021 timeout
drwxr-xr-x  1 root  wheel   4096 Jan 16  2021 unused

I'm expecting that only bootcode.bin and timeout are involved.

Thanks for looking!

bob prohaska
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.