Wednesday, April 03, 2019

解決Virtualbox無法在Secure boot下使用的問題

其實我的X1 Carbon 6th在Ubuntu 18.04遇到這個問題有些日子了,但總覺得沒有必需立馬解決它。

這個現象的主要原因是Virtualbox的dkms並不是預設Secure boot認得的firmware,所以當你想要運行Virtualbox時會碰到這個問題,kernel會一直無法掛載vboxdrv。

















解決的方法有兩種:

  • 回到BIOS/UEFI去關閉Secure boot。
  • 讓Secure boot保持運行,然後手動去註冊Virtualbox相關的kernel module。

這裡我選擇讓Secure boot保持運行並且產生MOK(Machine Owner Key)keys註冊到Secure boot,以下就來實作吧!

Steps:

  • 建立signing keys:

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"

  • 註冊Virtualbox相關的modules:


sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv) 
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)


  • 註冊keys到Secure boot:

sudo mokutil --import MOK.der
這個時候系統會要求你輸入一組密碼,先記起來等一下跑Enroll MOK utility時會用到。
  • Reboot system+運行MOK:
Enroll MOK -> Continue -> Yes -> Input password -> Reboot system again
這邊有個例子提供上述步驟的screenshots可以參考https://sourceware.org/systemtap/wiki/SecureBoot

  • 重新掛載vboxdrv與vboxnetflt: 

sudo modprobe vboxdrv
sudo modprobe vboxnetflt

  • 啟動Virtualbox


成功了!現在系統可以跑Virtualbox了。

No comments: