使用 Hyper-V 安裝 Ubuntu Server 24 ISO,無法安裝。

更新 發佈閱讀 11 分鐘

情景

Windows Hyper-V 安裝 ubuntu server 24 時遇見錯誤。提示 The signed image's hash is not allowed (DB)。

raw-image

解法

關閉 "啟用安全開機",並開啟 "啟用信賴平台模組"(如果你沒想根本解決,也可以選擇跳過此步驟)。

raw-image


成因

Secure Boot 的工作方式

  1. 開機時驗證
    Secure Boot 會在系統啟動時檢查所有的開機元件(bootloader、kernel、驅動程式)的數位簽章。 它比對的依據是存在 UEFI 韌體裡的信任資料庫(db),裡面有允許的憑證與雜湊值。
  2. 阻擋未簽章或不受信任的程式碼
    如果某個映像檔(例如 kernel image 或第三方驅動程式)的 hash 或簽章憑證不在資料庫裡,就會被判定為不可信,Secure Boot 會拒絕載入,出現你看到的錯誤訊息: 「the image's hash and certificate are not allowed」

為什麼關掉 Secure Boot 就好了

  • 關掉後不再檢查
    一旦停用 Secure Boot,UEFI 就不再檢查簽章或 hash。任何映像檔或驅動程式都能載入,不管它有沒有被簽章,或是用什麼憑證簽章。 因此即使該映像的 hash/cert 不在允許清單中,也不會被阻擋。
  • 本質上是跳過驗證機制
    Secure Boot 的目的是防止惡意軟體(bootkit、rootkit)在開機階段插入。如果關閉它,就等於告訴系統「不要驗證,直接執行就好」。

為什麼會遇到這種情況

  1. 自建或未簽章的 kernel/驅動:例如自己編的 Linux kernel 或某些第三方驅動程式。
  2. 使用社群版本:部分 Linux 發行版的某些模組沒有被 Microsoft 或 distro 的 key 簽章。
  3. Secure Boot 資料庫沒更新:信任清單(db)缺少必要的憑證,導致合法但未被登錄的映像被擋。

UEFI Secure Boot 的信任鏈與資料庫(都存於韌體 NVRAM):

  • PK(Platform Key):整機的「最高」信任根。
  • KEK(Key Exchange Key):允許更新 db/dbx 的「管理者」鑰。
  • db(Allow list):允許的憑證或雜湊(可載入)。
  • dbx(Deny list):撤銷名單(即使簽過也要擋)。

開機流程常見路徑(以 Linux 為例):

UEFI →(驗證)shim.efi(多半由 Microsoft 第三方 CA 簽)→(驗證)GRUB/systemd-boot →(驗證)Kernel(或 UKI) →(Kernel 內部)模組簽章強制

只要某一段的執行檔/模組的簽章鏈結不到 db(或被 dbx 撤銷),就會看到像「the image's hash and certificate are not allowed」之類的錯誤。

完整解法

1) 自建或未簽章的 kernel / 驅動(DKMS/第三方)

哪裡會卡?

  • 兩個常見層級:
    1. UEFI 層:若你把 kernel 打成 UKI(Unified Kernel Image, .efi) 或自行簽的 bootloader,要被 UEFI 直接驗證。你用的憑證若不在 db,就會被擋。
    2. Kernel 層(模組簽章強制):啟用 Secure Boot 時,Linux kernel 會進入 lockdown,只允許載入帶有效 X.509 簽章且鑰在 kernel 信任金鑰圈(built-in key 或 MOK 匯入的 key)的 .ko 模組。否則就會出現: module verification failed: signature and/or required key missing Required key not available

為什麼會這樣?

  • 你本機用 DKMS/手編的 .ko 沒被「系統已信任的公鑰」簽過;或你的 UKI/bootloader 用自簽憑證,但該公鑰沒在 db/MOK 之中。

要保留 Secure Boot 的解法(推薦做法)

  • 路線 A:MOK(Machine Owner Key)路線(最通用而且安全)
    1. 產生簽章鑰: openssl req -new -x509 -newkey rsa:2048 -keyout MOK.key -out MOK.crt -nodes -days 3650 -subj "/CN=My MOK/" openssl x509 -in MOK.crt -outform DER -out MOK.der
    2. 匯入 MOK(進 NVRAM,開機由 MokManager 互動確認): sudo mokutil --import MOK.der # 會要求你設定一組臨時密碼;重開機後在藍色畫面完成 Enroll
    3. 用這把鑰簽 內核模組(單檔範例): sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 MOK.key MOK.crt /path/to/module.ko 驗證: modinfo /path/to/module.ko | grep -i sig
    4. 若你是 UKI / .efi 路線,要讓 UEFI 也接受你的映像,可用 sbsign: sbsign --key MOK.key --cert MOK.crt --output vmlinuz.efi.signed vmlinuz.efi 然後由 shim/bootloader 載入這個已簽的映像。
  • 路線 B:讓 DKMS 自動簽
    • 多數發行版支援設定 DKMS 自動用你的 MOK key 簽新編出的模組(例如在 /etc/dkms/framework.conf 指定 sign_key、sign_cert,或用發行版提供的 helper)。
    • 這樣每次 kernel 更新後 DKMS 重編也會自動產生「已簽章」的 .ko。

2) 使用「社群版本」:沒有被 Microsoft 或發行版 key 簽章

典型情境

  • ZFS、NVIDIA(官方 runfile)、VirtualBox、VMware、某些 Wi-Fi/USB 驅動等,常用 DKMS 在你機器上即時編譯,因此不會帶上發行版的官方簽章。
  • 有些第三方套件雖然提供已簽的 .ko,但用的是他們自己的憑證,Linux kernel 不一定信任(除非把他們的公鑰編進 kernel 或用 MOK 匯入)。

哪裡會卡?

  • 幾乎都卡在 kernel 模組簽章強制(不是 UEFI 層),錯誤如上。

保留 Secure Boot 的解法

  • 還是用 MOK 路線最穩:把第三方供應者的公鑰(若有)或你自己的公鑰匯入 MOK,並確保模組是用該私鑰簽過。
  • 若供應者只提供未簽的 .ko,就用你自己的 MOK key 幫它簽。
  • 某些發行版(例如 Fedora/Ubuntu 的特定 repo)會替外部模組做「akmods/簽章整合」,只要你的 MOK 已匯入,系統就能自動簽。

3) Secure Boot 資料庫沒更新(或撤銷清單變動)

這一類比較常見在 UEFI 層 就被擋住,訊息會更像你看到的「image's hash and certificate are not allowed」。

常見子情境

  1. 機器的 db 裡根本沒有 Microsoft 第三方 UEFI CA
    • 有的 OEM/BIOS 把「允許第三方 UEFI CA」關掉了。這會導致 shim.efi(通常由 MS 第三方 CA 簽)直接被擋,連到 GRUB/Kernel 前就掛。
    • 解法:進 BIOS/UEFI,把「Allow Microsoft 3rd-party UEFI CA」打開,或進入 Custom Mode 手動把需要的 CA/憑證加進 db(風險高,不熟不建議)。
  2. dbx(撤銷名單)更新把舊的 shim/bootloader 撤銷了
    • 近年常因修補漏洞而把舊版 shim/GRUB 加進 dbx。結果:舊的、雖然被簽過,但因已被撤銷仍會被擋。
    • 解法:在 OS 內更新到新的 shim-signed/bootloader 套件(發行版會提供),同時讓韌體/OS 把 dbx 更新到最新。更新後新的 shim 有新的簽章,能過驗證。
  3. 你用自簽的 UKI / Bootloader,但憑證只進了 MOK,卻沒有走 shim 的驗證路徑
    • 注意:MOK 是 shim/Kernel 層用的(shim 驗證下一階段、Kernel 驗證模組)。UEFI 韌體本身不看 MOK。
    • 如果你嘗試讓 UEFI 直接載入你自簽的 .efi,但你的公鑰沒進 db,就會被擋。
    • 解法:要嘛讓 **shim(已被 MS 簽)**先起來,再由 shim 用 MOK 驗證你的下一階段;要嘛把你的公鑰放進 db(高風險,不建議一般使用者)。

診斷速查

搞清楚卡在哪一層

  • 看 Secure Boot 狀態:
    mokutil --sb-state
  • 看 Kernel 是否在鎖定模式/模組拒載:
    dmesg | egrep -i 'secureboot|lockdown|module verification|EFI'
  • 檢查 .efi 的簽章(UEFI 層相關):
    sbverify --list /path/to/image.efi
    # 或 pesign -S -i /path/to/image.efi
  • 檢查模組是否帶簽章(Kernel 層):
    modinfo /path/to/module.ko | grep -i sig
    keyctl list %:.system_keyring
    keyctl list %:.platform

風險與建議的優先順序

  1. 首選:MOK 路線(安全、通用、風險低)
    用 MOK 匯入你的公鑰;用同一把私鑰簽 UKI(若需要)與 .ko 模組。
  2. 更新發行版提供的 shim/bootloader
    解決 dbx 撤銷導致的阻擋。
  3. BIOS 內啟用「Microsoft 3rd-party UEFI CA」
    讓 shim 能被 UEFI 接受。
  4. 最後才考慮 Custom Mode 改 PK/KEK/db
    做錯可能導致整機無法開機;除非你在做企業級 key 基礎設施管理。
留言
avatar-img
留言分享你的想法!
avatar-img
Wei 的工程師聊什麼
3會員
5內容數
2024/03/04
用 Powershell 的 IDE ,寫一個在剪貼簿裡存 Timestamp 的無聊小程式。
Thumbnail
2024/03/04
用 Powershell 的 IDE ,寫一個在剪貼簿裡存 Timestamp 的無聊小程式。
Thumbnail
2024/02/13
本文介紹如何設置OpenAI API密鑰並使用Whisper API轉寫音訊檔案。文章詳細說明了轉寫單個音訊檔案,以及將長音訊分割並轉寫的過程。透過範例演示,讀者可以學習如何將音訊轉寫為文字,提高工作效率。
Thumbnail
2024/02/13
本文介紹如何設置OpenAI API密鑰並使用Whisper API轉寫音訊檔案。文章詳細說明了轉寫單個音訊檔案,以及將長音訊分割並轉寫的過程。透過範例演示,讀者可以學習如何將音訊轉寫為文字,提高工作效率。
Thumbnail
2024/02/11
結論 以下觀點只針對我看的房型、看區域的角度、跟符不符合我現在的需求而定。具有非常強烈的主觀意識,如果不喜歡可以當作看看笑笑就好,請不要找我吵架。 接待中心很大器,大廳很不錯。代銷一副想吵架的樣子,我真的不是友商來的間諜。(笑) 優點: 捷運近,家樂福近,運動中心近。 無聯通巷子內,安靜。
Thumbnail
2024/02/11
結論 以下觀點只針對我看的房型、看區域的角度、跟符不符合我現在的需求而定。具有非常強烈的主觀意識,如果不喜歡可以當作看看笑笑就好,請不要找我吵架。 接待中心很大器,大廳很不錯。代銷一副想吵架的樣子,我真的不是友商來的間諜。(笑) 優點: 捷運近,家樂福近,運動中心近。 無聯通巷子內,安靜。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
在安裝 NET Framework 3.5 時,可能遇到在 Windows 11 下無法安裝的問題。本文提供了一種解決方案......
Thumbnail
在安裝 NET Framework 3.5 時,可能遇到在 Windows 11 下無法安裝的問題。本文提供了一種解決方案......
Thumbnail
眾所皆知,Server版本是沒有內建桌面的。但有時候我們就是想要裝了server後又需要桌面,怎麼辦呢? 開始吧: sudo apt update sudo apt upgrade Display Manager安裝與選擇: GDM3、SLiM、LightDM都是選項; 我們用 SLiM
Thumbnail
眾所皆知,Server版本是沒有內建桌面的。但有時候我們就是想要裝了server後又需要桌面,怎麼辦呢? 開始吧: sudo apt update sudo apt upgrade Display Manager安裝與選擇: GDM3、SLiM、LightDM都是選項; 我們用 SLiM
Thumbnail
下載處: 安裝msi  https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 或單獨使用 https://the.earth.li/~sgtatham/putty/latest/w64/pscp.exe  安裝好可以
Thumbnail
下載處: 安裝msi  https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 或單獨使用 https://the.earth.li/~sgtatham/putty/latest/w64/pscp.exe  安裝好可以
Thumbnail
這篇文章紀錄了安裝Ubuntu Server的過程,包括選擇HWE內核、語言、更新安裝程式、語系、儲存配置等步驟。
Thumbnail
這篇文章紀錄了安裝Ubuntu Server的過程,包括選擇HWE內核、語言、更新安裝程式、語系、儲存配置等步驟。
Thumbnail
在先前的文章中說明了Linux大致上的安裝流程,整個過程只要依照畫面的指示設定,都可以安裝成功。其中可能比較困難在於硬碟空間的分配,這對於許多新手來說也是一個難點,也是這篇所要說的重點。
Thumbnail
在先前的文章中說明了Linux大致上的安裝流程,整個過程只要依照畫面的指示設定,都可以安裝成功。其中可能比較困難在於硬碟空間的分配,這對於許多新手來說也是一個難點,也是這篇所要說的重點。
Thumbnail
sudo apt-get update sudo apt-get upgrade sudo apt install lightdm sudo dpkg-reconfigure lightdm(option選項,如需要切換可以依據需求執行,參考畫面如下) 安裝 x11VNC sudo apt-
Thumbnail
sudo apt-get update sudo apt-get upgrade sudo apt install lightdm sudo dpkg-reconfigure lightdm(option選項,如需要切換可以依據需求執行,參考畫面如下) 安裝 x11VNC sudo apt-
Thumbnail
安裝 sudo apt-get update sudo apt install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop sudo apt-get install ti
Thumbnail
安裝 sudo apt-get update sudo apt install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop sudo apt-get install ti
Thumbnail
本文教授如何安裝Ubuntu伺服器,建議選擇偶數版本如22.04, 20.04, 18.04等LTS版本以獲得穩定的未來性支撐。
Thumbnail
本文教授如何安裝Ubuntu伺服器,建議選擇偶數版本如22.04, 20.04, 18.04等LTS版本以獲得穩定的未來性支撐。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News