Ubuntu 24.04使用virtualBox啟動虛擬機器提示Kernel driver not installed的解決辦法

超人都有病發表於2024-10-19

1.Ubuntu安裝virtualBox

  • 系統版本:Ubuntu 24.04.1 LTS,核心版本:Linux 6.8.0-47-generic
  • virtualBox官方下載對應ubuntu24.04系統的deb安裝包
  • 進入到下載檔案所在目錄使用如下apt命令安裝下載好的deb安裝包
    sudo apt install -f ./virtualBox*

2. 啟動虛擬機器提示“Kernel driver not installed”

由於我裝的是雙系統,ubuntu掛載了windows下使用的硬碟便於節省空間,windows下已經安裝了虛擬機器,因此這裡只需要註冊近來就好了,但是在啟動虛擬機器的時候遇到了問題,如圖:image
按照提示執行了sudo /sbin/vboxconfig控制檯資訊提示同樣的內容,只能從下面提示資訊找解決辦法了(其實我看出了關閉安全啟動就可以解決),網路上找了很久有兩個辦法我用的第二個辦法:

1.關閉bios安全啟動

2.按照提示資訊sign the kernel modules

  1. 安裝後續用的工具軟體(一般這些工具已經安裝了)
    sudo apt install mokutil libssl-dev

  2. 終端透過命令cd $(dirname $(modinfo -n vboxdrv))進入核心模組所在目錄(省的後續切換目錄,但是生成檔案需要root)

  3. 去掉核心模組檔案壓縮字尾,如果該目錄檔案是.ko.zst 結尾透過命令sudo zstd -d --rm vbox*改稱.ko結尾(如果已經是.ko結尾則忽略)

  4. 終端執行下面的命令(可能需要root)生成MOK 金鑰
    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Linux-6.8.0-47-ssl/"

  5. 對核心模組進行簽名(注意最後三個檔案的目錄是否正確),執行完後可以使用命令tail -c 28 vboxdrv.ko 查詢是否已經簽名,我的提示“~Module signature appended~”

點選檢視程式碼
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der ./vboxdrv.ko
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der ./vboxnetadp.ko
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der ./vboxnetflt.ko
  1. 新增MOK金鑰( 注意金鑰檔案目錄是否正確) 按照提示設定密碼
    sudo mokutil --import ./MOK.der

  2. 重啟電腦進入MOK management 按照提示 (第二個,第三個,第二個) 輸入密碼進入系統,這時候啟動虛擬機器就可以了

每次更新核心需要重新簽名


參考文章

  • [stackoverflow] https://stackoverflow.com/questions/38437264/i-cant-execute-command-modprobe-vboxdrv

相關文章