![lxc: 컨테이너 내에서 virtualbox 실행](https://linux55.com/image/48984/lxc%3A%20%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%20%EB%82%B4%EC%97%90%EC%84%9C%20virtualbox%20%EC%8B%A4%ED%96%89.png)
lxc
컨테이너 내부에 VirtualBox가 설치되어 있습니다 . 그러나 가상 머신을 시작하려고 하면 다음 메시지가 나타납니다.
kernel driver not accessible (rc=1909)
....permission problem with /dev/vboxdrv.
이는 확실히 예측 가능한 보안 문제처럼 보입니다.
이 장치 드라이버에 컨테이너 액세스 권한을 부여하는 방법을 아는 사람이 있습니까 /dev/vboxdrv
?
어떤 도움이나 조언이라도 대단히 감사하겠습니다.
답변1
LXC 호스트에서(Ubuntu로 가정):
virtualbox-dkms
,linux-headers-generic
, 패키지를 설치build-essential
하고 커널 모듈이 로드되었는지 확인합니다.myhost$ sudo /etc/init.d/virtualbox status VirtualBox kernel modules are loaded.
VirtualBox 장치 번호를 가져옵니다(내 경우에는 10, 55/56/57).
myhost$ ls -la /dev | grep vbox crw------- 1 root root 10, 57 Feb 25 08:22 vboxdrv crw------- 1 root root 10, 56 Feb 25 08:22 vboxdrvu crw------- 1 root root 10, 55 Feb 25 08:22 vboxnetctl
노드 번호를 가져와 LXC 게스트 구성에 추가합니다(
/var/lib/lxc/myguest/config
).## VirtualBox lxc.cgroup.devices.allow = c 10:57 rwm lxc.cgroup.devices.allow = c 10:56 rwm lxc.cgroup.devices.allow = c 10:55 rwm
LXC 게스트를 다시 시작하고, 패키지를 설치
virtualbox
하고, 장치 노드를 생성합니다.myguest$ sudo mknod -m 600 /dev/vboxdrv c 10 57 myguest$ sudo mknod -m 600 /dev/vboxdrvu c 10 56 myguest$ sudo mknod -m 600 /dev/vboxnetctl c 10 55
게스트의 VirtualBox가 커널 모듈을 볼 수 있는지 확인하십시오.
myguest$ sudo /etc/init.d/virtualbox status VirtualBox kernel modules are loaded.
답변2
VirtualBox Linux 커널 드라이버(vboxdrv)가 로드되지 않거나 /dev/vboxdrv에 권한 문제가 있습니다. 다음을 실행하여 커널 모듈을 재설정합니다.
'/etc/init.d/vboxdrv setup'
루트로. Ubuntu 또는 Fedora 사용자는 먼저 DKMS 패키지를 설치해야 합니다. 이 패키지는 Linux 커널 변경 사항을 추적하고 필요한 경우 vboxdrv 커널 모듈을 다시 컴파일합니다.
답변3
/dev/vboxdrv
해당 그룹에서 컨테이너를 시작하려면 "vboxuser" 그룹과 사용자가 있어야 합니다 . 사용자를 그룹에 추가한 다음 그룹 권한(예: chmod 660 /dev/vboxdrv
)이 있는지 확인하세요.
답변4
컨테이너에 커널 모듈이 컴파일되어 있으면 호스트 시스템에 virtualbox를 설치할 필요가 없습니다. LXC 컨테이너의 사전 부팅 스크립트 중에 이를 로드할 수 있습니다. 더 나은 보안을 위해 VBox 커널 모듈을 로드하기 전에 호스트에 복사할 수 있습니다.