I tried to flash the AGX / internal mmc / with disk encryption.
The flashing process reported:
The target t186ref has been flashed successfully.
Reset the board to boot from internal eMMC.
After the reboot the AGX came up with a kernel panic:
ERROR: fail to unlock the encrypted dev /dev/mmcblk0p2.
/bin/bash: line 1: crypt_UDA: command not found
[ 0.0722185] Kernel panic - not syncing: Attept to kill init! exitcode= 0x0007f00
Used SDK: JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra
I do not use secureboot jet - and also the fuses are not burned jet.
Backround:
I need to run my AGX in two modes:
A) open mode with no encryption for development purposes.
The root file system could be on the internal mmc or on the SDDisk
B) closed mode with disk encryption enabled - e.g. to give the device to a customer for evaluation purposes. The best solution here for me is to put the encrypted image to a SDcard and boot the AGX from there.
When I get the device back there is a need to set it back to A) (open mode) to be able to reflash it without any secure key management.
As far as I understood, using secureboot is a one way usage. It is not meant to disable the chain of trust again.
The only thing I care about for B) closed mode - is not to give the customer a chance to decrypt the root file system.
If the data of the encrypted root system is just gone for some reason- no problem.
Is there an option to achieve the switch back from B) to A) on the same device without doing weak security for B) (weak in sense of: doing the LUKS disk decryption in a unencrypted and unsigned initrd)?
NVIDIA® Jetson™ Linux Driver Package (L4T) provides boot security using the Secureboot package.Secureboot prevents execution of unauthorized boot codes through chain of trust.The root-of-trust is on-die bootROM code that authenticates boot codes such as BCT, Bootloader, and warm boot vector using Public Key Cryptography (PKC) keys stored in write-once-read-multiple fuse devices. On Jetson platforms that support Secureboot Key (SBK), you can use it to encrypt Bootloader images.
what did you mean “an unsigned / unencrypted kernel?”.
every bootloader binaries has sign/encrypted even without secureboot (i.e. with zero keys) you may refer to flashing logs for details. you may also check Cboot chapter for the [Kernel Boot Sequence Using extlinux.conf] as see-also, they should be unsigned/unencrypted if you load the image via file system.
however, loading binary files via filesystem has disabled if you enable Jetson security.