將現有Win10 VM升級到Win11 - Linux
By Erin
at 2021-10-07T10:55
at 2021-10-07T10:55
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
--
不過還是來分享一下怎麼把現有的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
--
Tags:
Linux
All Comments
By Elvira
at 2021-10-10T03:09
at 2021-10-10T03:09
By Sierra Rose
at 2021-10-12T19:23
at 2021-10-12T19:23
By Wallis
at 2021-10-15T11:36
at 2021-10-15T11:36
By Emma
at 2021-10-18T03:50
at 2021-10-18T03:50
By Genevieve
at 2021-10-20T20:03
at 2021-10-20T20:03
By Robert
at 2021-10-23T12:17
at 2021-10-23T12:17
By Anthony
at 2021-10-26T04:31
at 2021-10-26T04:31
By Ethan
at 2021-10-28T20:44
at 2021-10-28T20:44
By Andy
at 2021-10-31T12:58
at 2021-10-31T12:58
Related Posts
如何在Dolphin顯示heic縮圖
By Olive
at 2021-10-05T23:38
at 2021-10-05T23:38
請問 Fedora 和 Arch 的選擇
By George
at 2021-10-02T11:39
at 2021-10-02T11:39
Debian echo 'hello' >> file.txt 問題
By Noah
at 2021-10-02T11:11
at 2021-10-02T11:11
let's encrypt過期啦
By Jack
at 2021-10-01T22:10
at 2021-10-01T22:10
讓連上Hotspot的裝置能在區網看到
By Quintina
at 2021-10-01T12:48
at 2021-10-01T12:48