Raspberry Pi 3 support

Shawn Webb shawn.webb at hardenedbsd.org
Tue Oct 18 19:50:02 UTC 2016


On Mon, Oct 17, 2016 at 10:06:31AM -0400, Shawn Webb wrote:
> On Mon, Oct 17, 2016 at 12:33:27AM -0600, Ross Alexander wrote:
> > On Fri Oct 14 22:10:56 UTC 2016, Shawn Webb wrote:
> > 
> > > I've documented the steps I took to install FreeBSD on my RPI3:
> > >      https://wiki.freebsd.org/arm64
> > > I hope I didn't miss anything. It's a wiki, so if I did, feel free to
> > > correct it (or let me know and I can correct it, too).
> > 
> > I'm referencing https://wiki.freebsd.org/arm64/rpi3 as it seems
> > to be "the one".  The following notes are meant to be clarifications
> > for people as clueless as myself -
> > 
> > You say: "Download all the files from the boot directory in the
> > official Raspberry Pi firmware repository on GitHub."  I read that as
> > 
> >      newfs_msdos -F 16 /dev/da0s1
> >      mount -t msdosfs /dev/da0s1 /mnt0
> >      cd /mnt0
> >      svn checkout https://github.com/raspberrypi/firmware/trunk/boot/
> >      mv boot/* .
> >      rm -R boot
> > 
> > You say: "Copy $MAKEOBJDIRPREFIX/arm64.aarch64/<svn-checkout-path**>/sys/boot/efi/boot1/boot1.efi
> > to /mnt/EFI/BOOT/bootaa64.efi".  I read that as
> > 
> >      mount -t ufs /dev/da0s2a /mnt1
> >      mkdir -p /mnt0/EFI/BOOT
> >      cp /mnt1/boot/boot1.efi /mnt0/EFI/BOOT/bootaa64.efi
> > 
> > given that /dev/da0s2a is all the stuff from "Building", "World", and
> > "Kernel" sections and a "make -s installworld installkernel distribution
> > KERNCONF=RPI3 DESTDIR=/mnt1 TARGET=arm64 TARGET_ARCH=aarch64".
> > 
> > And hey, guess what: it boots fine :).  No hints as to how many times
> > I got it wrong, though.
> 
> Hey Ross,
> 
> Good catch. What I'll do is add a "prerequisites" section, instructing
> on how and where to download the required files. Then I'll refactor that
> bit to make better sense.

Status update for FreeBSD on the RPI3:

1) There is now a sysutils/u-boot-rpi3 port. Thanks Diane Bruce!
2) Using clang 3.9.0 + lld in base, one can build and install some ports
with a few workarounds. boot1.efi, loader.efi, and the kernel need to
come from a non-clang 3.9.0 branch (HEAD).
3) jemalloc has issues on the RPI3, can be worked around by disabling
tcache via malloc.conf. Diane Bruce ponders whether this could be
related to locking on arm64.
4) linking dynamically-loaded executables (via installing ports entries)
has issues
5) SMP support is being actively worked on by Diane Bruce
6) I need to update the documentation to use the u-boot-rpi3 port
7) I need to update the documentation to use crochet now that crochet
supports the rpi3 and we have the u-boot-rpi3 port

All this has been documented in more detail at the RP3 wiki page:

https://wiki.freebsd.org/arm64/rpi3

I'm going to start researching in more detail the jemalloc and dynamic
linking issues this weekend. If someone gets to it sooner than me, then
yay! Otherwise, I'm happy to take a gander.

Again, if anyone has any suggestions for the documentation, please let
me know.

Thanks,

-- 
Shawn Webb
Cofounder and Security Engineer
HardenedBSD

GPG Key ID:          0x6A84658F52456EEE
GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89  3D9E 6A84 658F 5245 6EEE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20161018/0d5a0a4a/attachment.sig>


More information about the freebsd-arm mailing list