Proxmox VE 添加 TPM 2.0 支持
source link: https://azhuge233.com/proxmox-ve-%e6%b7%bb%e5%8a%a0-tpm-2-0-%e6%94%af%e6%8c%81/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
文章目录 显示
Windows 11 硬性要求 TPM 2.0,虽然现在看来可以通过各种手段绕过这个限制,但真正开启 TPM 2.0 才是最保险的方式
我的 Proxmox VE(PVE) 运行在 X99 主板上,CPU 为 5820k,主板上没有插 TPM 模块,需要软件模拟 TPM,下文使用 swtpm (libtpms 的一种实现) 来模拟 TPM
PVE 底层是 QEMU KVM,所以 QEMU 同理可用
另:PVE 官方已经计划在 PVE 中添加 vTPM(详见 vTPM support – do we have guide to add the vTPM support?),但是官方回应尚停留在今年 1 月
下文将展示如何在 Proxmox VE(PVE) 下为虚拟机开启 TPM 2.0
- Proxmox VE 5.4.114-1
- 基于 Debian 10、QEMU KVM
以下指令均在 root 用户下执行,其他用户请酌情添加 sudo
编译环境为 Debian,以下指令也适用于 Ubuntu,其他操作系统可以查看前两个参考链接
编译安装 libtpms
因为 swtpm 是 libtpms 的实现(依赖于 libtpms),所以需要先安装 libtpms
git clone https://github.com/stefanberger/libtpms.git
安装依赖环境
apt -y install automake autoconf libtool gcc build-essential libssl-dev dh-exec pkg-config dh-autoreconf gawk
编译 libtpms
cd libtpms ./autogen.sh --with-openssl make dist dpkg-buildpackage -us -uc -j4
cd .. dpkg -i libtpms0_*_amd64.deb libtpms-dev_*_amd64.deb
编译安装 swtpm
git clone https://github.com/stefanberger/swtpm.git
安装依赖环境
apt -y install libfuse-dev libglib2.0-dev libgmp-dev expect libtasn1-dev socat tpm-tools python3-twisted gnutls-dev gnutls-bin libjson-glib-dev python3-setuptools softhsm2 libseccomp-dev
cd swtpm dpkg-buildpackage -us -uc -j$(nproc)
cd .. dpkg -i ./swtpm*.deb
配置 swtpm 服务
在 /etc/systemd/system 下新建服务文件 swtpm.service,写入以下内容
[Unit] Description=swtpm server [Service] Type=simple ExecStartPre=mkdir -p /var/lib/qemu-swtpm/swtpm ExecStart=swtpm socket --tpm2 --tpmstate dir=/var/lib/qemu-swtpm/swtpm --ctrl type=unixio,path=/var/run/qemu-server/swtpm.sock --log level=20 Restart=always [Install] WantedBy=multi-user.target
以上服务配置用来开启 TPM 2.0,开启其他版本需要更改 –tpm2 参数为对应版本参数
注意:此服务模拟了单个 TPM 设备,只能供一个虚拟机使用,多个虚拟机无法使用同一个模拟 TPM。如有多个虚拟机 TPM 需求,则按以上配置新建多个 swtpm 服务即可(将 swtpm 改为其他名称,例如:/var/lib/qemu-swtpm/swtpm2,/var/run/qemu-server/swtpm2.sock )
systemctl start swtpm.service systemctl status swtpm.service # 开机启动 systemctl enable swtpm.service
客户机开启 TPM 2.0
进入 /etc/pve/qemu-server 目录,编辑待开启的虚拟机配置文件
#备份配置文件 cp [虚拟机编号].conf [虚拟机编号].conf.bak vim ./[虚拟机编号].conf
将以下内容添加到文件首行
args: -global driver=cfi.pflash01,property=secure,value=on -chardev socket,id=chrtpm,path=/var/run/qemu-server/swtpm.sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
重启虚拟机
qm reboot [虚拟机编号]
重启后虚拟机会自动开启 TPM 2.0
此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK