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 xrandr
cà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 i3
quả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
gnome
vàgdm3
được cài đặt- WM ưa thích là
i3
Hành vi:
Khi tôi khởi chạy i3
và 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 VBOX0
và VBOX1
hai "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 xrandr
lỗ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
VBoxService
bước khởi động lại (dường như chúng không thay đổixrandr
hành vi) - Sử dụng
xrandr --fb
tùy chọn trước bất kỳxrandr
lệ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
cvt
thay 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
--rmmode
chế độ 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-of
hoặc--left-of
khi cài đặt--output
s (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ìxrandr
bá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à doxrandr
"nhớ" tên của chế độ từ một nỗ lực trước đó để thiết lập nó, nhưng sử dụng$RANDOM
khô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$RANDOM
có 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
, xrandr
thườ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ì xrandr
bá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 xrandr
danh sách chế độ, mặc dù tôi vẫn cần chạy hai xrandr
lệnh sau khi bắt đầu i3
phiên), nhưng không phải lúc nào cũng duy trì đăng xuất và bắt đầu một i3
phiên mới . Lưu ý rằng gdm3
mà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ó
xconf
tệp (hoặc tương tự) trongetc/X11
thư 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
gnome
phiên trướci3
phiê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?
xrandr
lỗi lạ .
.xinitrc
và 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
. xrandr
Kịch bản của tôi được thực hiện .xinit
ngay 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.
gdm3
và đã i3
chọ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.
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.