[BBB] NanoBSD ubldr problems

Manuel Stühn freebsdnewbie at freenet.de
Sun Feb 17 12:56:17 UTC 2019

I'm having some trouble getting plain NanoBSD running on an beaglebone 
black. Eventually I've got it working by making these two changes: 

1. switch partitions NANO_SLICE_CFG from s2 to s3 and NANO_SLICE_ROOT 
from s3 to s2 in nanobsd/embedded/common
2. mark fat-partition active during mkimg for std-embedded NANO_LAYOUT

The switch of partitions is necessary, because ubldr seems to not boot 
kernels from partitions other than ${DISK}s2 out of the box. Setting 
loaderdev does not help because ubldr has some issues; by using two 
different structs (disk_devdesc and uboot_devdesc) synonymously for 
providing slice and partition information down a call stack and not 
defining them as packed, padding prevents correct information transport.  
See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233097

Even with these changes applied, ubldr does not boot the s3-slice which 
contains the rootfs in default nanobsd-config, but tries s2 (conf) which 
fails because conf does not contain any kernel.  I read in the source 
comments that ubldr will prioritise those partitions containing active 
flag in mbr-based disks over those without, but it is neccessary to mark 
the FAT-slice active because the BBB-ROM-loader will not boot u-boot 
because it checks for an active FAT-partition to find MLO and stuff.

Setting loaderdev to "disk 0:3.0" in uboot helps, but trying to make it 
permanent via uEnv.txt does not work. Isn't uEnv.txt evaluated?

As far as I understand, the boot does only work if the rootfs is located 
in the first slice to probe by ubldr, correct?

How does the described update procedure (image-ping-pong) for arm 
NanoBSD work then?

More information about the freebsd-arm mailing list