Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 기기

가상 머신의 3D 가속 - 3부:Linux 호스트 및 Linux 게스트 - VMGL - (Im)possible?

이것은 가상화에 대한 세 번째 기사입니다. 그리고 아마도 가장 어려운 것입니다. 지금까지 우리는 VMware 제품에서 DirectX를 지원하고 VirtualBox에서 OpenGL을 지원했으며 두 경우 모두 Windows 게스트에서만 사용할 수 있습니다. 호스트 플랫폼의 선택은 중요하지 않았습니다. 그러나 Linux 게스트는 어떻습니까?

이러면 안 된다고 생각했다. 그런데 linux.com에서 VMGL이라는 애플리케이션을 사용하여 Linux 게스트에서 3D를 즐길 수 있는 방법을 보여주는 기사를 읽었습니다. 유망한 것 이상으로 보였습니다. 멋져 보였다. 그러나 그것은 또한 어려워 보였다. 이것은 단지 5-10분의 해킹이 아니었습니다. 그 일은 큰 일이었습니다. 그래서 이것이 실제로 가능한지 확인하기로 결정했습니다.

그리고 대답은 ...

대답은 다음과 같습니다. "작동해야 합니다" 및 "당신이 해야 할 일은..."과 같은 문구를 사용하는 기사/튜토리얼/가이드/하우투를 볼 때 - 경고하십시오! 당신은 많은 문제에 처해 있습니다.

원본 기사와 작성자의 응용 프로그램 문서는 목표에 가까워지기 위해 수행해야 하는 더러운 작업의 약 90%를 고려하지 않습니다. 이 튜토리얼에서는 3D가 Linux 가상 머신에서 작동하도록 하는 것과 관련된(어쩌면) 관련된 소름끼치는 세부 사항을 모두 보여드리겠습니다. 추신 처음 두 기사에서 자세한 내용을 읽을 수 있습니다.

가상 머신의 3D 가속 - 1부:VMware 및 DirectX - 자습서

가상 머신의 3D 가속 - 2부:VirtualBox 및 OpenGL - 자습서

VMGL:OpenGL 3D 가속 - 자르지 않은 버전

VMware Server로 시작한 다음 VirtualBox에서 동일한 작업을 시도합니다.

설치

패키지를 다운로드하고 설치하는 것은 쉽습니다. RPM 형식이므로 Debian 기반 배포판(예:Ubuntu)을 실행하는 경우 먼저 Alien 패키지를 설치하고 RPM을 DEB로 변환해야 합니다. 따라서 먼저 외계인을 설치합니다.

sudo apt-get 설치 외계인

그런 다음 RPM 패키지를 DEB로 변환합니다.

외계인 -k package.rpm package.deb

마지막으로 설치하십시오:

rpm -i 패키지.rpm

또는

dpkg -i 패키지.deb

실제 VMGL 패키지의 일반 이름을 대체하고 호스트에 한 번, 게스트에 한 번 설치합니다.

참고:RPM/DEB를 설치할 때 (보이는) 오류가 표시되지 않습니다. 그러나 소스를 사용하여 설치하려는 시도는 완전히 엉망인 것으로 판명되었습니다. 모든 빌드 필수 패키지(gcc, make, 커널 소스, 커널 헤더)와 imake, python 및 opengl 헤더와 같은 다른 많은 패키지를 포함하여 풍부한 종속성을 충족해야 합니다.

불행하게도 작성자는 필요한 종속성의 전체 목록을 제공하지 않으므로 시행 착오를 통해 무엇이 필요할지 필요하지 않을지 추측해야 합니다.

그리고 소스가 완전히 깨진 것 같습니다:

그리고 우분투 게스트에서:

이 단계에서 포기할 가능성이 큽니다. 그러나 RPM/DEB 패키지를 사용했다면 모든 것이 잘 되었다고 생각할 수 있으므로 계속 진행합니다...

로드 모듈

다음 단계는 xorg.conf 파일을 변경하는 것입니다. 다음과 같은 섹션을 추가하십시오.

섹션 "모듈"
"vmglext" 로드
끝 섹션

변경 사항을 적용하려면 게스트 X 창(Ctrl + Alt + Backspace)을 다시 시작하십시오.

Xvnc 서버 시작

다음으로 게스트에서 모든 마법 같은 OpenGL 터널링을 수행하도록 수정된 Xvnc 서버를 시작합니다.

아, 여기 까다로운 부분이 있습니다. 작성자가 알 수 없는 이유로 구식 버전의 서버를 사용했기 때문에 대학에서 사용한 것을 제외하고 최신 배포판에서는 작동하지 않습니다. 존재하지 않는 파일 및 폴더의 위치를 ​​가정하기 때문입니다. 현대 배포판에.

SUSE 11.0과 Ubuntu 8.10 모두에서 오류 없이 서버를 실행하려면 꽤 많은 해킹을 수행해야 했습니다. 다음과 같은 많은 오류가 발생합니다.

가상 머신의 3D 가속 - 3부:Linux 호스트 및 Linux 게스트 - VMGL - (Im)possible?

2003 패키지를 사용하여 응용 프로그램을 만들면 이런 일이 발생합니다. 다행히 해결책은 "간단"합니다. 따라서 문제를 해결하려면:

rgb.txt 다운로드

이것이 우리의 첫 번째 오류입니다. 인터넷에서 파일을 찾습니다(Google it). 다운로드하여 패키지에서 찾을 것으로 예상되는 위치에 배치합니다. 구문 오류가 발생하므로 파일 자체에서 빈 줄을 삭제하십시오.

Xvnc 서버가 예상하는 위치에 파일을 배치하거나 /etc/X11/rgb.txt 아래에 배치하고 심볼릭 링크를 생성합니다.

cd /usr/X11R6/lib/X11
sudo ln -s /usr/share/X11/rgb.txt
cd /usr/share/X11
sudo ln -s /etc/X11/rgb.txt

따라서 다음과 같이 표시됩니다.

가상 머신의 3D 가속 - 3부:Linux 호스트 및 Linux 게스트 - VMGL - (Im)possible?

못생겼고, 그렇습니다!

다음 단계는 누락된 모든 글꼴에 대한 심볼릭 링크도 만드는 것입니다. cd /usr/X11R6/lib/X11/글꼴
sudo ln -s /usr/share/fonts/X11/100dpi
sudo ln -s /usr/share/fonts/X11/75dpi
sudo ln -s /usr/share/fonts/X11/encodings
sudo ln -s /usr/share/fonts/X11/misc
sudo ln -s /usr/share/fonts/X11/Type1
sudo ln -s /usr/share/fonts/X11/util

그러면 다음과 같은 결과가 나타납니다.

가상 머신의 3D 가속 - 3부:Linux 호스트 및 Linux 게스트 - VMGL - (Im)possible?

이제 Xvnc 서버를 시작하면 여전히 오류가 발생하지만 이번에는 작동합니다.

이제 호스트에서 vncviewer를 실행합니다. 말할 필요도 없이 게스트는 호스트에서 연결할 수 있는 IP 주소를 가지고 있어야 합니다. 즉, 게스트 가상 머신을 위한 브리지 또는 NAT 네트워킹이 필요합니다. vncviewer 게스트 IP 주소:1

다음과 같이 표시됩니다.

게스트에서 GLSTUB를 내보냅니다.

내보내기 GLSTUB=게스트 IP 주소:포트

우리의 경우에는 GLSTUB이 포트 7001을 가리키는 것을 볼 수 있습니다. 게스트 IP 주소는 192.168.34.129이므로 다음과 같이 GLSTUB를 내보낼 것입니다.

내보내기 GLSTUB=192.168.34.129:7001

그리고 지금, 마술! 모든 것이 작동해야 합니다.

음, 그렇지 않습니다. glxinfo를 실행해도 vmglext 드라이버가 사용 중인 것으로 표시되지 않고 제안된 대로 glxgears를 실행하면 이전과 동일한 최악의 성능을 보여줍니다. 깨진 패키지를 고려하면 놀라운 일이 아닙니다.

VirtualBox에서 모든 것을 다시 실행

NAT와 독점 코드가 있는 VMware Server가 문제라고 생각했습니다. 그래서 Ubuntu 게스트와 함께 VirtualBox OSE 에디션을 실행하는 Ubuntu 호스트를 사용하여 동일한 트릭을 시도했습니다. 또한 이 작업을 수행하기 위해 Bridged Networking을 구성했습니다.

브리지 네트워킹 구성은 당면한 주제와 구체적으로 관련이 없지만 호스트와 게스트가 통신하기 위해 실행해야 하는 멋진 명령 집합은 다음과 같습니다. 자세한 내용은 다음을 참조하십시오.

VirtualBox - 커뮤니티 우분투 문서

그래서 제가 한 일은 다음과 같습니다(귀하의 요구/구성이 정확히 반영되지 않을 수 있음).

1. 호스트에 브리지 유틸리티 설치

첫 번째 단계는 네트워크 인터페이스를 연결하고 IP 주소를 공유할 수 있도록 브리지 유틸리티를 설치하는 것입니다. sudo apt-get 설치 브리지 유틸리티

2. 네트워크 스크립트에서 브리지 선언

브리지 유틸리티가 설치된 후 네트워크 구성 파일에서 이를 선언해야 합니다. 여기에 설명된 대로 Debian 기반 시스템에서 구성은 /etc/network/interfaces라는 단일 파일에 보관됩니다. RedHat 기반 배포판은 각 네트워크 어댑터에 개별적으로 개별 구성 스크립트를 사용했습니다.

추신 자신이 선택한 고정 IP 주소를 사용하십시오. sudo gedit /etc/network/인터페이스

위 파일에 추가:

자동 br0
iface br0 inet 정적
주소 192.168.3.100
넷마스크 255.255.255.0
게이트웨이 192.168.3.1
bridge_ports eth0 vbox0

3. VirtualBox용 가상 네트워크 어댑터 선언

이렇게 하면 VirtualBox가 br0 브리지를 사용할 수 있습니다:

sudo gedit /etc/vbox/인터페이스

위 파일에 추가:

vbox0 <사용자 이름> br0

4. 네트워크 및 VirtualBox 드라이버 다시 시작

구성 파일에 변경 사항을 추가한 후 변경 사항을 적용하려면 네트워크 서비스와 VirtualBox를 모두 다시 시작해야 합니다. sudo 서비스 네트워킹 재시작
sudo /etc/init.d/virtualbox-ose 재시작

5. 적절한 권한을 얻기 위해 여기저기서 파일을 해킹합니다.

VirtualBox에서도 사용할 수 있도록 네트워크 터널링 장치에 대한 권한을 변경해야 할 수 있습니다. 이것은 다음과 같이 수행됩니다:

sudo chown 루트:vboxusers /dev/net/tun
sudo chmod 666 /dev/net/tun

6. vbox0 가상 어댑터를 사용하도록 게스트 구성

이는 관련 가상 머신의 설정 메뉴에 액세스하여 호스트 머신에서 수행됩니다. 다음은 멋진 스크린샷입니다.

7. 게스트 전원 켜기 및 정적 IP 주소 할당

이 주소는 브리지와 같은 서브넷에 속해야 합니다. 즉, 마지막 옥텟을 1씩 증가시키기만 하면 됩니다. sudo ifconfig <장치> 위로

우리의 경우:

sudo ifconfig eth3 192.168.3.101 위로

8. 이전에 수행한 모든 단계를 반복합니다

자르지 않은 버전의 시작 부분으로 돌아가서 전체 설정을 다시 실행하십시오. 그리고 다시 말하지만 작동하지 않습니다. 마법?

결론

As it turns out, enjoying 3D acceleration on Linux virtual machines is beyond 99.999995% of users, including knowledgeable geeks like me. The project, apparently someone's PhD, does feel like a true academic work:it's half-finished and it's unusable by normal people.

What beats me, though, is the claim that "you should all be set" after only a few minor hacks, as if we're talking cups of fresh morning dew. And the five-minute hack turns out to be 3-4 hours of misery. Why, on Earth, would someone use a 6-year old version of the Xvnc for the task?

However, I think what really annoys me the most is the fact someone actually released a product in such a shabby state. A shame. Well, not all is lost. We've had 2 out 3 working. VMware support for DirectX in Windows guests and VirtualBox support for OpenGL in Windows guests proved to be gems.

But lament not! VMware and Sun are big shots in the virtualization industry. It is only a matter of time before 3D acceleration becomes a happy reality for Linux users running Linux guests.

When all things are taken into consideration, the need for Linux host / Linux guest 3D acceleration seems less important. Windows users will probably only use Windows. If and when they need Linux, they will most likely dual-boot. Linux users will most likely want Windows guests, so they can use the legacy applications they need, and for this they already have a solution (or two). The Linux-in-Linux virtualization is a wicked idea, but it is not a priority with most people. It will happen. Mark my words.

To wrap it up, let's review what we did so far. We learned a few valuable lessons in this series of articles. We learned how to use VMware Server and VirtualBox so that we can enjoy 3D acceleration in our Windows guests. We learned a few more cool hacks and tricks along the way. Most importantly, we learned that desktop virtualization is in continuous evolution, taking us further in our goals and desires.

건배.