Tidak dapat mengotomatiskan pengaturan xrandr di Debian 7 dengan VirtualBox

23

Meskipun ada beberapa pertanyaan yang ada tentang masalah ini (dari mana jawaban yang paling membantu adalah ini ) dan berbagai utas di forum lain, saya tidak dapat secara andal mengatur xrandrpengaturan saya di Debian 7 di VirtualBox.

Saya mencoba menggunakan xrandruntuk mengontrol pengaturan tampilan saya (daripada membiarkan lingkungan desktop saya mengotomatiskannya) karena saya menggunakan i3window manager , yang tidak mengotomatiskan pengaturan tampilan atau menggunakan pengaturan tampilan lingkungan desktop Gnome.

Mendirikan:

Saya tidak yakin seberapa relevan semua ini, terutama perangkat kerasnya, karena saya rasa Debian tidak dapat mengakses banyak informasi tentang pengaturan monitor; sejauh yang saya tahu, VirtualBox hanya melaporkan keberadaan layar virtual seolah-olah mereka adalah monitor perangkat keras.

Perangkat keras

  • Laptop Lenovo dengan grafis nVidia (Intel GPU terintegrasi tidak digunakan, AFAIK - ada pengaturan BIOS yang saya gunakan untuk menyelesaikan ini)
    • Windows 7
    • RAM 32GB
    • Menggunakan driver nVidia terbaru (saya pikir) (340,84) - ini mungkin penting, karena saya mengaktifkan akselerasi 3D di VirtualBox (lihat di bawah), yang menurut saya memungkinkan OS tamu memiliki akses ke perangkat keras host
  • TV Seiki 4K (digunakan sebagai monitor) melalui HDMI melalui stasiun dok (yang secara internal mengubah DisplayPort ke HDMI)
  • Monitor Samsung SyncMaster 243T berubah menjadi vertikal

VirtualBox

  • Menggunakan VirtualBox 4.3.20
  • Tambahan tamu (versi yang sama) diinstal
  • Hitungan monitor: 2 (ditugaskan untuk Seiki dan SyncMaster ketika dalam mode layar penuh)
  • Memori video maksimum (128 MB) digunakan
  • Akselerasi 3D diaktifkan

Pengaturan tamu

  • Debian 7-bit 7
  • gnomedan gdm3diinstal
  • WM yang disukai adalah i3

Tingkah laku:

Ketika saya meluncurkan i3dan meminta xrandr, pengaturan tampilan default selalu tampak identik antara VBOX0dan VBOX1, dua "monitor" yang dilaporkan oleh VirtualBox xrandr(setidaknya, itulah cara saya memahaminya; saya bisa melewatkan sesuatu). Perhatikan bahwa sejauh yang saya tahu, tidak ada cara yang baik untuk mengetahui VBOX # mana yang memantau kekurangan trial-and-error.

Biasanya ini termasuk resolusi yang masuk akal (jika sedikit di bawah asli) untuk SyncMaster vertikal saya, tetapi tidak ada resolusi 4K untuk Seiki. Opsi "ubah ukuran tamu tampilan" di VirtualBox tampaknya tidak mempengaruhi xrandr.

Saya telah mencoba berbagai modifikasi skrip yang dijelaskan dalam jawaban yang ditautkan di atas , tetapi secara umum saya sepertinya mendapatkan berbagai xrandrkesalahan. Saya belum menemukan banyak korelasi antara berbagai hal yang saya coba dan kesalahan yang saya dapatkan, tetapi di sini ada beberapa hal utama yang mungkin penting:

Script tweak

  • (Biasanya) melewatkan VBoxServicelangkah-langkah restart (sepertinya tidak mengubah xrandrperilaku)
  • Gunakan xrandr --fbopsi sebelum xrandrperintah lain ; ini terkadang menghasilkan kesalahan "layar tertentu tidak cukup besar" yang tercantum di bawah ini
  • Gunakan 30 fps alih-alih 60 (4K melalui HDMI saat ini adalah max 30fps, tapi saya rasa ini tidak penting di VirtualBox; dalam hal apa pun saya pikir saya kadang-kadang berfungsi dan kadang gagal dua arah)
  • Gunakan cvtalih-alih gtf(ini pada dasarnya berperilaku sama)
  • Ganti nomor pertama yang diberikan oleh gtf(yang biasanya sekitar 200 atau 300) dengan angka yang lebih kecil, seperti 100.00(saya pikir ini bekerja sekali atau dua kali pada baris perintah, tetapi secara umum tampaknya tidak membuat perbedaan)
  • Mengacak nama mode baru menggunakan $RANDOM(Saya juga sudah mencoba berbagai cara lain mengutak-atik nama)
  • --rmmodeMode eksplisit sebelum membuatnya menggunakan --newmode(ini muncul untuk mencegah kesalahan "font" yang tercantum di bawah)
  • Gunakan --right-ofatau --left-ofketika mengatur --outputs (karena layar biasanya dicerminkan secara default)

Pesan kesalahan

  • 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) Saya mendapatkan yang ini sekarang ketika menjalankan kembali skrip setelah monitor telah dipaksa untuk resolusi yang tepat (menggunakan work-around yang dijelaskan pada bagian selanjutnya). Ini mengejutkan saya, karena xrandrmelaporkan yang berikut: Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
  • X Error of failed request: BadMatch (invalid parameter attributes) Ini kadang-kadang terjadi ketika mencoba melakukan --newmode. Mungkin itulah alasan paling umum kedua mengapa skrip gagal. Saya pikir itu mungkin disebabkan oleh xrandr"mengingat" nama mode dari upaya sebelumnya untuk mengatur itu, tetapi menggunakan $RANDOMtidak tidak muncul untuk secara konsisten memecahkan masalah, sehingga mungkin beberapa masalah lain. (Saya kira itu mungkin bahkan dengan $RANDOMada tabrakan nama.) Saya belum melihat kesalahan ini sejak saya mulai menggunakan --rmmode, tapi saya belum menjalankan skrip cukup sejak menambahkan perintah untuk memastikan bahwa itu membuat perbedaan untuk perilaku.
  • X Error of failed request: BadMatch (invalid parameter attributes) Ini kadang-kadang terjadi ketika mencoba melakukan --addmode. Mungkin itulah alasan paling umum mengapa naskah ini gagal, dan itu membingungkan saya. Kadang-kadang secara manual (yaitu di terminal) mengeksekusi urutan perintah yang sama yang digunakan oleh skrip tampaknya menjadi solusi yang layak untuk kesalahan ini, yang aneh.

Solusi Gnome:

Saya telah menemukan bahwa jika saya masuk ke desktop Gnome, kemudian melakukan fungsi "Auto-resize guest display" dari VirtualBox, kemudian logout dan kembali i3, dengan xrandrbiasanya menyertakan resolusi yang benar untuk Seiki dan SyncMaster dalam automatis yang dihasilkannya. daftar mode, dan resolusi 4K ditetapkan sebagai resolusi "pilihan" untuk setiap layar VBOX. Ini memungkinkan saya untuk hanya menggunakan xrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX], diikuti oleh xrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution](perhatikan bahwa resolusi SyncMaster masih harus ditentukan secara manual, karena xrandrmelaporkan resolusi pilihan yang sama untuk keduanya VBOX# tanpa memperhatikan kebenaran atau kewarasan).

Pemecahan masalah ini, setelah berkinerja, tampaknya tetap ada di seluruh shutdown dan reboot (yaitu, mode yang diinginkan masih ada dalam xrandrdaftar mode, meskipun saya masih perlu menjalankan dua xrandrperintah setelah memulai i3sesi), tetapi tidak selalu bertahan ketika hanya logout dan memulai i3sesi baru . Perhatikan bahwa gdm3layar masuk tidak pernah memiliki resolusi yang benar (sejauh yang saya lihat). Saya tidak punya komentar lebih lanjut tentang keanehan yang terjadi di sini.

EDIT: Pendekatan ini tampaknya tidak bisa skrip, dan perilaku itu sebenarnya tampaknya tidak konsisten.

Catatan lain:

  • Saya tidak memiliki xconffile (atau serupa) di etc/X11direktori saya .
  • Memperbaiki tampilan adalah masalah yang cukup umum, karena setiap kali saya mematikan salah satu monitor saya, VirtualBox membunuh salah satu monitor virtual layar penuh. (Urgh.)

Pertanyaan:

  • Apakah ada cara untuk secara terprogram membedakan antara kemampuan perangkat keras yang sebenarnya (yaitu resolusi asli) dari monitor yang berbeda dari dalam VirtualBox?
  • Mengapa saya melihat berbagai kesalahan ini? Apa yang terjadi xrandr, dll?
  • Apakah ada cara untuk secara andal mencapai resolusi layar penuh yang tepat tanpa mengharuskan saya memulai gnomesesi sebelum i3sesi saya ?

Kemungkinan masalah terkait

  • Penunjuk tetikus saya tidak dapat diandalkan sejajar dengan benar dengan tempat klik tampaknya terdeteksi; klik biasanya terjadi di bawah dan di sebelah kanan penunjuk. Setelah saya mengkonfigurasi layar dengan benar, masalah ini biasanya hilang, meskipun saat ini layar memiliki resolusi yang benar tetapi pointer masih sedikit mati.
  • Ketika saya berhasil mendapatkan resolusi yang benar, layar sesekali berkedip-kedip. Ini menjengkelkan tapi layak ditinggali. Adakah yang tahu apa penyebabnya atau apakah itu bisa diperbaiki?
Kyle Strand
sumber
Saya perlu menggali catatan saya tapi apa mode yang didukung untuk tampilan Anda? apakah i3 memiliki beberapa cara untuk memulai skrip sebelum / tepat setelah login? superuser.com/questions/808737/… adalah yang akhirnya saya lakukan dengan masalah fisik yang serupa, tetapi ini mungkin perlu sedikit finassing untuk bekerja dalam kasus Anda.
Journeyman Geek
@JourneymanGeek 4K memiliki dukungan untuk sebagian besar mode standar pada 60 hz, dan dukungan untuk mode yang lebih besar (termasuk 4K) pada 30 hz. SyncMaster muncul untuk mendukung sebagian besar mode normal, dengan resolusi asli (vertikal) 1920x1280. Skrip konfigurasi i3 tidak mendukung menjalankan skrip saat login; Saya menggunakan fitur ini untuk secara otomatis menjalankan skrip yang dijelaskan di atas, yang terlihat mirip dengan Anda, tetapi saya terus mendapatkan xrandrkesalahan aneh .
Kyle Strand
Bagaimana Anda meluncurkan i3? Apakah ia memiliki rutin inisialisasi X sendiri? Atau apakah Anda menjatuhkannya .xinitrcdan menggunakannya startx? Saya menggunakan xmonad (yang, seperti yang saya mengerti, mirip dengan i3?) Yang saya mulai gunakan startx. Semua xrandrskrip saya selesai .xinitsebelum window manager saya diluncurkan. Saya mendapatkan hasil yang luar biasa seperti itu. X siap untuk pergi, dan tidak ada lagi yang diluncurkan untuk mengganggu.
Chris
Saya menggunakan gdm3dan telah i3memilih sebagai lingkungan desktop default untuk akun saya.
Kyle Strand
1
Sayangnya, tidak ada yang dapat saya pikirkan segera, karena VBox tampaknya tidak secara konsisten memberikan nama pada monitor. Bisakah Anda memposting output dari xrandr --query(a) ketika mendeteksi pengaturan tidak benar, dan (b) setelah Anda mendapatkan semuanya berfungsi dengan baik? Atau setidaknya satu dari semuanya bekerja dengan benar.
Chris

Jawaban:

0

Memperbarui ke versi VirtualBox terbaru, 5.0.14, tampaknya telah menyelesaikan masalah.

Kyle Strand
sumber