Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Cách Fix Màn hình Đen VirtualBox Khi Bật 3D Acceleration

Virtualization là một công nghệ tiện lợi, cho phép bạn "inception" hệ điều hành - chạy OS trên OS khác, máy tính trong máy tính, nghĩa là flexibility, legacy support, khả năng test software trên nhiều platform, isolation, và sau đó, hỗ trợ hạn chế cho fancy graphics.

Vài năm nay, VirtualBox có option bật 3D acceleration trong VM, có thể giúp cung cấp trải nghiệm mượt mà hơn, vì một số stuff graphics-intensive được làm hiệu quả hơn. Chưa bao giờ có perfect solution, nhưng nó tốt hơn không, trừ những tình huống things go wrong. Như bật VirtualBox Guest Additions rồi bị black screen ở next login. Vâng, chúng ta nên rectify đó. Tutorial này chỉ cách work out của black screen situation mà không cần reinstall, thậm chí enable proper 3D acceleration.

Vấn đề

Chi tiết hơn, bạn có VirtualBox chạy, và bạn cài Ubuntu-based flavor làm guest OS. Native, Ubuntu đi kèm basic driver set cung cấp mouse host-guest integration và screen resizing, nhưng một số feature như shared folders và/hoặc clipboard sharing có thể không chạy. Vì vậy bạn sẽ muốn cài Guest Additions từ ISO cho full plethora of capabilities. Bạn sẽ cần reboot hoặc restart graphical section để get it working. Nhưng vấn đề là, bạn có thể không bao giờ đến next login - bạn chỉ thấy black screen. Chúng ta làm gì bây giờ?

Giới thiệu về Linux Desktop Session

Hãy bắt đầu với basics. Trước hết, tạo snapshot VM trước khi cài Guest Additions. Cách này, bạn recover nhanh và dễ. Theo một cách, này không khác với việc backup data và system image trên hệ thống vật lý thật trước khi làm thay đổi lớn, quan trọng.

Thứ hai, nếu có vấn đề với desktop session login, bạn có thể muốn quen với cách session management được làm under the hood. Gnome-based desktop dùng Gnome Desktop Manager (gdm) cho login. Cấu hình thực tế cho mỗi user lưu dưới:

/var/lib/AccountServices/users/(user)

File (cho mỗi) user sẽ chứa declarations định nghĩa user session start như thế nào:

...
[User]
XSession=plasma
SystemAccount=false
...

Nếu bạn muốn hệ thống start với default session, bạn có thể dùng blank XSession entry. Hoặc dùng gì đó như ubuntu. Tên các session này correspond đến desktop session files dưới /usr/share/xsessions/. File điển hình sẽ chứa entries cần thiết để start đúng process (desktop environment). Giống như:

[Desktop Entry]
Type=XSession
Exec=/usr/bin/startkde
TryExec=/usr/bin/startkde
DesktopNames=KDE
Name=Plasma
...

Điều khác cần tính đến: X11 vs Wayland. Cái sau có thể không chạy tốt trong môi trường VM, nên bạn có thể test desktop behavior (black screen included) bằng cách edit gdm config cần thiết, và enable/disable Wayland. Điều này làm qua file /etc/gdm/custom.conf. Ở đó, tìm dòng sau và comment/uncomment as needed:

#WaylandEnable=false

Đây là very first steps trong troubleshooting bất kỳ black screen hoặc login issue. Bạn cũng có thể cân nhắc disable automatic login, vì nếu có issue session-specific liên quan đến desktop environment nhất định, bạn không muốn stuck trong constant login loop trying to reach broken session. Và bây giờ chúng ta biết tất cả đó, chúng ta có thể quay lại làm VM stuff.

Giải pháp

Chúng ta cần recover desktop trước, để thực sự có thể làm việc. Thứ nhất, để reach virtual console trong VirtualBox, nhấn Right Ctrl (default Host button) + F1-7. Điều này nên cho bạn virtual console bên trong guest mà không conflict với host's Ctrl + Alt + F1-7 combo. Thật không may, bạn có thể thậm chí không có virtual console, nên điều này có thể khá tricky, nhưng có vài cách around it, không cần reinstall. Nhớ, chúng ta không muốn waste time với đó.

Thứ hai, disable 3D acceleration. Power down VM, mở settings, và untick box đúng. Start máy, và bạn nên reach desktop không black screen. Nghĩa là bạn có working system, và bạn có thể commit sửa broken state properly. Nói chung, combination của có snapshot, dùng virtual console, và 3D acceleration toggle nên cho bạn đủ flexibility để troubleshoot issue loại này mà không despair.

Cài VirtualBox Guest Additions từ Repositories

Okay, vậy, nếu bạn gặp vấn đề dùng driver từ ISO, bạn sẽ muốn thử repo-provided content (while aware of limitations). Trước hết, uninstall driver từ ISO bằng cách rerun script với option uninstall:

sudo /media/(user)/(VirtualBox ISO path)/VBoxLinuxAdditions.run uninstall

Reboot. Bây giờ, chạy cài đặt từ repository. Nếu bạn chạy Wayland, bạn cần:

sudo apt-get install virtualbox-guest-utils

Nếu bạn chạy X11 (most likely, đặc biệt bên trong VirtualBox), bạn cần:

sudo apt-get install virtualbox-guest-x11

Power down máy lại. Toggle 3D acceleration back on. Start VM, và nó nên chạy tốt. Đây là first step toward achieving our goal. Settings in place, và desktop working as expected.

3D Acceleration Thực sự Hoạt động?

Nhưng chúng ta vẫn không really biết nếu chúng ta có 3D acceleration enabled trong guest OS. Cách dễ nhất check là với lệnh glxinfo, part of mesa-utils package.

sudo apt-get install mesa-utils

Và chạy glxinfo, check xem direct rendering có dùng không:

glxinfo | grep direct
direct rendering: Yes
GL_ARB_direct_state_access, GL_ARB_draw_buffers,
...

Nếu output nói Yes, thì bạn có 3D acceleration. Chúc mừng. Bây giờ, nó có thể không smooth hoặc fast như native driver, nhưng chúng ta getting there. Điều quan trọng nhất là, no black screen. Với method này, bạn sẽ không có shared folders và advanced stuff khác tôi nhắc trước, nhưng có cách around đó, cũng, như chúng ta sẽ nói trong future tutorial.

Kết luận

Có nhiều stuff ở đây, nhưng hy vọng, tất cả đều good và fun. Chúng ta focus trên cách modern Linux system manage desktop session. Chúng ta cũng học cách toggle Wayland on và off. Sau đó, chúng ta nói về difference giữa ISO và repo-provided driver, cách dùng chúng, và various methods để keep system in robust shape, nên nếu things go wrong, bạn có thể recover nhanh.

3D acceleration từ từ, dần dần getting better trong sản phẩm virtualization, making them ever more useful. Đôi khi, complexity của stack may rise against you. Nhưng ngay cả khi things look rather bleak - và trông như desktop bị busted, có nice, elegant ways để work around chúng. Chúng ta muốn efficient và non-destructive. Hôm nay, mission accomplished. See you later, virtual gator.

Chúc vui.