Проблема
Многие установки 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
Объяснение
Я пытаюсь установить VirtualBox на WSL и получаю следующую ошибку:
$ 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 для Linux 1 (WSL 1) — это всего лишь уровень совместимостидля запуска исполняемых файлов Linux на Windows. Он не предоставляет намного больше функциональности, чем это. Особенно в вашем случае вы столкнулись с двумя неподдерживаемыми компонентами / функциями:
Уровни запуска
WSL не работает как отдельный экземпляр операционной системы, поэтому нет простого способа поддержки систем начальной загрузки и управления службами, как init
или systemd
как они присутствуют в реальных системах Linux. Следовательно, сегодня (2019-02) Ubuntu для WSL по-прежнему не поддерживает уровни запуска.
ядро Linux
Это фундаментальное ограничение в вашем случае. VirtualBox как гипервизор должен интегрироваться с ядром операционной системы (используя модули ядра). WSL — это просто слой совместимости. Настоящего Linux не работает (ядра Linux нет). Следовательно, VirtualBox не может скомпилировать свои модули ядра для WSL.
Если вы хотите запустить VirtualBox на машине Windows, установите версию Windows. Вы не можете запустить версию Linux внутри WSL 1.
Обновление для WSL 2
С момента написания оригинального ответа появился WSL 2. Архитектура WSL 2 сильно отличается. Он запускает полное ядро Linux внутри виртуальной машины Hyper-V. К сожалению, на сегодняшний день (2022-01) уровни выполнения по-прежнему не поддерживаются в стандартном WSL Ubuntu 20.04.
В Windows 11 вложенная виртуализация (запуск гипервизора, например KVM, внутри WSL 2) поддерживается как на процессорах Intel, так и на процессорах AMD, начиная со сборки WSL 20175. Возможно, с некоторой доработкой можно будет запустить VirtualBox внутри WSL 2. Похоже, эта комбинация официально не поддерживается ни Oracle, ни Microsoft.