將現有Win10 VM升級到Win11 - Linux

Table of Contents

前天M$正式發佈了Windows 11,雖然可能有些在很早之前的Preview版都知道怎麼操作

不過還是來分享一下怎麼把現有的Win10 VM在不重灌的情況下升級成Win11



目前大多數人都知道要升級成Win11,必須先滿足兩個條件
1. BIOS必須啟動並且OS已經是處在Secure Boot模式
2. 必須具備TPM,並且至少得是2.0版本


基於上述兩個需求,原Win10 VM也必須是在當初以UEFI模式安裝系統的情況下才可升級
當然網路上也可以查到怎麼樣不重灌從Legacy BIOS改成UEFI開機的方法
不過這不在本篇要介紹的範圍



1. 更新KVM相關驅動

VirtIO相關的Windows驅動在之前都是沒有經過WHQL認證的,這在Secure Boot上會有問題

不過最新的穩定版VirtIO驅動(0.1.208+)已經都有了WHQL認證

因此第一步是先更新這些驅動到最新版



2. 替換成支援Secure Boot的OVMF檔案

再來只要把現有的OVMF檔案換成secboot類型的即可

由於Win11的安裝ISO還有升級小幫手並不會偵測系統是否處在Secure Boot狀態

所以我們只要確保OVMF有Secure Boot功能即可,並不一定需要去啟用它

但有一點要留意,有些Linux distro所推送的OVMF_Sec並不會包含M$的簽章

目前知道的是Fedora與Ubuntu官方repo所提供的OVMF_Sec都已經包含簽章

其他的比如ArchLinux是沒有包含的,需要另外從其他distro上找



確定OK後,就可以直接替換檔案,方法是直接編輯VM的XML

把<loader>中的OVMF_CODE.fd改成OVMF_CODE.secboot.fd即可

另外除非你想要重置VM成啟用Secure Boot狀態,否則不需要去動xxx_VARS.fd

(xxx=VM名稱)

如果想啟用Secure Boot,則必須再做額外兩個修改

a. 將原先載入OVMF_CODE.secboot.fd的loader加入secure='yes'參數,變成:

<loader readonly='yes' type='pflash' secure='yes'>/path/of/OVMF_CODE.secboot.fd
</loader>

b. 找到OVMF_VARS.secboot.fd然後覆蓋掉原本的xxx_VARS.fd



3. 增加CPU features參數

之後還需要在XML內的<features>增加一個參數進去

<smm state='on'/>

加入後就像這樣 https://i.imgur.com/nmWHL3P.png



4. 加入TPM

TPM有兩種加入方式,一個是直接用KVM模擬的TPM,另一個是直接passthrough

後者的優點是日後比較不會遇到相容性問題,缺點是只能給一個VM使用

而且必須要先進BIOS清除前一筆TPM資料(如果有的話)


先講模擬TPM,KVM支援兩種模擬方式,分別是CRB及TIS

CRB僅支援TPM 2.0、TIS則支援大多數TPM版本


首先必須先安裝swtpm這個套件才可以使用模擬TPM,Fedora及Arch預設的repo可直接安裝

Ubuntu/Debian則要找第三方來源

裝好後,直接透過virt-manager或者是修改XML的方式加入:

<tpm module='tpm-crb'>
<backend type='emulator' version='2.0'/>
</tpm>


如果在使用CRB的情況下出現以下錯誤,則可以改用TIS試試

"qemu-system-x86_64: Requested buffer size of 3968 is smaller than host TPM's
fixed buffer size of 4096"



若要使用硬體TPM,在從BIOS啟用TPM功能後(AMD fTPM或是Intel PTT)

先看一下是否有在/dev內出現tpm0這個device

之後編輯XML加入TPM:

<tpm module='tpm-tis'>
<backend type='passthrough'>
<device path='/dev/tpm0'/>
</backend>
</tpm>








驅動、Secure Boot、與TPM都搞定後,便可以進到Win10 VM用M$的檢測工具

或者是Win11升級小幫手驗證是否可以升級

這些變動沒辦法改變原先Windows Update的判定狀態,所以沒辦直接用其升級

不過只要升級小幫手判定OK就可以直接做升級了

昨天經過這些修改後升級成功,目前VM內的系統已經是Win11



雖然用處不算大,還是給各位做一個參考

--
https://i.imgur.com/paUBacY.png
https://i.imgur.com/vsJ0Suy.png

--

All Comments

Elvira avatarElvira2021-10-10
錯板(誤
Sierra Rose avatarSierra Rose2021-10-12
我的NB沒TPM,要升win11只能活在VM中
Wallis avatarWallis2021-10-15
珍惜不會自動更新的Win7P VM,所以不升級 XD
Emma avatarEmma2021-10-18
感覺應該轉去微軟版XD
Genevieve avatarGenevieve2021-10-20
感謝分享 但 若非工作上 離不開office
Robert avatarRobert2021-10-23
我真的完全不想用 windows
Anthony avatarAnthony2021-10-26
(安慰樓上)還好我公司用的是office 365,勉強可以用瀏
覽器用office,運氣比你好一些
Ethan avatarEthan2021-10-28
WPS可以取代office嗎?自己只有拿來做ppt跟簡單excel
圖表,比libreoffice順暢很多,介面跟微軟幾乎一樣
Andy avatarAndy2021-10-31
no