Les TPM n'apparaissent pas nécessairement dans les tables ACPI, mais les modules impriment un message lorsqu'ils trouvent un module pris en charge; par exemple
[ 134.026892] tpm_tis 00:08: 1.2 TPM (device-id 0xB, rev-id 16)
Alors dmesg | grep -i tpm
est un bon indicateur.
L'indicateur définitif est l'outil de configuration de votre micrologiciel :les TPM impliquent des procédures de propriété qui sont gérées à partir de la configuration du micrologiciel. Si votre configuration ne mentionne rien en rapport avec le TPM, vous n'avez pas de TPM.
Les TPM se trouvent généralement dans les serveurs et les ordinateurs portables professionnels (et les ChromeBooks, comme l'explique icarus), ils sont rares dans les ordinateurs de bureau ou les ordinateurs portables "non professionnels". Tout ce qui prend en charge Intel TXT a un TPM.
Peut également le détecter via sysfs :
$ [ -d $(ls -d /sys/kernel/security/tpm* 2>/dev/null | head -1) ] && echo "TPM available" \
|| echo "TPM missing"
Et depuis le noyau 5.6 (commit 7084eddf6be9 tpm :ajoutez le fichier tpm_version_major sysfs), la version peut être détectée avec le fichier sysfs :
$ cat /sys/class/tpm/tpm*/tpm_version_major
1
REMARQUE :certains TPM n'exportent pas les sysfs (bug ?).
L'autre moyen est de vérifier /dev/tpm0
ou /dev/tpmrm0
. Tous les appareils TPM doivent avoir /dev/tpm0
. /dev/tpmrm0
est uniquement pour TPM 2.0, mais il a été ajouté dans la v4.12-rc1 (fdc915f7f719 tpm :exposer les espaces via un lien de périphérique /dev/tpmrm) :
[ -c /dev/tpmrm0 ] && echo "TPM 2.0" # since v4.12-rc1
[ -c /dev/tpm0 ] && echo "TPM 1.2 or 2.0"