快轉到主要內容

在Linux安装Windows 11 QEMU虛擬機時啟用Secure Boot和TPM 2.0

Linux系統 虛擬機與容器技術 Windows QEMU Libvirt
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

即使電腦硬體不支援TPM2.0,也可以用模擬的跑需要TPM2.0的作業系統。

例如我的CPU是不支援TPM 2.0的i5-7400,但想在Linux系統裝Windows 11虛擬機,只要透過模擬TPM和自簽Secure Boot後,不用改登錄檔繞過也能正常安裝。

1. 安裝QEMU/KVM和TPM模擬套件
#

啟用KVM,安裝Libvirt、Virt Manager、QEMU、swtpm、ovmf。

swtpm是軟體模擬TPM的套件。OVMF則是給QEMU虛擬機使用的UEFI韌體,支援Secure Boot(安全開機)。

參見 Ubuntu安裝QEMU/KVM Arch Linux安裝QEMU/KVM

2 自簽Secure Boot金鑰
#

(此步驟非必須)

Secure Boot非必須,Windows 11只要BIOS有Secure Boot就可以了,不用啟用也能安裝。

參照Stack Exchange的作法,你得自簽一個Secure Boot金鑰給QEMU的UEFI使用。

  1. 生成platform key
openssl req -newkey rsa:2048 -nodes -keyout PKpriv.key -x509 -days 365 -out PK.crt
openssl x509 -in PK.crt -outform der -out PK.der
  1. 下載Microsoft Corporation KEK CA 2011和Microsoft Windows Production CA 2011金鑰
wget https://go.microsoft.com/fwlink/p/?linkid=321185
wget https://go.microsoft.com/fwlink/?LinkId=321192
  1. 製作含有金鑰的映像檔
# 建立32MB的fat32映像檔
qemu-img create -f raw keys.img 32M
dd if=/dev/zero of=keys.img bs=4M
mkfs.vfat keys.img
# 將其作為loopdevice掛載
losetup /dev/loop0 keys.img
mount /dev/loop0 /mnt
# 將金鑰複製進去
cp PK.der /mnt/PK.der
cp MicCorKEKCA2011_2011-06-24.crt /mnt/KEK.crt
cp MicWinProPCA2011_2011-10-19.crt /mnt/DB.crt
# 取消掛載
umount /dev/loop0
losetup -d /dev/loop0

3.安裝Windows 11虛擬機
#

有了Secure Boot和TPM,Windows 11虛擬機過程參考這篇: Linux安裝Windows 11虛擬機 (QEMU/KVM)

不過在開機進入Windows安裝程式前,需先啟用TPM 2.0和Secure Boot:

  1. 點選虛擬機的硬體列表,編輯硬體 → 新增TPM 2.0的模擬硬體

  2. 接著點選新增儲存→將含有Secure Boot金鑰的keys.img掛載。

  3. 將虛擬機開機,滑鼠點一下讓QEMU吃到主機的滑鼠。按Esc進入BIOS,用鍵盤移動,進入Device Manager → Secure Boot Configuration

  4. 將其設定為Custom Mode

  5. 之後會多出管理keys的選項,進入後用鍵盤選取PK

  6. 選取keys.img映像檔的金鑰。

  7. 確認匯入。以此類推將KEK和DB的金鑰也跟著匯入。

  8. Secure Boot會顯示Enabled,記得還要勾選Attempt Secure Boot

退出BIOS。這樣開機進入Windows 11安裝程式後,Windows 11就不會顯示電腦不支援了。

虛擬機開機後搜尋「系統資訊」,可以看到Secure Boot正常啟用。

按Windows + R,啟動tmp.msc亦能見到TPM 2.0正常載入。

參考資料
#

How to install a windows guest in qemu/kvm with secure boot enabled

相關文章

Gentoo Linux安裝QEMU/KVM和Virt Manager虛擬機軟體
Linux系統 虛擬機與容器技術 Gentoo QEMU Libvirt
在Arch Linux上安裝QEMU/KVM和Virt Manager虛擬機軟體
Linux系統 虛擬機與容器技術 Arch Linux QEMU Libvirt
如何將Libvirt的QEMU虛擬機轉換複製到實體機器上
Linux系統 虛擬機與容器技術 Libvirt QEMU

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。