Рейтинг:1

Как запустить симулятор TPM на машине с Ubuntu (возможно, неправильный DBus)?

флаг ke

У меня есть Ubuntu, настроенная в WSL2. Затем я попробовал инструкции на https://wiki.ubuntu.com/TPM/Тестирование и попытался настроить симулятор TPM на Ubuntu. Но по какой-то причине я, кажется, оказался в ситуации, когда я не могу запустить симулятор из-за ошибки DBus, хотя реальная проблема может быть другой. Я могу воспроизвести эту же проблему, также пытаясь настроить симулятор TPM в действии GitHub, используя ubuntu-последняя. Итак, мне пришло в голову, что, возможно, форумы Ubuntu кто-то знает лучше, похоже, те же проблемы возникают и у людей в темах TPM GitHub. :)

Текущая последовательность у меня следующая:

sudo apt-получить обновление
sudo apt-get установить tpm2-abrmd
sudo apt-get установить libtss2-tcti-tabrmd-dev

sudo tpm2-abrmd --tcti=mssim --allow-root

или на GitHub Actions вторая часть

запуск службы sudo tpm2-abrmd
sudo tpm2-abrmd --allow-root --tcti=mssim --logger=stdout

которые, похоже, работают из-за того, как настроены права доступа.

> sudo tpm2-abrmd --tcti=mssim --allow-root

** (процесс: 741): ПРЕДУПРЕЖДЕНИЕ **: 16:36:40.585: tcti_conf до: «устройство:/dev/tpm0»
 
** (tpm2-abrmd:741): ПРЕДУПРЕЖДЕНИЕ **: 16:36:40.585: tcti_conf после: "mssim"

** (tpm2-abrmd:741): ПРЕДУПРЕЖДЕНИЕ **: 16:36:40.586: Не удалось получить прокси для демона DBus (org.freedesktop.DBus): Не удалось подключиться: Нет такого файла или каталога

** (tpm2-abrmd:741): КРИТИЧЕСКИЙ **: 16:36:40.586: не удалось получить имя DBus com.intel.tss2.Tabrmd.UID 0 должно быть разрешено «владеть» этим именем. Проверьте конфигурацию DBus и убедитесь, что он работает от имени пользователя tss или root.
ПРЕДУПРЕЖДЕНИЕ:tcti:src/util/io.c:251:socket_connect() Не удалось подключиться к хосту 127.0.0.1, порт 2321: errno 111: соединение отклонено
ПРЕДУПРЕЖДЕНИЕ: tcti: src/tss2-tcti/tctildr.c:62:tcti_from_init() Ошибка инициализации TCTI для функции 0x7f0f40e733d0 с кодом a000a
ПРЕДУПРЕЖДЕНИЕ:tcti:src/tss2-tcti/tctildr.c:92:tcti_from_info() Не удалось инициализировать TCTI с именем: tcti-socket
ОШИБКА: tcti: src/tss2-tcti/tctildr-dl.c:150:tcti_from_file() Не удалось инициализировать файл TCTI: mssim
ОШИБКА: tcti: src/tss2-tcti/tctildr.c:418:Tss2_TctiLdr_Initialize_Ex() Не удалось создать экземпляр TCTI

** (tpm2-abrmd:741): КРИТИЧЕСКИЙ **: 16:36:40.586: init_thread_func: не удалось создать TCTI с conf "mssim", получен RC: 0xa000a

Глядя на конфигурацию DBus, есть /etc/dbus-1/system.d/tpm2-abrmd.conf:

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <!-- ../system.conf have denied everything, so we just punch some holes -->
  <policy user="tss">
    <allow own="com.intel.tss2.Tabrmd"/>
  </policy>
  <policy user="root">
    <allow own="com.intel.tss2.Tabrmd"/>
  </policy>
  <policy user="XYZ">
    <allow own="com.intel.tss2.Tabrmd"/>
  </policy>
  <policy context="default">
    <allow send_destination="com.intel.tss2.Tabrmd"/>
    <allow receive_sender="com.intel.tss2.Tabrmd"/>
  </policy>
</busconfig>

Также /etc/dbus-1/system.d/tpm2-abrmd.service:

[Ед. изм]
Description=TPM2 Access Broker и демон управления ресурсами
После = systemd-udev-settle.service
Требуется = systemd-udev-settle.service
# Это условие необходимо при использовании устройства TCTI. Если
# Используется TCP mssim, тогда условие должно быть закомментировано.
# ConditionPathExistsGlob=/dev/tpm*

[Оказание услуг]
Тип=dbus
BusName=com.intel.tss2.Tabrmd
Стандартный вывод = системный журнал
ExecStart=/usr/sbin/tpm2-abrmd --tcti=mssim
Пользователь=ТСС

[Установить]
WantedBy=многопользовательская.цель

Я добавлю, что работает как

sudo -u tss /usr/local/sbin/tpm2-abrmd --tcti=mssim --logger=stdout &

Кажется, без разницы. Результатом этого является

> [2] 163
XYZ@ABC:/$ sudo: /usr/local/sbin/tpm2-abrmd: команда не найдена

[2] - Выход 1 sudo -u tss /usr/local/sbin/tpm2-abrmd --tcti=mssim --logger=stdout

Также может быть, даже вероятно, что я не знаю, что делаю. Будучи довольно новым для Linux и Ubuntu.

NotTheDr01ds avatar
флаг vn
Не волнуйтесь - вы уже *намного* продвинулись в этом, чем большинство новичков. ИМХО, очень хорошо изученный вопрос. Я попытаюсь найти время, чтобы воспроизвести его после того, как снова настрою сеанс «одноразового/тестирования». Я думаю, что все сведется к тому, что Dbus не будет поддерживаться на WSL без дополнительной настройки. Будет ли симулятор TPM работать без него (или есть способ получить «достаточно DBus»), я не уверен.
флаг ke
Спасибо за добрые слова. Я думаю, что корневые проблемы на WSL2 и GitHub разные, но, возможно, похожи. Возможно, на WSL2 systemd не работает, и я не уверен, работает ли ведение журнала, как и в противном случае. Я делаю «что-то» в действиях GitHub, чтобы заставить это работать, и перешел на WSL2 + Ubuntu для более быстрых итераций. :) Но, вероятно, пришло время глубже изучить разработку для Linux, поскольку GitHub Actions кажется более быстрым, а затем есть все облачные вещи!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.