Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

การเร่งความเร็ว 3 มิติในเครื่องเสมือน - ตอนที่ 3:โฮสต์ Linux &ผู้เยี่ยมชม Linux - VMGL - (ฉัน) เป็นไปได้ไหม

นี่เป็นบทความที่สามเกี่ยวกับการจำลองเสมือน และน่าจะยากที่สุด จนถึงตอนนี้ เราได้รับการสนับสนุน DirectX ในผลิตภัณฑ์ VMware และการสนับสนุน OpenGL ใน VirtualBox ในทั้งสองกรณีมีให้บริการสำหรับผู้เยี่ยมชม Windows เท่านั้น การเลือกแพลตฟอร์มโฮสต์นั้นไม่สำคัญ แต่แขกของ Linux ล่ะ?

ฉันคิดว่านี่ไม่ได้หมายความว่าจะเป็น แต่จากนั้น ฉันอ่านบทความบน linux.com ซึ่งแสดงวิธีการเพลิดเพลินกับ 3D บน Linux แขก โดยใช้แอปพลิเคชันชื่อ VMGL มันดูมีความหวังมากกว่า มันดูดี; แต่มันก็ดูยากเช่นกัน นี่ไม่ใช่การแฮ็คเพียง 5-10 นาทีเท่านั้น งานเป็นเรื่องใหญ่ ดังนั้นฉันจึงตัดสินใจดูว่าสามารถทำได้จริงหรือไม่

และคำตอบคือ ...

คำตอบคือ:เมื่อคุณเห็นบทความ / แบบฝึกหัด / คู่มือ / วิธีการที่ใช้วลีเช่น "ควรใช้งานได้" และ "สิ่งที่คุณต้องทำคือ ... " - ระวัง! คุณกำลังมีปัญหามากมาย

บทความต้นฉบับรวมถึงเอกสารประกอบการสมัครของผู้เขียน ไม่ได้คำนึงถึงงานสกปรกประมาณ 90% ที่คุณต้องทำเพื่อเข้าใกล้เป้าหมายของคุณ ในบทช่วยสอนนี้ ฉันจะแสดงรายละเอียดที่น่าสยดสยองทั้งหมดที่เกี่ยวข้องกับ (อาจจะ) ทำให้ 3D ของคุณทำงานในเครื่องเสมือน Linux ป.ล. คุณสามารถอ่านเพิ่มเติมได้ในสองบทความแรก:

การเร่งความเร็ว 3 มิติในเครื่องเสมือน - ตอนที่ 1:VMware &DirectX - บทช่วยสอน

การเร่งความเร็ว 3 มิติในเครื่องเสมือน - ตอนที่ 2:VirtualBox &OpenGL - บทช่วยสอน

VMGL:การเร่งความเร็ว OpenGL 3D - เวอร์ชันที่ไม่ได้เจียระไน

เราจะเริ่มต้นด้วย VMware Server จากนั้นลองแบบเดียวกันบน VirtualBox

การติดตั้ง

การดาวน์โหลดแพ็คเกจและติดตั้งนั้นง่ายมาก พวกมันอยู่ในรูปแบบ RPM ดังนั้นหากคุณใช้ distros ที่ใช้ Debian (เช่น Ubuntu) คุณจะต้องติดตั้งแพ็คเกจเอเลี่ยนก่อนและแปลง RPM เป็น DEB ก่อนอื่นให้ติดตั้งเอเลี่ยน:

sudo apt-get ติดตั้งเอเลี่ยน

จากนั้น แปลงแพ็คเกจ RPM เป็น DEB:

เอเลี่ยน -k package.rpm package.deb

สุดท้าย ติดตั้ง:

รอบต่อนาที -i package.rpm

หรือ

dpkg -i package.deb

แทนที่ชื่อทั่วไปสำหรับแพ็คเกจ VMGL จริงและติดตั้ง หนึ่งครั้งบนโฮสต์และอีกชื่อหนึ่งบนแขก

หมายเหตุ:เมื่อติดตั้ง RPM/DEB คุณจะไม่เห็นข้อผิดพลาด (มองเห็นได้) อย่างไรก็ตาม การพยายามติดตั้งโดยใช้แหล่งที่มานั้นได้รับการพิสูจน์แล้วว่ายุ่งเหยิงโดยสิ้นเชิง คุณจะต้องตอบสนองการพึ่งพาที่มีอยู่มากมาย รวมถึงแพ็คเกจที่จำเป็นต่อการสร้างทั้งหมด - gcc, make, kernel source, kernel headers - และอื่น ๆ อีกมากมาย เช่น imake, python และ opengl headers

น่าเสียดายที่ผู้เขียนไม่ต้องการให้รายการการพึ่งพาที่จำเป็นทั้งหมดแก่คุณ ดังนั้นคุณจะต้องเดาโดยการลองผิดลองถูก สิ่งที่คุณอาจต้องการหรือไม่ต้องการ

และดูเหมือนว่าแหล่งที่มาจะเสียหายอย่างสิ้นเชิง:

และในแขกของ Ubuntu:

มีแนวโน้มว่าคุณจะยอมแพ้ในขั้นตอนนี้ แต่ถ้าคุณใช้แพ็คเกจ RPM/DEB คุณอาจคิดว่าทุกอย่างเรียบร้อยดี คุณจึงดำเนินการต่อ ...

โหลดโมดูล

ขั้นตอนต่อไปคือเปลี่ยนไฟล์ xorg.conf เพิ่มส่วนดังนี้:

ส่วน "โมดูล"
โหลด "vmglext"
ส่วนท้าย

รีสตาร์ทหน้าต่าง X ของแขก (Ctrl + Alt + Backspace) เพื่อให้การเปลี่ยนแปลงมีผล

เริ่มเซิร์ฟเวอร์ Xvnc

ต่อไป ในแขก ให้เปิดใช้เซิร์ฟเวอร์ Xvnc ที่ได้รับการดัดแปลง ซึ่งควรจะทำการสร้างช่องสัญญาณ OpenGL ที่มหัศจรรย์ทั้งหมดให้เรา

อ่า มาถึงส่วนที่ยุ่งยากแล้ว เนื่องจากผู้เขียนใช้เซิร์ฟเวอร์เวอร์ชันโบราณโดยไม่ทราบสาเหตุ ยกเว้นส่วนใหญ่เป็นไปได้ว่าเขาใช้อะไรก็ตามที่ใช้ในมหาวิทยาลัยของเขา เซิร์ฟเวอร์จึงล้มเหลวในการทำงานกับการกระจายสมัยใหม่ เนื่องจากถือว่าตำแหน่งของไฟล์และโฟลเดอร์ที่ไม่มีอยู่ บนการกระจายที่ทันสมัย

ทั้งใน SUSE 11.0 และ Ubuntu 8.10 ฉันต้องทำการแฮ็คเล็กน้อยเพื่อให้เซิร์ฟเวอร์ทำงานโดยไม่มีข้อผิดพลาด คุณจะได้รับข้อผิดพลาดมากมาย เช่น:

การเร่งความเร็ว 3 มิติในเครื่องเสมือน - ตอนที่ 3:โฮสต์ Linux &ผู้เยี่ยมชม Linux - VMGL - (ฉัน) เป็นไปได้ไหม

นี่คือสิ่งที่เกิดขึ้นเมื่อใช้แพ็คเกจ 2003 เพื่อสร้างแอปพลิเคชัน โชคดีที่วิธีแก้ปัญหานั้น "ง่าย" ดังนั้น เพื่อแก้ไขปัญหา:

ดาวน์โหลด rgb.txt

นั่นเป็นข้อผิดพลาดแรกของเรา ค้นหาไฟล์ที่ไหนสักแห่งบนอินเทอร์เน็ต (google it) ดาวน์โหลดและวางไว้ในตำแหน่งที่คาดว่าจะพบแพ็คเกจ ในไฟล์ ให้ลบบรรทัดว่างใดๆ เนื่องจากจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์

วางไฟล์ในตำแหน่งที่เซิร์ฟเวอร์ Xvnc ต้องการ - หรือดีกว่า วางไว้ใต้ /etc/X11/rgb.txt และสร้างลิงก์สัญลักษณ์:

ซีดี /usr/X11R6/lib/X11
sudo ln -s /usr/share/X11/rgb.txt
ซีดี /usr/share/X11
sudo ln -s /etc/X11/rgb.txt

ดังนั้นดูเหมือนว่า:

การเร่งความเร็ว 3 มิติในเครื่องเสมือน - ตอนที่ 3:โฮสต์ Linux &ผู้เยี่ยมชม Linux - VMGL - (ฉัน) เป็นไปได้ไหม

ดูน่าเกลียดและมันก็!

ขั้นตอนต่อไปของคุณคือสร้างลิงก์สัญลักษณ์สำหรับแบบอักษรที่ขาดหายไปทั้งหมดด้วย

ซีดี /usr/X11R6/lib/X11/fonts
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.dll

จากนั้นคุณจะได้รับ:

การเร่งความเร็ว 3 มิติในเครื่องเสมือน - ตอนที่ 3:โฮสต์ Linux &ผู้เยี่ยมชม Linux - VMGL - (ฉัน) เป็นไปได้ไหม

ตอนนี้ เมื่อคุณเริ่มเซิร์ฟเวอร์ 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

ฉันคิดว่าเซิร์ฟเวอร์ VMware ที่มี NAT และรหัสกรรมสิทธิ์เป็นปัญหา ดังนั้นฉันจึงลองใช้กลอุบายเดียวกันโดยใช้โฮสต์ Ubuntu ซึ่งใช้งาน VirtualBox OSE รุ่นกับแขกของ Ubuntu ฉันยังกำหนดค่า Bridged Networking เพื่อให้ใช้งานได้

แม้ว่าการกำหนดค่าเครือข่ายแบบบริดจ์จะไม่เกี่ยวข้องกับหัวข้อที่เกี่ยวข้องโดยเฉพาะ แต่นี่คือชุดคำสั่งที่สวยงามที่คุณจะต้องเรียกใช้เพื่อให้โฮสต์และแขกติดต่อสื่อสารกัน สำหรับรายละเอียดเพิ่มเติม คุณอาจต้องการอ่าน:

VirtualBox - เอกสารคู่มือชุมชน Ubuntu

นี่คือสิ่งที่ฉันทำ (อาจไม่ตรงกับความต้องการ / การกำหนดค่าของคุณ):

1. ติดตั้งโปรแกรมอรรถประโยชน์บริดจ์บนโฮสต์

ขั้นตอนแรกคือการติดตั้งโปรแกรมอรรถประโยชน์บริดจ์ เพื่อให้เราสามารถบริดจ์อินเทอร์เฟซเครือข่ายของเราและแบ่งปันที่อยู่ IP

sudo apt-get install bridge-utils

2. ประกาศบริดจ์ในสคริปต์เครือข่าย

หลังจากติดตั้งยูทิลิตี้บริดจ์แล้ว คุณจะต้องประกาศในไฟล์การกำหนดค่าเครือข่าย บนระบบที่ใช้เดเบียน ดังที่แสดงไว้ที่นี่ การกำหนดค่าจะถูกเก็บไว้ในไฟล์เดียว /etc/network/interfaces Distros ที่ใช้ RedHat ใช้สคริปต์การกำหนดค่าส่วนบุคคลสำหรับอะแดปเตอร์เครือข่ายแต่ละตัวแยกกัน

ป.ล. โปรดใช้ที่อยู่ IP แบบคงที่ที่คุณเลือกเอง

sudo gedit /etc/network/interfaces

เพิ่มไปยังไฟล์ด้านบน:

อัตโนมัติ 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/interfaces

เพิ่มไปยังไฟล์ด้านบน:

vbox0 <ชื่อผู้ใช้ของคุณ> br0

4. รีสตาร์ทเครือข่ายและไดรเวอร์ VirtualBox

หลังจากเพิ่มการเปลี่ยนแปลงลงในไฟล์การกำหนดค่าแล้ว เราจำเป็นต้องรีสตาร์ททั้งบริการเครือข่ายและ VirtualBox เพื่อให้การเปลี่ยนแปลงมีผล

รีสตาร์ทเครือข่ายบริการ sudo
sudo /etc/init.d/virtualbox-ose รีสตาร์ท

5. แฮ็กไฟล์ที่นี่และที่นั่นเพื่อรับสิทธิ์ที่เหมาะสม

คุณอาจต้องเปลี่ยนการอนุญาตเป็นอุปกรณ์อุโมงค์เครือข่ายเพื่อให้ VirtualBox สามารถใช้งานได้ สิ่งนี้ทำได้ดังนี้:

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

6. กำหนดค่าเกสต์เพื่อใช้อแด็ปเตอร์เสมือน vbox0

สิ่งนี้ทำได้ในเครื่องโฮสต์โดยการเข้าถึงเมนูการตั้งค่าสำหรับเครื่องเสมือนที่เกี่ยวข้อง นี่คือภาพหน้าจอที่น่ารัก:

7. เพิ่มพลังให้กับแขกและกำหนดที่อยู่ IP แบบคงที่

ที่อยู่นี้ควรเป็นของซับเน็ตเดียวกันกับบริดจ์ของเรา กล่าวอีกนัยหนึ่งคือเพิ่ม octet สุดท้ายทีละหนึ่ง

sudo ifconfig <อุปกรณ์> <ที่อยู่ ip> ขึ้น

ในกรณีของเรา:

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.

ไชโย