Raspberry Pi 3 support
Oleksandr Tymoshenko
gonzo at bluezbox.com
Wed Oct 19 00:02:03 UTC 2016
> On Oct 18, 2016, at 12:49 PM, Shawn Webb <shawn.webb at hardenedbsd.org> wrote:
>
> 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 <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 for documenting this stuff, Shawn. Just for your information -
I committed new kernel config that should be used instead of RPI3:
GENERIC-UP. I’ve updated wiki page already.
More information about the freebsd-arm
mailing list