# Ubuntu 22.04.3 安裝設定VirtualBox ###### tags: `ubuntu` `virtualbox` ## 適用本記事的問題點 如果你建立的VM無法啟動,出現以下訊息 1. The virtual machine 'xxx' has terminated unexpectedly during startup with exit code  2. VirtualBox Kernel driver not installed (rc=1908)  先嘗試執行訊息中的指令 `sudo /sbin/vboxconfig` 會發現依然失敗 再嘗試安裝vbox的dkms套件,並載入模組 `sudo apt install virtualbox-dkms` 嘗試載入vbox所需的核心模組 `sudo modprobe vboxdrv` 若出現以下錯誤訊息 `modprobe: ERROR: could not insert 'vboxdrv': Key was rejected by service` 就表示需要簽章核心VirtualBox的模組 或是 *關閉你的系統使用的secure boot模式* ## 簽章vbox核心模組 `sudo apt-get install linux-headers-$(uname -r) mokutil` ### vbox的核心模組有哪些? 透過`sudo /sbin/vboxconfig`可得知有以下4種 1. `vboxdrv` 2. `vboxnetadp` 3. `vboxnetflt` 4. `vboxpci` 用`modinfo`可找出所在位置,發現不存在`vboxpci`不過我沒差 `modinfo -n vboxdrv vboxnetadp vboxnetflt vboxpci` /lib/modules/6.2.0-31-generic/updates/dkms/vboxdrv.ko /lib/modules/6.2.0-31-generic/updates/dkms/vboxnetadp.ko /lib/modules/6.2.0-31-generic/updates/dkms/vboxnetflt.ko modinfo: ERROR: Module vboxpci not found. ### 生成簽章檔案 以下指令生成 ```bash openssl req -new -x509 \ -newkey rsa:4096 -keyout MOK.priv -outform DER -out MOK.der \ -nodes -days 36500 -subj "/CN=VirtualBox/" ``` 1. 金鑰: `MOK.priv` 2. 憑證: `MOK.der` ### 簽章核心檔案 Ubuntu文件(舊)是直接用`kmodsign`簽章 **這裡不用這個XD** `kmodsign sha512 ./MOK.priv ./MOK.der modname.ko` 使用的是基於你目前系統核心的`sign-file`命令稿 **也不用這個XD** ```bash sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file \ sha256 ./MOK.priv ./MOK.der modname.ko ``` 我是直接跑以下script ```bash vboxkolist=$(modinfo -n vboxdrv vboxnetadp vboxnetflt vboxpci) for kopath in $vboxkolist do echo "Signing $kopath" sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file \ sha256 ./MOK.priv ./MOK.der "$kopath" done ``` 我使用的Ubuntu是`6.2.0-31-generic`,套件可用`sudo apt search linux-headers-$(uname -r)`搜出來 ### 使用Mokutil將憑證匯入UEFI 前面安裝的`mokutil`套件是的MOK匯入工具。MOK全名是Machine Owner Keys(機器擁有者金鑰),關於MOK和Secure boot的關係請參考[Debian的文件說明](https://wiki.debian.org/SecureBoot) `sudo mokutil --import MOK.der` 第一次會要求設定secure boot的金鑰  如果你在安裝Ubuntu 22.04.3時有設定secure boot的密碼,就需要在這裡輸入那時設定的密碼 重啟系統你的電腦 在還沒進入Ubuntu時就會會跑出MOK的藍色選單 請選擇第一個`Enroll MOK` > `Continue` > `Yes` > 輸入上面的密碼 然後就可以準備離開 重啟進入Ubuntu系統後,你的Virturalbox就能夠正常啟動VM 使用上述的步驟,我可以正常啟動VM的Virturalbox版本是6.1.38  ## 參考資料 - https://blog.csdn.net/sinat_38728944/article/details/106146036 - https://ubuntu.com/blog/how-to-sign-things-for-secure-boot - https://superuser.com/questions/1438279/how-to-sign-a-kernel-module-ubuntu-18-04 - https://stackoverflow.com/questions/38437264/i-cant-execute-command-modprobe-vboxdrv
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up