Los TPM no aparecen necesariamente en las tablas ACPI, pero los módulos imprimen un mensaje cuando encuentran un módulo compatible; por ejemplo
[ 134.026892] tpm_tis 00:08: 1.2 TPM (device-id 0xB, rev-id 16)
Entonces dmesg | grep -i tpm
es un buen indicador.
El indicador definitivo es la herramienta de configuración de su firmware:los TPM implican procedimientos de propiedad que se gestionan desde la configuración del firmware. Si su configuración no menciona nada relacionado con TPM, entonces no tiene un TPM.
Los TPM generalmente se encuentran en servidores y computadoras portátiles comerciales (y ChromeBooks, como lo explica icarus), son raros en computadoras de escritorio o computadoras portátiles "no comerciales". Todo lo que sea compatible con Intel TXT tiene un TPM.
También puede detectarlo a través de sysfs:
$ [ -d $(ls -d /sys/kernel/security/tpm* 2>/dev/null | head -1) ] && echo "TPM available" \
|| echo "TPM missing"
Y desde el núcleo 5.6 (confirmar 7084eddf6be9 tpm:agregar tpm_version_major sysfs file), la versión se puede detectar con el archivo sysfs:
$ cat /sys/class/tpm/tpm*/tpm_version_major
1
NOTA:algunos TPM no exportan sysfs (¿error?).
Otra forma es buscar /dev/tpm0
o /dev/tpmrm0
. Todos los dispositivos TPM deben tener /dev/tpm0
. /dev/tpmrm0
es solo para TPM 2.0, pero se agregó en v4.12-rc1 (fdc915f7f719 tpm:exponer espacios a través de un enlace de dispositivo /dev/tpmrm):
[ -c /dev/tpmrm0 ] && echo "TPM 2.0" # since v4.12-rc1
[ -c /dev/tpm0 ] && echo "TPM 1.2 or 2.0"