Không thể tự động hóa các cài đặt xrandr đáng tin cậy trong Debian 7 trên VirtualBox


23

Mặc dù có một số câu hỏi hiện có về vấn đề này (từ đó câu trả lời hữu ích nhất là vấn đề này ) và các chủ đề khác nhau trên các diễn đàn khác, tôi không thể đặt xrandrcài đặt của mình trong Debian 7 trên VirtualBox một cách đáng tin cậy .

Tôi đang cố gắng sử dụng xrandrđể kiểm soát cài đặt hiển thị của mình (thay vì cho phép môi trường máy tính để bàn tự động hóa chúng) vì tôi đang sử dụng trình i3quản lý cửa sổ , không tự động hóa cài đặt hiển thị hoặc sử dụng cài đặt hiển thị môi trường màn hình Gnome.

Thiết lập:

Tôi không chắc có liên quan đến điều này như thế nào, đặc biệt là phần cứng, vì tôi không nghĩ Debian thực sự có thể truy cập nhiều thông tin về thiết lập màn hình; theo như tôi có thể nói, VirtualBox chỉ báo cáo sự tồn tại của màn hình ảo như thể chúng là màn hình phần cứng.

Phần cứng

  • Máy tính xách tay Lenovo có đồ họa nVidia (GPU Intel tích hợp không được sử dụng, AFAIK - có cài đặt BIOS tôi đã sử dụng để thực hiện việc này)
    • Windows 7
    • RAM 32GB
    • Sử dụng trình điều khiển nVidia mới nhất (tôi nghĩ) (340.84) - điều này có thể quan trọng, vì tôi đã bật tính năng tăng tốc 3D trong VirtualBox (xem bên dưới), mà tôi nghĩ cho phép HĐH khách có quyền truy cập vào phần cứng máy chủ
  • Seiki 4K TV (được sử dụng làm màn hình) qua HDMI qua trạm nối (chuyển đổi bên trong DisplayPort sang HDMI)
  • Màn hình Samsung SyncMaster 243T quay dọc

VirtualBox

  • Sử dụng VirtualBox 4.3.20
  • Bổ sung khách (cùng phiên bản) được cài đặt
  • Số lượng màn hình: 2 (được gán cho Seiki và SyncMaster khi ở chế độ toàn màn hình)
  • Bộ nhớ video tối đa (128 MB) được sử dụng
  • Tăng tốc 3D được bật

Cài đặt khách

  • Debian 7 bit
  • gnomegdm3được cài đặt
  • WM ưa thích là i3

Hành vi:

Khi tôi khởi chạy i3và truy vấn xrandr, các cài đặt hiển thị mặc định luôn xuất hiện giống hệt nhau giữa VBOX0VBOX1hai "màn hình" mà VirtualBox báo cáo xrandr(ít nhất, đó là cách tôi hiểu nó; tôi có thể thiếu thứ gì đó). Lưu ý rằng theo như tôi có thể nói, không có cách nào tốt để biết VBOX # nào là màn hình thiếu thử nghiệm và lỗi.

Thông thường, điều này bao gồm độ phân giải hợp lý (nếu hơi thấp hơn bản địa) cho SyncMaster dọc của tôi, nhưng không có độ phân giải 4K cho Seiki. Tùy chọn "tự động thay đổi kích thước hiển thị của khách" trong VirtualBox dường như không ảnh hưởng xrandr.

Tôi đã thử các sửa đổi khác nhau của tập lệnh được mô tả trong câu trả lời được liên kết ở trên , nhưng nói chung tôi dường như nhận được nhiều xrandrlỗi khác nhau . Tôi không tìm thấy nhiều mối tương quan giữa những điều khác nhau tôi đã thử và những lỗi tôi gặp phải, nhưng đây là những điều chính có thể quan trọng:

Kịch bản chỉnh sửa

  • (Thông thường) bỏ qua các VBoxServicebước khởi động lại (dường như chúng không thay đổi xrandrhành vi)
  • Sử dụng xrandr --fbtùy chọn trước bất kỳ xrandrlệnh nào khác ; điều này đôi khi dẫn đến lỗi "màn hình được chỉ định không đủ lớn" được liệt kê bên dưới
  • Sử dụng 30 khung hình / giây thay vì 60 (4K qua HDMI hiện tại là tối đa 30 khung hình / giây, nhưng tôi không nghĩ điều này có vấn đề trong VirtualBox; trong mọi trường hợp tôi nghĩ đôi khi tôi đã làm việc và đôi khi nó bị lỗi cả hai cách)
  • Sử dụng cvtthay vì gtf(những thứ này dường như hoạt động theo cùng một cách)
  • Thay thế số đầu tiên được đưa ra bởi gtf(thường là khoảng 200 hoặc 300) với số nhỏ hơn, chẳng hạn như 100.00(tôi nghĩ rằng số này hoạt động một hoặc hai lần trên dòng lệnh, nhưng nhìn chung không tạo ra sự khác biệt)
  • Chọn ngẫu nhiên tên chế độ mới bằng cách sử dụng $RANDOM(Tôi cũng đã thử nhiều phương tiện khác để thay đổi tên)
  • Các --rmmodechế độ rõ ràng trước khi tạo chúng bằng cách sử dụng --newmode(điều này xuất hiện để ngăn lỗi "phông chữ" được liệt kê bên dưới)
  • Sử dụng --right-ofhoặc --left-ofkhi cài đặt --outputs (vì màn hình thường được nhân đôi theo mặc định)

Thông báo lỗi

  • xrandr: specified screen 5120x2160 not large enough for output VBOX0 (3840x2160+3840+0) X Error of failed request: BadValue (integer parameter out of range for operation) Tôi đã nhận được cái này ngay bây giờ khi chạy lại tập lệnh sau khi các màn hình đã được ép buộc với độ phân giải phù hợp của chúng (sử dụng công việc xung quanh được mô tả trong phần tiếp theo). Điều này làm tôi ngạc nhiên, bởi vì xrandrbáo cáo như sau: Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
  • X Error of failed request: BadMatch (invalid parameter attributes) Điều này đôi khi xảy ra khi cố gắng làm a --newmode. Nó có lẽ là lý do phổ biến thứ hai cho kịch bản thất bại. Tôi nghĩ rằng nó có thể là do xrandr"nhớ" tên của chế độ từ một nỗ lực trước đó để thiết lập nó, nhưng sử dụng $RANDOMkhông không xuất hiện để thống nhất giải quyết vấn đề, vì vậy nó có thể là một số vấn đề khác. (Tôi cho rằng có thể ngay cả khi $RANDOMcó xung đột tên.) Tôi chưa thấy lỗi này kể từ khi tôi bắt đầu sử dụng --rmmode, nhưng tôi đã không chạy tập lệnh đủ lần kể từ khi thêm lệnh đó để chắc chắn rằng nó đã tạo ra sự khác biệt hành vi.
  • X Error of failed request: BadMatch (invalid parameter attributes) Điều này đôi khi xảy ra khi cố gắng làm một --addmode. Nó có lẽ là lý do phổ biến nhất cho kịch bản thất bại, và nó làm tôi bối rối. Đôi khi, bằng tay (tức là trong một thiết bị đầu cuối) thực thi cùng một chuỗi các lệnh được sử dụng bởi tập lệnh dường như là một cách giải quyết khả thi cho lỗi này, điều này thật kỳ quái.

Cách giải quyết của Gnome:

Tôi đã thấy rằng nếu tôi đăng nhập vào máy tính để bàn Gnome, sau đó thực hiện chức năng "Tự động thay đổi kích thước hiển thị của khách" của VirtualBox, sau đó đăng xuất và đăng nhập lại i3, xrandrthường bao gồm các độ phân giải chính xác cho cả Seiki và SyncMaster trong tự động tạo của nó danh sách các chế độ và độ phân giải 4K được đặt thành độ phân giải "ưu tiên" cho mỗi màn hình VBOX. Điều này cho phép tôi chỉ đơn giản sử dụng xrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX], theo sau xrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution](lưu ý rằng độ phân giải SyncMaster vẫn phải được chỉ định thủ công, vì xrandrbáo cáo độ phân giải ưa thích giống nhau cho cả hai VBOX# mà không liên quan đến sự thật hay sự tỉnh táo).

Cách giải quyết này, một khi được thực hiện, dường như vẫn tồn tại trong suốt quá trình tắt và khởi động lại (nghĩa là các chế độ mong muốn vẫn có trong xrandrdanh sách chế độ, mặc dù tôi vẫn cần chạy hai xrandrlệnh sau khi bắt đầu i3phiên), nhưng không phải lúc nào cũng duy trì đăng xuất và bắt đầu một i3phiên mới . Lưu ý rằng gdm3màn hình đăng nhập không bao giờ có độ phân giải chính xác (theo như tôi đã thấy). Tôi không có bình luận gì thêm về sự kỳ lạ đang diễn ra ở đây.

EDIT: Cách tiếp cận này dường như không có kịch bản và hành vi thực sự dường như không nhất quán.

Ghi chú khác:

  • Tôi không có xconftệp (hoặc tương tự) trong etc/X11thư mục của mình .
  • Sửa màn hình là một vấn đề khá phổ biến, bởi vì bất cứ khi nào tôi tắt một trong những màn hình của mình, VirtualBox sẽ giết một trong những màn hình ảo toàn màn hình. (Urgh.)

Câu hỏi:

  • Có cách nào để phân biệt lập trình giữa các khả năng phần cứng thực tế (tức là độ phân giải gốc) của các màn hình khác nhau từ trong VirtualBox không?
  • Tại sao tôi thấy những lỗi khác nhau? Điều gì đang xảy ra với xrandr, vv?
  • Có cách nào đáng tin cậy để đạt được độ phân giải toàn màn hình phù hợp mà không yêu cầu tôi bắt đầu một gnomephiên trước i3phiên của mình không?

Có thể các vấn đề liên quan

  • Con trỏ chuột của tôi không đáng tin cậy xếp hàng chính xác với nơi phát hiện các nhấp chuột; nhấp chuột thường xảy ra bên dưới và bên phải của con trỏ. Khi tôi có các màn hình được cấu hình chính xác, sự cố này thường biến mất, mặc dù hiện tại các màn hình có độ phân giải chính xác nhưng con trỏ vẫn hơi tắt.
  • Khi tôi quản lý để có được độ phân giải chính xác, màn hình thỉnh thoảng nhấp nháy. Điều này gây phiền nhiễu nhưng có thể sống được. Bất kỳ ý tưởng những gì gây ra nó hoặc nếu nó có thể được sửa chữa?

Tôi sẽ cần tìm hiểu các ghi chú của mình nhưng các chế độ được hỗ trợ cho màn hình của bạn là gì? i3 có cách nào để bắt đầu tập lệnh trước / ngay sau khi đăng nhập không? superuser.com/questions/808737/ trên là những gì tôi đã làm với một vấn đề vật lý tương tự, nhưng điều này có thể cần một chút tinh chỉnh để làm việc trong trường hợp của bạn.
Journeyman Geek

@JTHERmanGeek 4K có hỗ trợ cho hầu hết các chế độ tiêu chuẩn ở 60 hz và hỗ trợ cho các chế độ lớn hơn (bao gồm 4K) ở 30 hz. SyncMaster dường như hỗ trợ hầu hết các chế độ thông thường, với độ phân giải gốc (dọc) là 1920x1280. Kịch bản cấu hình i3 không hỗ trợ chạy tập lệnh khi đăng nhập; Tôi đang sử dụng tính năng này để tự động chạy tập lệnh được mô tả ở trên, trông giống với tập lệnh của bạn, nhưng tôi cứ bị xrandrlỗi lạ .
Kyle Strand

Làm thế nào để bạn khởi chạy i3? Liệu nó có thói quen khởi tạo X riêng? Hay bạn thả nó vào .xinitrcvà sử dụng startx? Tôi sử dụng xmonad (mà theo tôi hiểu, tương tự như i3?) Mà tôi khởi chạy bằng startx. xrandrKịch bản của tôi được thực hiện .xinitngay trước khi trình quản lý cửa sổ của tôi được khởi chạy. Tôi đã có kết quả tuyệt vời theo cách đó. X đã sẵn sàng để đi, và không có gì khác đã được đưa ra để can thiệp.
Chris

Tôi sử dụng gdm3và đã i3chọn làm môi trường máy tính để bàn mặc định cho tài khoản của mình.
Kyle Strand

1
Thật không may, không ai có thể nghĩ ra ngay lập tức, vì VBox dường như không liên tục gán tên cho màn hình. Bạn có thể đăng đầu ra của xrandr --query(a) khi phát hiện cài đặt không chính xác và (b) sau khi bạn nhận được mọi thứ hoạt động bình thường không? Hoặc ít nhất một từ mọi thứ hoạt động chính xác.
Chris

Câu trả lời:


0

Cập nhật lên phiên bản VirtualBox mới nhất, 5.0,14, dường như đã giải quyết được vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.