I TPM non appaiono necessariamente nelle tabelle ACPI, ma i moduli stampano un messaggio quando trovano un modulo supportato; ad esempio
[ 134.026892] tpm_tis 00:08: 1.2 TPM (device-id 0xB, rev-id 16)
Quindi dmesg | grep -i tpm
è un buon indicatore.
L'indicatore definitivo è lo strumento di configurazione del firmware:i TPM implicano procedure di proprietà gestite dalla configurazione del firmware. Se la tua configurazione non menziona nulla relativo al TPM, allora non hai un TPM.
I TPM si trovano solitamente nei server e nei laptop aziendali (e nei ChromeBook, come spiegato da icarus), sono rari nei desktop o nei laptop "non aziendali". Tutto ciò che supporta Intel TXT ha un TPM.
Può anche rilevarlo tramite sysfs:
$ [ -d $(ls -d /sys/kernel/security/tpm* 2>/dev/null | head -1) ] && echo "TPM available" \
|| echo "TPM missing"
E dal kernel 5.6 (commit 7084eddf6be9 tpm:Add tpm_version_major sysfs file), la versione può essere rilevata con il file sysfs:
$ cat /sys/class/tpm/tpm*/tpm_version_major
1
NOTA:alcuni TPM non esportano sysfs (bug?).
Un altro modo è controllare /dev/tpm0
o /dev/tpmrm0
. Tutti i dispositivi TPM devono avere /dev/tpm0
. /dev/tpmrm0
è solo per TPM 2.0, ma è stato aggiunto nella v4.12-rc1 (fdc915f7f719 tpm:esporre spazi tramite un collegamento dispositivo /dev/tpmrm):
[ -c /dev/tpmrm0 ] && echo "TPM 2.0" # since v4.12-rc1
[ -c /dev/tpm0 ] && echo "TPM 1.2 or 2.0"