질문
시스템이 현재 런레벨을 결정할 수 없기 때문에 많은 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 바이너리 실행 파일을 실행하는 데 사용됩니다. 그 외에는 많은 기능을 제공하지 않습니다. 특히 귀하의 경우에는 지원되지 않는 두 가지 구성 요소/기능이 있습니다.
런레벨
init
WSL은 운영 체제의 별도 인스턴스로 실행되지 않으므로 부트로더 및 서비스 관리 시스템(예: 실제 Linux 시스템의 시스템 ) 을 지원하는 쉬운 방법이 없습니다 systemd
. 따라서 현재(2019년 2월) WSL용 Ubuntu는 여전히 런레벨을 지원하지 않습니다.
리눅스 커널
이것이 귀하의 사례에 대한 근본적인 한계입니다. 하이퍼바이저로서의 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를 실행할 수 있을 것입니다. 오라클이나 마이크로소프트에서는 이 조합을 공식적으로 지원하지 않는 것 같습니다.