Вопрос или проблема
Желая поиграться с вещами, связанными с Trusted Platform Module, я установил TrouSerS и попытался запустить tcsd
, но получил такую ошибку:
TCSD TDDL ERROR: Could not find a device to open!
Тем не менее, в моем ядре загружено несколько модулей TPM:
# lsmod | grep tpm
tpm_crb 16384 0
tpm_tis 16384 0
tpm_tis_core 20480 1 tpm_tis
tpm 40960 3 tpm_tis,tpm_crb,tpm_tis_core
Итак, как определить, не хватает ли на моем компьютере TPM или это ошибка TrouSerS?
Ни dmidecode
, ни cpuid
не выводят ничего о “tpm” или “trust”. Просматривая /var/log/messages
, с одной стороны, я вижу rngd: /dev/tpm0: No such file or directory
, но с другой стороны вижу kernel: Initialise system trusted keyrings
, и согласно этой документации ядра доверенные ключи используют TPM.
ИЗМЕНИТЬ: В меню настроек BIOS моего компьютера нет упоминаний о TPM.
Кроме того, просмотр /proc/keys
показывает:
# cat /proc/keys
******** I--Q--- 1 perm 1f3f0000 0 65534 keyring _uid_ses.0: 1
******** I--Q--- 7 perm 3f030000 0 0 keyring _ses: 1
******** I--Q--- 3 perm 1f3f0000 0 65534 keyring _uid.0: empty
******** I------ 2 perm 1f0b0000 0 0 keyring .builtin_trusted_keys: 1
******** I------ 1 perm 1f0b0000 0 0 keyring .system_blacklist_keyring: empty
******** I------ 1 perm 1f0f0000 0 0 keyring .secondary_trusted_keys: 1
******** I------ 1 perm 1f030000 0 0 asymmetri Fedora kernel signing key: 34ae686b57a59c0bf2b8c27b98287634b0f81bf8: X509.rsa b0f81bf8 []
TPM не обязательно появляются в таблицах ACPI, но модули выводят сообщение, когда находят поддерживаемый модуль; например
[ 134.026892] tpm_tis 00:08: 1.2 TPM (device-id 0xB, rev-id 16)
Таким образом, dmesg | grep -i tpm
является хорошим индикатором.
Окончательным индикатором является инструмент настройки вашего прошивки: для работы с TPM необходимы процедуры владения, которые управляются из конфигурации прошивки. Если в вашем случае ничего не связано с TPM, значит у вас его нет.
Изначально TPM использовались в серверах и бизнес-ноутбуках (а также ChromeBooks, как объясняет icarus), и были редкостью в настольных или “небизнес” ноутбуках; это изменилось за последние несколько лет, и теперь Windows 11 требует наличия TPM. Все, что поддерживает Intel TXT, имеет TPM.
Также это можно обнаружить через sysfs:
[ -d "$(ls -d /sys/kernel/security/tpm* 2>/dev/null | head -1)" ] && \
echo "TPM доступен" || echo "TPM отсутствует"
И с версии ядра 5.6 (коммит 7084eddf6be9 tpm: Add tpm_version_major sysfs file), версия может быть обнаружена с использованием файла sysfs:
$ cat /sys/class/tpm/tpm*/tpm_version_major
1
ПРИМЕЧАНИЕ: некоторые TPM не экспортируют sysfs (ошибка прошивки).
Другой способ – проверить /dev/tpm0
или /dev/tpmrm0
. Все устройства TPM должны иметь /dev/tpm0
. /dev/tpmrm0
есть только у TPM 2.0, но оно было добавлено в v4.12-rc1 (fdc915f7f719 tpm: expose spaces via a device link /dev/tpmrm):
[ -c /dev/tpmrm0 ] && echo "TPM 2.0" # с версии v4.12-rc1
[ -c /dev/tpm0 ] && echo "TPM 1.2 или 2.0"
.
Ответ или решение
Для выявления наличия TPM (Модуля доверенной платформы) в вашем компьютере, можно осуществить несколько шагов диагностики и проверки. Учтите, что TPM может быть встроен как в определенные серверы и бизнес-ноутбуки, так и в настольные компьютеры, особенно с учетом последних изменений в требованиях, как в случае с Windows 11.
Шаги для проверки наличия TPM:
-
Постановка Задачи: Прежде всего, определите, действительно ли ваша система заявляет о наличии TPM в установках UEFI/BIOS. Если в меню BIOS нет упоминания о TPM, вероятно, его в системе нет, однако это не всегда гарантирует отсутствие устройства.
-
Проверка модулей ядра: Убедитесь, что модули TPM загружены в ядре. Команда
lsmod | grep tpm
покажет, какие модули загружены и используются ли они. -
Анализ целостности ядра: Проверьте наличие сообщений о TPM при запуске с помощью
dmesg | grep -i tpm
. Если устройство поддерживается, ядро выдаст подтверждающее сообщение. -
Использование sysfs: Чтобы более точно определить наличие TPM, выполните команду
echo "$(ls -d /sys/kernel/security/tpm* 2>/dev/null)"
. Если будет вывод, то TPM доступен в вашей системе. -
Доступность устройств в /dev: Проверьте наличие устройств
/dev/tpm0
и/dev/tpmrm0
. Например, команда[ -c /dev/tpm0 ] && echo "TPM 1.2 или 2.0"
подтвердит наличие хотя бы одной из версий TPM. -
Версия TPM: Для определения версии TPM (если версия ядра 5.6 и выше), можно воспользоваться
cat /sys/class/tpm/tpm*/tpm_version_major
. Это отобразит основную версию TPM, например, 1 или 2. -
Проверка BIOS/UEFI: Если доступно, зайдите в настройки BIOS/UEFI и убедитесь, включен ли TPM в соответствующем разделе.
Рассмотрение возможных проблем и решений:
- Если TPM не обнаруживается с помощью вышеописанных методов, убедитесь, что его поддержка включена в BIOS/UEFI. Иногда требуется обновление BIOS для активации возможности работы с TPM.
- Ошибка
TCSD TDDL ERROR: Could not find a device to open!
может свидетельствовать о неисправности в установке TrouSerS или несовместимости с вашей системой. Убедитесь в корректности конфигурации программы и совместимости версий.
Следуя вышеуказанным шагам, вы сможете точно определить наличие и активность модуля TPM на вашем компьютере, что является необходимым аспектом для работы с функциональностью доверенных платформ.