Điểm:1

Làm cách nào để chạy trình mô phỏng TPM trên máy Ubuntu (có thể là DBus không chính xác)?

lá cờ ke

Tôi đã thiết lập Ubuntu trong WSL2. Sau đó, tôi đã thử hướng dẫn tại https://wiki.ubuntu.com/TPM/Testing và đã thử thiết lập trình mô phỏng TPM trên Ubuntu. Nhưng vì một số lý do, tôi dường như gặp phải tình huống không thể khởi động trình giả lập do lỗi DBus, trong khi vấn đề thực sự có thể khác. Tôi cũng có thể sao chép vấn đề tương tự khi cố gắng thiết lập trình giả lập TPM trong hành động GitHub bằng cách sử dụng ubuntu-mới nhất. Vì vậy, tôi chợt nhận ra rằng có thể ai đó biết rõ hơn về các diễn đàn Ubuntu, có vẻ như điều này cũng gây rắc rối cho mọi người trên các chủ đề TPM GitHub. :)

Trình tự hiện tại tôi có như sau:

sudo apt-get cập nhật
sudo apt-get cài đặt tpm2-abrmd
sudo apt-get cài đặt libtss2-tcti-tabrmd-dev

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

hoặc trên GitHub Actions, phần thứ hai là

dịch vụ sudo bắt đầu tpm2-abrmd
sudo tpm2-abrmd --allow-root --tcti=mssim --logger=stdout

có vẻ như hoạt động do cách thiết lập quyền truy cập.

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

** (quy trình: 741): CẢNH BÁO **: 16:36:40.585: tcti_conf trước: "thiết bị:/dev/tpm0"
 
** (tpm2-abrmd:741): CẢNH BÁO **: 16:36:40.585: tcti_conf sau: "mssim"

** (tpm2-abrmd:741): CẢNH BÁO **: 16:36:40.586: Không thể nhận proxy cho trình nền DBus (org.freedesktop.DBus): Không thể kết nối: Không có tệp hoặc thư mục như vậy

** (tpm2-abrmd:741): TIÊU CHUẨN **: 16:36:40.586: Không lấy được tên DBus com.intel.tss2.Tabrmd.UID 0 phải được phép "sở hữu" tên này. Kiểm tra cấu hình DBus và kiểm tra xem cái này có đang chạy với tư cách người dùng tss hoặc root không.
CẢNH BÁO:tcti:src/util/io.c:251:socket_connect() Không thể kết nối với máy chủ 127.0.0.1, cổng 2321: errno 111: Kết nối bị từ chối
CẢNH BÁO:tcti:src/tss2-tcti/tctildr.c:62:tcti_from_init() Khởi tạo TCTI cho chức năng 0x7f0f40e733d0 không thành công với a000a
CẢNH BÁO:tcti:src/tss2-tcti/tctildr.c:92:tcti_from_info() Không thể khởi tạo TCTI có tên: tcti-socket
LỖI:tcti:src/tss2-tcti/tctildr-dl.c:150:tcti_from_file() Không thể khởi tạo tệp TCTI: mssim
LỖI:tcti:src/tss2-tcti/tctildr.c:418:Tss2_TctiLdr_Initialize_Ex() Không thể khởi tạo TCTI

** (tpm2-abrmd:741): CRITICAL **: 16:36:40.586: init_thread_func: không thể tạo TCTI với conf "mssim", có RC: 0xa000a

Nhìn vào cấu hình DBus, có /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>

Cũng thế /etc/dbus-1/system.d/tpm2-abrmd.service:

[Đơn vị]
Mô tả=TPM2 Access Broker và Daemon quản lý tài nguyên
Sau=systemd-udev-settle.service
Yêu cầu=systemd-udev-settle.service
# Điều kiện này là cần thiết khi sử dụng thiết bị TCTI. Nếu
# TCP mssim được sử dụng thì điều kiện sẽ được nhận xét.
# Điều kiệnPathExistsGlob=/dev/tpm*

[Dịch vụ]
Loại = dbus
BusName=com.intel.tss2.Tabrmd
StandardOutput=nhật ký hệ thống
ExecStart=/usr/sbin/tpm2-abrmd --tcti=mssim
Người dùng = tss

[Cài đặt]
WantedBy=multi-user.target

Tôi sẽ thêm nó đang chạy như thế nào

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

Dường như không có sự khác biệt. Kết quả của điều đó là

> [2] 163
XYZ@ABC:/$ sudo: /usr/local/sbin/tpm2-abrmd: không tìm thấy lệnh

[2]- Thoát 1 sudo -u tss /usr/local/sbin/tpm2-abrmd --tcti=mssim --logger=stdout

Cũng có thể, thậm chí có khả năng là tôi không biết mình đang làm gì. Khá mới đối với Linux và Ubuntu.

NotTheDr01ds avatar
lá cờ vn
Đừng lo lắng - Bạn đã tiến sâu hơn *nhiều* vào lĩnh vực này hơn hầu hết những người mới có thể đạt được. Đó là một câu hỏi được nghiên cứu rất kỹ lưỡng, IMHO. Tôi sẽ cố gắng tìm thời gian để sửa lại nó sau khi tôi định cấu hình lại phiên "thử nghiệm/thử nghiệm" của mình. Tôi nghĩ rằng Dbus sẽ không được hỗ trợ trên WSL nếu không có cấu hình bổ sung. Trình mô phỏng TPM có chạy mà không có nó hay không (hoặc liệu có cách nào để có được "DBus vừa đủ" hay không), tôi không chắc.
lá cờ ke
Cảm ơn bạn cho các từ loại. Tôi nghĩ rằng các vấn đề gốc trên WSL2 và GitHub là khác nhau, nhưng có thể giống nhau. Có thể trên WSL2 systemd không chạy và tôi không chắc liệu tính năng ghi nhật ký có hoạt động như bình thường hay không. Tôi đang làm "điều gì đó" trên các hành động của GitHub để thực hiện công việc này và sử dụng WSL2 + Ubuntu để lặp lại nhanh hơn. :) Nhưng có lẽ đã đến lúc tìm hiểu sâu hơn về việc phát triển trên Linux vì nó có vẻ nhanh hơn trên GitHub Actions và sau đó là tất cả nội dung gốc trên đám mây!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.