Computer >> Máy Tính >  >> Phần mềm >> Máy ảo

Tăng tốc 3D trong máy ảo - Phần 3:Máy chủ Linux &máy khách Linux - VMGL - (Tôi)có thể?

Đây là bài viết thứ ba về ảo hóa. Và có lẽ là một trong những khó khăn nhất. Cho đến nay, chúng tôi đã có hỗ trợ DirectX trong các sản phẩm VMware và hỗ trợ OpenGL trong VirtualBox, trong cả hai trường hợp chỉ khả dụng cho khách Windows. Việc lựa chọn nền tảng lưu trữ không thành vấn đề. Nhưng còn khách Linux thì sao?

Tôi nghĩ rằng điều này là không có nghĩa là được. Nhưng sau đó, tôi đọc một bài báo trên linux.com, cho biết cách thưởng thức 3D trên máy khách Linux, sử dụng ứng dụng có tên VMGL. Nó trông nhiều hơn hứa hẹn. Nó trông thật tuyệt; nhưng nó cũng có vẻ khó khăn. Đây không chỉ là 5-10 phút hack. Nhiệm vụ là một nhiệm vụ lớn. Vì vậy, tôi đã quyết định xem liệu điều này có thực sự được thực hiện hay không.

Và câu trả lời là ...

Câu trả lời là:Khi bạn nhìn thấy một bài viết/hướng dẫn/hướng dẫn/cách thực hiện sử dụng các cụm từ như "nó sẽ hoạt động" và "tất cả những gì bạn phải làm là..." - hãy cảnh báo! Bạn đang ở trong cho rất nhiều rắc rối.

Bài báo gốc, cũng như tài liệu ứng dụng của tác giả, không tính đến khoảng 90% công việc bẩn thỉu mà bạn sẽ phải làm chỉ để tiến gần đến mục tiêu của mình. Trong hướng dẫn này, tôi sẽ chỉ cho bạn tất cả các chi tiết khủng khiếp liên quan đến (có thể) để 3D của bạn hoạt động trong các máy ảo Linux. Tái bút Bạn có thể đọc thêm trong hai bài viết đầu tiên:

Tăng tốc 3D trong máy ảo - Phần 1:VMware &DirectX - Hướng dẫn

Tăng tốc 3D trong máy ảo - Phần 2:VirtualBox &OpenGL - Hướng dẫn

VMGL:Tăng tốc OpenGL 3D - phiên bản chưa cắt

Chúng ta sẽ bắt đầu với VMware Server và sau đó thử tương tự trên VirtualBox.

Cài đặt

Tải xuống các gói và cài đặt chúng thật dễ dàng. Chúng ở định dạng RPM, vì vậy nếu bạn đang chạy các bản phân phối dựa trên Debian (như Ubuntu), trước tiên bạn sẽ phải cài đặt gói ngoại lai và chuyển đổi RPM thành DEB. Vì vậy, trước tiên, hãy cài đặt người ngoài hành tinh:

Sudo apt-get cài đặt người ngoài hành tinh

Sau đó, chuyển đổi các gói RPM thành DEB:

người ngoài hành tinh -k package.rpm package.deb

Cuối cùng, cài đặt chúng:

rpm -i gói.rpm

hoặc

dpkg -i gói.deb

Thay thế tên chung cho các gói VMGL thực tế và cài đặt chúng, một lần trên máy chủ và một trên máy khách.

Lưu ý:Khi cài đặt RPM/DEB, bạn sẽ không thấy lỗi (hiển thị). Tuy nhiên, việc cố gắng cài đặt bằng cách sử dụng các nguồn được chứng minh là một mớ hỗn độn. Bạn sẽ phải đáp ứng rất nhiều phụ thuộc, bao gồm tất cả các gói xây dựng cần thiết - gcc, make, kernel source, kernel header - cộng với nhiều thứ khác, như imake, python và opengl header.

Thật không may, tác giả không buồn cung cấp cho bạn một danh sách đầy đủ các phụ thuộc cần thiết, vì vậy bạn sẽ phải đoán, bằng cách thử và sai, những gì bạn có thể cần hoặc không.

Và nguồn dường như bị hỏng hoàn toàn:

Và trên máy khách Ubuntu:

Rất có thể bạn sẽ bỏ cuộc ở giai đoạn này. Nhưng nếu bạn đã sử dụng các gói RPM/DEB, bạn có thể nghĩ rằng mọi thứ đã ổn, vì vậy bạn tiếp tục ...

Tải mô-đun

Bước tiếp theo của bạn là thay đổi tệp xorg.conf. Thêm một phần như thế này:

Phần "Mô-đun"
Tải "vmlext"
phần cuối

Khởi động lại cửa sổ guest X (Ctrl + Alt + Backspace) để các thay đổi có hiệu lực.

Khởi động máy chủ Xvnc

Tiếp theo, ở chế độ khách, hãy khởi chạy máy chủ Xvnc đã sửa đổi được cho là sẽ thực hiện tất cả các đường hầm OpenGL kỳ diệu cho chúng tôi.

Ah, đây là phần khó khăn. Vì tác giả đã sử dụng một phiên bản cũ của máy chủ, vì một lý do không xác định, ngoại trừ khả năng cao là anh ấy đã sử dụng bất cứ thứ gì họ đã sử dụng ở trường đại học của anh ấy, nên phiên bản này sẽ không hoạt động trên các bản phân phối hiện đại vì nó giả định các vị trí của tệp và thư mục không có mặt trên các bản phân phối hiện đại.

Cả trên SUSE 11.0 và Ubuntu 8.10, tôi đã phải thực hiện khá nhiều thao tác hack để máy chủ chạy mà không có bất kỳ lỗi nào. Bạn sẽ gặp rất nhiều lỗi, chẳng hạn như:

Tăng tốc 3D trong máy ảo - Phần 3:Máy chủ Linux &máy khách Linux - VMGL - (Tôi)có thể?

Đây là điều xảy ra khi các gói 2003 được sử dụng để tạo ứng dụng. May mắn thay, giải pháp là "đơn giản." Vì vậy, để khắc phục sự cố:

Tải xuống rgb.txt

Đó là sai lầm đầu tiên của chúng tôi. Tìm tệp ở đâu đó trên Internet (google nó). Tải xuống và đặt nó ở nơi mà gói sẽ tìm thấy. Trong chính tệp, hãy xóa bất kỳ dòng trống nào, vì chúng sẽ đưa ra các lỗi cú pháp.

Đặt tệp ở nơi máy chủ Xvnc mong đợi - hoặc tốt hơn, đặt tệp trong /etc/X11/rgb.txt và tạo các liên kết tượng trưng:

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

Vì vậy, nó trông như thế này:

Tăng tốc 3D trong máy ảo - Phần 3:Máy chủ Linux &máy khách Linux - VMGL - (Tôi)có thể?

Trông xấu xí, và nó là!

Bước tiếp theo của bạn là tạo các liên kết tượng trưng cho tất cả các phông chữ bị thiếu đó.

cd /usr/X11R6/lib/X11/phông chữ
Sudo ln -s /usr/share/phông chữ/X11/100dpi
Sudo ln -s /usr/share/phông chữ/X11/75dpi
sudo ln -s /usr/share/phông chữ/X11/mã hóa
Sudo ln -s /usr/share/fonts/X11/misc
sudo ln -s /usr/share/phông chữ/X11/Type1
Sudo ln -s /usr/share/phông chữ/X11/util

Và sau đó bạn nhận được:

Tăng tốc 3D trong máy ảo - Phần 3:Máy chủ Linux &máy khách Linux - VMGL - (Tôi)có thể?

Bây giờ, khi bạn khởi động máy chủ Xvnc, bạn VẪN gặp lỗi, nhưng lần này, nó sẽ hoạt động:

Bây giờ, trên máy chủ, hãy chạy vncviewer. Không cần phải nói, khách nên có một địa chỉ IP có thể truy cập được từ máy chủ. Điều đó có nghĩa là bạn cần kết nối mạng bắc cầu hoặc NAT cho các máy ảo khách.

vncviewer guest-ip-address:1

Nó sẽ trông như vậy:

Trên máy khách, xuất GLSTUB:

xuất GLSTUB=guest-ip-address:port

Trong trường hợp của chúng tôi, chúng tôi thấy rằng GLSTUB trỏ đến cổng tới 7001. Và địa chỉ IP khách của chúng tôi là 192.168.34.129, vì vậy chúng tôi sẽ xuất GLSTUB như thế này:

xuất GLSTUB=192.168.34.129:7001

Và bây giờ, ma thuật! Mọi thứ nên hoạt động.

Ừm, chỉ có nó là không. Chạy glxinfo không hiển thị trình điều khiển vmglext đang được sử dụng và chạy glxgears như được đề xuất cho thấy hiệu suất khủng khiếp như trước đây. Điều đó không có gì đáng ngạc nhiên, khi xem xét các gói bị hỏng.

Làm lại mọi thứ trong VirtualBox

Tôi nghĩ VMware Server với NAT và mã độc quyền của nó là vấn đề. Vì vậy, tôi đã thử mẹo tương tự, sử dụng máy chủ Ubuntu, chạy phiên bản VirtualBox OSE, với máy khách Ubuntu. Tôi cũng đã định cấu hình Kết nối mạng để thực hiện công việc này.

Mặc dù việc định cấu hình mạng bắc cầu không liên quan cụ thể đến chủ đề hiện tại, nhưng đây là bộ lệnh đẹp mắt mà bạn sẽ phải chạy để chủ nhà và khách giao tiếp với nhau. Để biết thêm chi tiết, bạn có thể muốn đọc:

VirtualBox - Tài liệu Ubuntu cộng đồng

Vì vậy, đây là những gì tôi đã làm (có thể không phản ánh chính xác nhu cầu/cấu hình của bạn):

1. Cài đặt các tiện ích cầu nối trên máy chủ

Bước đầu tiên là cài đặt các tiện ích cầu nối, để chúng ta có thể kết nối các giao diện mạng và chia sẻ địa chỉ IP.

sudo apt-get cài đặt bridge-utils

2. Khai báo bridge trong network script

Sau khi các tiện ích cầu nối được cài đặt, bạn sẽ phải khai báo nó trong tệp cấu hình mạng. Trên các hệ thống dựa trên Debian, như được trình bày ở đây, các cấu hình được giữ trong một tệp duy nhất, /etc/network/interfaces. Các bản phân phối dựa trên RedHat đã sử dụng các tập lệnh cấu hình riêng cho từng bộ điều hợp mạng riêng biệt.

Tái bút Vui lòng sử dụng địa chỉ IP tĩnh do bạn chọn.

Sudo gedit/etc/mạng/giao diện

Thêm vào tập tin trên:

tự động br0
iface br0 inet tĩnh
địa chỉ 192.168.3.100
mặt nạ mạng 255.255.255.0
cổng 192.168.3.1
bridge_ports eth0 vbox0

3. Khai báo bộ điều hợp mạng ảo cho VirtualBox

Điều này sẽ cho phép VirtualBox sử dụng cầu nối br0 của bạn:

Sudo gedit/etc/vbox/giao diện

Thêm vào tập tin trên:

vbox0 br0

4. Khởi động lại trình điều khiển mạng và VirtualBox

Sau khi các thay đổi được thêm vào tệp cấu hình, chúng tôi cần khởi động lại cả dịch vụ mạng và VirtualBox để các thay đổi có hiệu lực.

khởi động lại mạng dịch vụ sudo
sudo /etc/init.d/virtualbox-ose khởi động lại

5. Hack một tệp ở đây và ở đó để có quyền thích hợp

Bạn có thể cần thay đổi quyền đối với các thiết bị tạo đường hầm mạng để VirtualBox cũng có thể sử dụng chúng. Điều này được thực hiện như thế này:

sudo chown root:vboxusers /dev/net/tun
Sudo chmod 666/dev/net/tun

6. Định cấu hình khách để sử dụng bộ điều hợp ảo vbox0

Điều này được thực hiện trên máy chủ, bằng cách truy cập menu Cài đặt cho máy ảo có liên quan. Đây là một ảnh chụp màn hình đáng yêu:

7. Cấp nguồn cho máy khách và gán địa chỉ IP tĩnh

Địa chỉ này phải thuộc cùng một mạng con giống như cây cầu của chúng ta. Nói cách khác, chỉ cần tăng octet cuối cùng lên một.

sudo ifconfig <địa chỉ ip> lên

Trong trường hợp của chúng ta:

sudo ifconfig eth3 192.168.3.101 lên

8. Lặp lại tất cả các bước chúng ta đã làm trước đó

Quay lại phần đầu của phiên bản chưa cắt và chạy lại toàn bộ thiết lập. Và một lần nữa, nó sẽ không hoạt động. Ảo thuật?

Kết luận

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. Một sự xấu hổ. 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. Nó sẽ xảy ra. 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.

Chúc mừng.