Asunto
Muchas instalaciones de apt-get fallan porque el sistema no puede determinar el nivel de ejecución actual
Especificaciones de fondo:
$ 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
Explicación
Estoy intentando instalar virtualbox en WSL y aparece el siguiente error:
$ 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.
Resolví esto porsiguiendo estos pasos. A dpkg-reconfigure virtualbox-dkms
.
Pero luego obtuve lo siguiente:
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
¿Cómo se puede hacer que invoke-rc.d devuelva el nivel de ejecución correcto?
Respuesta1
El subsistema de Windows para Linux 1 (WSL 1) es solo una capa de compatibilidadpara ejecutar ejecutables binarios de Linux en Windows. No proporciona mucha más funcionalidad más allá de eso. Especialmente en su caso, encontró dos componentes/funciones no compatibles:
Niveles de ejecución
WSL no se ejecuta como una instancia separada de un sistema operativo, por lo que no existe una forma sencilla de admitir sistemas de administración de servicios y arranque init
como systemd
están presentes en los sistemas Linux reales. En consecuencia, hoy (2019-02) Ubuntu para WSL todavía no admite niveles de ejecución.
núcleo de linux
Ésta es la limitación fundamental en su caso. VirtualBox como hipervisor necesita integrarse con el kernel del sistema operativo (mediante módulos del kernel). WSL es solo una capa de compatibilidad. No hay ningún Linux real en ejecución (no hay kernel de Linux). En consecuencia, VirtualBox no puede compilar sus módulos del kernel para WSL.
Si desea ejecutar VirtualBox en una máquina con Windows, instale la versión de Windows. No puede ejecutar la versión de Linux dentro de WSL 1.
Actualización para WSL 2
Desde el momento en que se escribió la respuesta original, nació WSL 2. La arquitectura de WSL 2 es muy diferente. Ejecuta el kernel de Linux completo dentro de una máquina virtual Hyper-V. Lamentablemente, a día de hoy (2022-01), los niveles de ejecución todavía no son compatibles con el WSL predeterminado Ubuntu 20.04.
En Windows 11, la virtualización anidada (ejecutar un hipervisor como KVM dentro de WSL 2) es compatible con CPU Intel y AMD desde la versión 20175 de WSL. Tal vez con algunos ajustes sea posible ejecutar VirtualBox dentro de WSL 2. Parece que esta combinación tampoco es compatible oficialmente. por Oracle ni por Microsoft.