質問
システムが現在ランレベルを決定できないため、多くの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
WSL 1(Linux用のWindowsサブシステム1)は、互換性層にすぎません。WindowsでLinuxバイナリ実行可能ファイルを実行するために使用されます。それ以外は多くの機能を提供しません。特に、お客様の場合、サポートされていない2つのコンポーネント/機能があります。
ランレベル
init
WSLはオペレーティングシステムの別々のインスタンスとして実行されないため、ブートローダおよびサービス管理システム(たとえば、実際のLinuxシステムのシステム)をサポートする簡単な方法はありませんsystemd
。したがって、現在(2019年2月)、WSL用Ubuntuはまだランレベルをサポートしていません。
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ビルド20175以降、IntelとAMD CPUの両方がネストされた仮想化(WSL 2でKVMなどのハイパーバイザーを実行)をサポートしています。おそらく、いくつかの調整でWSL 2でVirtualBoxを実行できます。 OracleやMicrosoftではこの組み合わせを正式にサポートしていないようです。