При настройке IoT Edge для использования TPM я получаю сообщение об ошибке: Ошибка: нет такого файла или каталога (ошибка ОС 2)
Раньше я запускал tpm2_takeownership, так что это, вероятно, способствующий фактор.
ОС: Yocto 2.3 (Linux reliagate-10-12 4.9.148-eurotech-ti # 1 Вт, 21 мая, 12:52:42 UTC 2019 armv7l armv7l armv7l GNU / Linux)
IoT Edge работает нормально, если я не использую TPM.
Мне удалось выполнить приведенную здесь инструкцию для tpm_device_provision: https://docs.microsoft.com/en-us/azure/iot-edge/how-to-auto-provision-simulated-device-linux и получите следующее вывод (то есть я могу успешно общаться с TPM).
root@reliagate-10-12:eMMC:~# ./tpm_device_provision
Gathering the registration information...
Registration Id:
2upzntec--REMOVED--drlxrtza
Endorsement Key:
AToAAQAL--REMOVED--9zGxyw==
Press any key to continue:
Я внес следующие изменения в свой config.yaml
provisioning:
source: "dps"
global_endpoint: "https://global.azure-devices-provisioning.net"
scope_id: "0ne00045676"
attestation:
method: "tpm"
registration_id: "2upzntec--REMOVED--drlxrtza"
Я внес необходимые изменения разрешений в tpm:
root@reliagate-10-12:eMMC:~# ls -all /dev/tpm0
crw-rw----. 1 tss iotedge 10, 224 May 16 14:44 /dev/tpm0
Я предоставил настройки в iotedge.service
root@reliagate-10-12:eMMC:~# systemctl cat iotedge.service
[Unit]
Description=Azure IoT Edge daemon
After=network-online.target docker.service iotedge.socket iotedge.mgmt.socket
Requires=iotedge.socket iotedge.mgmt.socket
Wants=network-online.target docker.service
Documentation=man:iotedged(8)
[Service]
ExecStart=/usr/bin/iotedged -c /etc/iotedge/config.yaml
KillMode=process
TimeoutStartSec=600
TimeoutStopSec=40
Restart=on-failure
User=iotedge
Group=iotedge
[Install]
WantedBy=multi-user.target
Also=iotedge.socket iotedge.mgmt.socket
# /etc/systemd/system/iotedge.service.d/override.conf
[Service]
Environment=IOTEDGE_USE_TPM_DEVICE=ON
Я включил правила tpmaccess:
root@reliagate-10-12:eMMC:~# cat /etc/udev/rules.d/tpmaccess.rules
#allow iotedge access to tpm0
KERNEL=="tpm0", SUBSYSTEM=="tpm", GROUP="iotedge", MODE="0660"
Тем не менее, когда я запускаю journalctl -u iotedge --no-pager --no-full, я вижу следующую ошибку
Несколько мыслей: