Raspberry Pi 4 Verified Boot
Implementing Thistle Verified Boot on Raspberry Pi 4
By the end of this guide you will have your Raspberry Pi 4 integrated with Thistle Verified Boot. This integration relies on an Infineon OPTIGA™ Trust M as the root of trust.
Hardware Integration
Connect your Infineon OPTIGA™ Trust M to the Raspberry Pi 4 using the I²C pins:
- Connect RST to GPIO 17 (Pin 11)
- Connect SDA to GPIO 2 (Pin 3)
- Connect SCL to GPIO 3 (Pin 5)
- Connect VCC to 3.3V (Pin 1)
- Connect GND to Ground (Pin 9)
Software Image
We recommend using our provided image as it integrates the user-land tooling for the Infineon OPTIGA Trust M, though it is not necessary for final integration.
Raspberry Pi i2c_gpio Module & Customisation
Before booting up the image, we need to make sure the i2c_gpio
module is loaded.
It is now time to install the customised version of U-Boot on the SD card. Alongside this U-boot binary, a custom script and environment file are required, but we are not going to use these just yet.
Trust M Public Key
Refer to the Overview guide to learn how to write the Trust M public key. Note that on the provided image, an additional step is required to connect to the Trust M - we need to symlink the i2c device.
a
and the password is also a
.Verified Boot Integration
Now that we have the environment in place, we are ready to sign the kernel image, and test a boot sequence. You now need to sign the kernel image using the image signing tool provided on your Thistle Project, and the kernel image located on the boot partition of the SD card (kernel8.img
)
This file needs to be stored on the boot partition of the Raspberry Pi 4, under the name kernel-sig
.
It is now time to enable verified boot by setting the verified
environment variable in U-Boot.
Assets Installation
First Boot
You can now reboot your device. Connect a serial adapter to see the boot sequence.