Karamba Security Blog

How to build RPI3 ARMv8 aarch64 build

Alexei Sragovitch | November 2, 2017
RPI3 banner


Raspberry Pi 3 (RPi3) currently uses cortex A53, which contains ARMv8 architecture CPU. However, most available documented builds for RPi3 are based on ARMv7 rather than ARMv8. In this post, I’ll explain how to build an RPi3 ARMv8 using Yocto Project on an Ubuntu machine.

The Yocto Project does have an official layer for RPi3, but it’s intended for RPI3 ARMv7 builds. I needed to create a new layer for the Yocto Project that will build a Linux Kernel and rootfs for ARMv8.

After trying a number of different sites, I finally discovered this site, which I was able to use to create a working ARMv8 layer for the RPi3 Yocto Project. My final build included the ability to connect to the board through an SSH connection, which required several modifications.

The modifications I made to the layer allowed it to choose a correct branch and commit. The section below explains how I did this in greater detail.

Creating Yocto ARMv8 aarch64

git clone -b krogoth git://git.yoctoproject.org/poky.git poky64
cd poky64/
git clone -b krogoth ht​tp://git.yoctoproject.org/cgit/cgit.cgi/meta-
git clone -b rpi-4.8.y ht​tps://github.com/mickey-happygolucky/meta-rpi3-
source oe-init-build-env bitbake-layers add-layer ../meta-raspberrypi
bitbake-layers add-layer ../meta-rpi3-aarch64

edit conf/local.conf and set MACHINE ??= “raspberrypi3-64” and add ENABLE_UART = “1”
at the end
modify linux-raspberrypi_4.8.bb to:
SRCREV = “061dccce6cf6705bbb5da29a643f4b0ad1d11630”
SRC_URI = “git://github.com/raspberrypi/linux.git;branch=rpi-4.8.y”
bitbake rpi-basic-image

I now have an image with SSH at: tmp/deploy/images/raspberrypi3-64/rpi-basic-image-raspberrypi3-64.rpi-sdimg

Install and connect to RPI3

To convert from Flash to SD:
sudo dd if=tmp/deploy/images/raspberrypi3-64/rpi-basic-image-raspberrypi3-
64.rpi-sdimg of=/dev/mmcblk0

To install, I set the Ethernet connection on my Ubuntu machine to “Shared to other computers”. The Ubuntu machine gave me an IP address to the RPi3 board once it booted.

Then, I placed the SD card in the RPi3 and connected the Ethernet cable. (You can connect UART to the RPi3, but it’s not necessary.)

After, I booted the board and waited until it received an IP from my Ubuntu machine. Once it received an IP address, it was visible in the UART console.

To get an IP of the device, I ran the following:
cat /var/lib/misc/dnsmasq.leases

To connect to the device:
ssh [email protected]<ip_addr>

This process gave me access to the RPi3 with the ARMv8 build.

RPI3 Build

Read more

Get Karamba’s Autonomous Security Whitepaper



41000 Woodward Avenue
Suite 350 East
Bloomfield Hills, MI 48304
Tel: +1 248-574-5171



24 HaNagar St.
Hod Hasharon
Tel: +972 9 88 66 113



6-4 Akashicho
Chuo-ku, Tokyo
Tel: +81 3 6853 7401