問題

問題

問題

許多 apt-get 安裝失敗,因為系統無法確定當前的運行級別

背景規格:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
$ uname -a
Linux systemName 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux

說明

我嘗試在 WSL 上安裝 virtualbox,但出現以下錯誤:

$ VBoxManage --version
WARNING: The character device /dev/vboxdrv does not exist.
         Please install the virtualbox-dkms package and the appropriate
         headers, most likely linux-headers-Microsoft.

我解決了這個問題請依照以下步驟操作。到dpkg-reconfigure virtualbox-dkms

但後來我得到了以下資訊:

dpkg: warning: version '*-*' has bad syntax: version number does not start with digit
It is likely that 4.4.0-43-Microsoft belongs to a chroot's host
Module build for the currently running kernel was skipped since the
kernel source for this kernel does not seem to be installed.
invoke-rc.d: could not determine current runlevel

如何讓invoke-rc.d回傳正確的運行等級?

答案1

Windows Subsystem for Linux 1 (WSL 1) 只是相容層用於在 Windows 上運行 Linux 二進位可執行檔。除此之外,它沒有提供更多的功能。特別是在您的情況下,您遇到了兩個不支援的組件/功能:

運行等級

WSL 不會作為作業系統的單獨實例運行,因此沒有簡單的方法來支援引導程式和服務管理系統(例如真實 Linux 系統上的引導程式和服務管理系統initsystemd。因此,今天(2019 年 2 月)Ubuntu for WSL 仍然不支援運行等級。

Linux核心

這是您的情況的根本限制。 VirtualBox 作為虛擬機器管理程式需要與作業系統的核心整合(使用核心模組)。 WSL 只是一個相容層。沒有真正的 Linux 運行(沒有 Linux 核心)。因此 VirtualBox 無法為 WSL 編譯其核心模組。

如果您想在 Windows 電腦上執行 VirtualBox,請安裝 Windows 版本。您無法在 WSL 1 中執行 Linux 版本。

WSL 2 更新

自最初的答案撰寫以來,WSL 2 就已存在。 WSL 2 的架構非常不同。它在 Hyper-V 虛擬機器內運行完整的 Linux 核心。不幸的是,截至今天(2022 年 1 月),預設 WSL Ubuntu 20.04 仍然不支援運行等級。

在Windows 11 上,自WSL build 20175 起,Intel 和AMD CPU 都支援嵌套虛擬化(在WSL 2 中執行像KVM 這樣的虛擬機器管理程式)。似乎這種組合也不受官方支援由 Oracle 或 Microsoft 提供。

相關內容