Element for diskimage-builder setting up Raspberry Pi 3 using arm64.
- Builds complete 64-bit arm64 system based on adaptable configuration
- Uses official up-to date Raspberry Pi kernel
- Uses official distribution arm64 - no need for special adapted
versions like
Raspberian
.
The following setups are known to be working
- Debian Stretch
There are currently some GPIO libraries out there that relay on the
existance of some descriptions in the /proc/cpuinfo
(like
Hardware
or Revision
). This information is not (any longer)
available in the cpuinfo
- and is now available in the device tree
/proc/device-tree
.
Because the kernel and firmware related files (like start.elf
or
bootcode.bin
) are not part of the normal distribution, they will
not get updated automatically.
Before starting the build, there is the need to setup the build environment.
As the base that provides the infrastructure, the Openstack diskimage-builder must is used.
Because some features are needed which are not merged, there is the need to use the latest version and add some patches. I'm currently working on this and hopefully at some time the next steps are not needed any longer.
$ git clone https://git.openstack.org/openstack/diskimage-builder $ cd diskimage-builder $ git checkout -b feature/v2 origin/feature/v2
Then apply the following patches
They can be e.g. cherry picked (see upper right corner of the page).
The module itself needs some packages that must be installed. Look at rpi3-readme for details.
The configuration can be adapted in the create_rpi3.sh
file.
You might want to change the Debian mirror to your needs. If you
want, you can also change (or remove) the default user with username
dib
and password dib
.
$ bash create_rpi3.sh
$ dd if=rpi3-debian-minimal-stretch.raw of=/dev/your_mmc_device
Place the SD card into your RPi3 and have fun.
Mostly no post-install procedures are needed. You might want to adapt network configuration. Also the installed system is minimal, i.e. if you want to use the RPi3 with GUI, you have to install the appropriate packages.
Not all GPIO libraries can be used (directly), because some use the fact, that in some kernel versions there are special entries in the /proc/cpuinfo.
The following methods are known to work
All methods and libraries that are using the /sys/class/gpio interface are working.
Using bcm2835_library works. Please note that this comes under GPL - therefore also any source code that uses it must be delivered. There is a separate license for commercial projects.
The original wiringPi does not work, because it uses information from the /proc/cpuinfo and bails out if if does not find those. Nevertheless there is a fork available wiringPi64 that is known to work also with 64 bit systems.
There is currently a small set of videos (in German) available on Youtube that describes the setup of a Raspberry Pi 3 using this diskimage-builder element.