lxc: 컨테이너 내에서 virtualbox 실행

lxc: 컨테이너 내에서 virtualbox 실행

lxc컨테이너 내부에 VirtualBox가 설치되어 있습니다 . 그러나 가상 머신을 시작하려고 하면 다음 메시지가 나타납니다.

kernel driver not accessible (rc=1909)
....permission problem with /dev/vboxdrv.

이는 확실히 예측 가능한 보안 문제처럼 보입니다.

이 장치 드라이버에 컨테이너 액세스 권한을 부여하는 방법을 아는 사람이 있습니까 /dev/vboxdrv?

어떤 도움이나 조언이라도 대단히 감사하겠습니다.

답변1

LXC 호스트에서(Ubuntu로 가정):

  1. virtualbox-dkms, linux-headers-generic, 패키지를 설치 build-essential하고 커널 모듈이 로드되었는지 확인합니다.

    myhost$ sudo /etc/init.d/virtualbox status
    VirtualBox kernel modules are loaded.
    
  2. 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
    
  3. 노드 번호를 가져와 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
    
  4. 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
    
  5. 게스트의 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 커널 모듈을 로드하기 전에 호스트에 복사할 수 있습니다.

관련 정보