ไม่สามารถทำการตั้งค่า xrandr อัตโนมัติในเดเบียน 7 บน VirtualBox อย่างน่าเชื่อถือ


23

แม้ว่าจะมีคำถามที่มีอยู่หลายเรื่อง (ซึ่งคำตอบที่เป็นประโยชน์มากที่สุดคือนี้ ) และหัวข้อต่างๆในฟอรั่มอื่น ๆ ที่ฉันไม่สามารถตั้งค่าได้อย่างน่าเชื่อถือของฉันxrandrการตั้งค่าใน Debian 7 บน VirtualBox

ฉันพยายามที่จะใช้xrandrเพื่อควบคุมการตั้งค่าการแสดงผลของฉัน (แทนที่จะปล่อยให้สภาพแวดล้อมเดสก์ท็อปของฉันทำการตั้งค่าอัตโนมัติ) เพราะฉันใช้ตัวi3จัดการหน้าต่างซึ่งไม่ได้ทำการตั้งค่าการแสดงผลอัตโนมัติหรือใช้การตั้งค่าการแสดงผลสภาพแวดล้อมเดสก์ท็อป Gnome

ติดตั้ง:

ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องโดยเฉพาะอย่างยิ่งสิ่งฮาร์ดแวร์เนื่องจากฉันไม่คิดว่าเดเบียนสามารถเข้าถึงข้อมูลมากมายเกี่ยวกับการตั้งค่าจอภาพ เท่าที่ฉันสามารถบอกได้ VirtualBox เพียงรายงานการมีอยู่ของหน้าจอเสมือนราวกับว่าพวกเขาเป็นจอภาพฮาร์ดแวร์

ฮาร์ดแวร์

  • เลอโนโวแล็ปท็อปที่มีกราฟิก nVidia (ไม่ได้ใช้ Intel GPU แบบบูรณาการ, AFAIK - มีการตั้งค่า BIOS ที่ฉันใช้เพื่อทำสิ่งนี้)
    • วินโดว 7
    • RAM 32GB
    • ใช้ล่าสุด (ฉันคิดว่า) ไดรเวอร์ nVidia (340.84) - นี่อาจเป็นเรื่องสำคัญเนื่องจากฉันเปิดใช้งานการเร่งความเร็ว 3 มิติใน VirtualBox (ดูด้านล่าง) ซึ่งฉันคิดว่าอนุญาตให้แขกระบบปฏิบัติการเข้าถึงฮาร์ดแวร์โฮสต์ได้
  • Seiki 4K TV (ใช้เป็นมอนิเตอร์) ผ่าน HDMI ผ่านแท่นวาง (ซึ่งแปลง DisplayPort เป็น HDMI ภายใน)
  • จอภาพ Samsung SyncMaster 243T หันแนวตั้ง

VirtualBox

  • ใช้ VirtualBox 4.3.20
  • มีการติดตั้งข้อมูลเพิ่มเติมของผู้เยี่ยมชม (รุ่นเดียวกัน)
  • จำนวนการตรวจสอบ: 2 (กำหนดให้กับ Seiki และ SyncMaster เมื่ออยู่ในโหมดเต็มหน้าจอ)
  • ใช้หน่วยความจำวิดีโอสูงสุด (128 MB)
  • เปิดใช้งานการเร่งความเร็ว 3D

การตั้งค่าแขก

  • Debian 32 บิต 7
  • gnomeและgdm3มีการติดตั้ง
  • WM ที่ต้องการคือ i3

พฤติกรรม:

เมื่อฉันเรียกใช้i3และสอบถามxrandrการตั้งค่าการแสดงผลเริ่มต้นจะเหมือนกันเสมอระหว่างVBOX0และVBOX1"จอภาพ" สองตัวที่ VirtualBox รายงานไปxrandr(อย่างน้อยนั่นคือสิ่งที่ฉันเข้าใจ; โปรดทราบว่าเท่าที่ฉันสามารถบอกได้ไม่มีวิธีที่ดีที่จะบอกว่า VBOX # ใดที่จอภาพขาดการลองผิดลองถูก

ปกติแล้วสิ่งนี้จะมีความละเอียด (ถ้าต่ำกว่าเนทิฟเล็กน้อย) ที่เหมาะสมสำหรับ SyncMaster แนวตั้งของฉัน แต่ไม่มีความละเอียด 4K สำหรับ Seiki "การแสดงผลของผู้เข้าพักอัตโนมัติปรับขนาด" ตัวเลือกใน VirtualBox xrandrไม่ส่งผลกระทบต่อ

ฉันลองแก้ไขสคริปต์ต่าง ๆ ที่อธิบายไว้ในคำตอบที่ลิงก์ด้านบนแต่โดยทั่วไปแล้วฉันดูเหมือนจะได้รับxrandrข้อผิดพลาดต่าง ๆ ฉันไม่พบความสัมพันธ์หลายอย่างระหว่างสิ่งต่าง ๆ ที่ฉันพยายามและข้อผิดพลาดที่ฉันได้รับ แต่นี่คือสิ่งสำคัญที่อาจมีความสำคัญ:

ปรับแต่งสคริปต์

  • (โดยปกติ) ข้ามVBoxServiceขั้นตอนการเริ่มต้นใหม่ (ดูเหมือนจะไม่เปลี่ยนxrandrพฤติกรรม)
  • ใช้xrandr --fbตัวเลือกก่อนxrandrคำสั่งอื่น ๆ บางครั้งอาจส่งผลให้เกิดข้อผิดพลาด "หน้าจอที่ระบุไม่ใหญ่พอ" ด้านล่าง
  • ใช้ 30 fps แทน 60 (4K ผ่าน HDMI ปัจจุบันคือ 30fps สูงสุด แต่ฉันไม่คิดว่ามันจะสำคัญใน VirtualBox ไม่ว่าในกรณีใดฉันคิดว่าบางครั้งฉันก็ใช้งานได้และบางครั้งก็ล้มเหลวทั้งสองวิธี)
  • ใช้cvtแทนgtf(สิ่งเหล่านี้ดูเหมือนจะทำงานในลักษณะเดียวกัน)
  • แทนที่หมายเลขแรกที่ได้รับจากgtf(ซึ่งมักจะประมาณ 200 หรือ 300) ด้วยจำนวนที่น้อยกว่าเช่น100.00(ฉันคิดว่านี่ใช้งานได้หนึ่งหรือสองครั้งในบรรทัดคำสั่ง แต่โดยทั่วไปแล้วจะไม่สร้างความแตกต่าง)
  • สุ่มชื่อโหมดใหม่โดยใช้$RANDOM(ฉันได้ลองใช้วิธีอื่น ๆ ในการเล่นซอกับชื่อ)
  • --rmmodeโหมดอย่างชัดแจ้งก่อนสร้างโดยใช้--newmode(จะปรากฏเพื่อป้องกันข้อผิดพลาด "แบบอักษร" ที่แสดงด้านล่าง)
  • ใช้--right-ofหรือ--left-ofเมื่อตั้งค่า--outputs (เนื่องจากหน้าจอมักจะถูกมิเรอร์ตามค่าเริ่มต้น)

ข้อความผิดพลาด

  • 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) ฉันได้รับหนึ่งในตอนนี้เมื่อเรียกใช้สคริปต์อีกครั้งหลังจากที่หน้าจอได้ถูกบังคับให้ใช้ความละเอียดที่เหมาะสมแล้ว (โดยใช้วิธีแก้ไขปัญหาที่อธิบายไว้ในส่วนถัดไป) สิ่งนี้ทำให้ฉันประหลาดใจเพราะxrandrรายงานสิ่งต่อไปนี้: Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
  • X Error of failed request: BadMatch (invalid parameter attributes)--newmodeซึ่งบางครั้งอาจจะเกิดขึ้นเมื่อพยายามที่จะทำ อาจเป็นสาเหตุที่พบบ่อยที่สุดอันดับสองสำหรับสคริปต์ที่จะล้มเหลว ฉันคิดว่ามันอาจจะเกิดจากxrandr"ความทรงจำ" ชื่อของโหมดจากความพยายามก่อนหน้านี้ที่จะตั้งขึ้น แต่ใช้$RANDOMไม่ได้ปรากฏขึ้นอย่างต่อเนื่องในการแก้ปัญหาดังนั้นจึงอาจจะมีบางปัญหาอื่น ๆ (ฉันคิดว่าเป็นไปได้ว่าแม้จะ$RANDOMมีการชนกันของชื่ออยู่ก็ตาม) ฉันไม่เคยเห็นข้อผิดพลาดนี้ตั้งแต่ฉันเริ่มใช้--rmmodeแต่ฉันไม่ได้เรียกใช้สคริปต์นานพอตั้งแต่เพิ่มคำสั่งเพื่อให้แน่ใจว่ามันสร้างความแตกต่างให้กับ พฤติกรรม.
  • X Error of failed request: BadMatch (invalid parameter attributes)--addmodeซึ่งบางครั้งอาจจะเกิดขึ้นเมื่อพยายามที่จะทำ อาจเป็นสาเหตุที่พบบ่อยที่สุดสำหรับสคริปต์ที่จะล้มเหลวและมันทำให้ฉันประหลาดใจ บางครั้งด้วยตนเอง (เช่นในเทอร์มินัล) ดำเนินการตามลำดับของคำสั่งที่ใช้โดยสคริปต์ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาที่ทำงานได้สำหรับข้อผิดพลาดนี้ซึ่งเป็นที่แปลกประหลาด

วิธีแก้ปัญหาของ Gnome:

ฉันได้พบว่าถ้าฉันเข้าสู่ระบบเดสก์ทอป Gnome แล้วดำเนินการ VirtualBox ของ "จอแสดงผลของผู้เข้าพักอัตโนมัติปรับขนาด" ฟังก์ชั่นนั้นออกจากระบบและกลับไปอยู่กับi3, xrandrมักจะมีความละเอียดถูกต้องสำหรับทั้ง Seiki และ SyncMaster ในของมันสร้างขึ้นโดยอัตโนมัติ รายการโหมดและความละเอียด 4K ถูกตั้งค่าเป็นความละเอียด "ที่ต้องการ" สำหรับแต่ละหน้าจอ VBOX สิ่งนี้ทำให้ฉันสามารถใช้งานได้อย่างง่ายดายxrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX]ตามด้วยxrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution](โปรดทราบว่าความละเอียด SyncMaster ยังคงต้องระบุด้วยตนเองเนื่องจากxrandrรายงานการแก้ปัญหาที่ต้องการเหมือนกันสำหรับทั้งสอง VBOX#โดยไม่คำนึงถึงความจริงหรือสติ)

วิธีแก้ปัญหานี้เมื่อดำเนินการเห็นได้ชัดว่ายังคงมีอยู่ในการปิดและรีบูต (นั่นคือโหมดที่ต้องการยังคงอยู่ในxrandrรายการโหมดของแม้ว่าฉันยังคงต้องเรียกใช้สองxrandrคำสั่งหลังจากเริ่มi3เซสชัน) แต่ไม่คงอยู่เสมอเมื่อเพียง ออกจากระบบและเริ่มi3เซสชันใหม่ โปรดทราบว่าgdm3หน้าจอเข้าสู่ระบบจะไม่มีความละเอียดที่ถูกต้อง (เท่าที่ฉันเคยเห็น) ฉันไม่มีความคิดเห็นเพิ่มเติมเกี่ยวกับความแปลกที่เกิดขึ้นที่นี่

แก้ไข:วิธีนี้ดูเหมือนจะไม่สามารถเขียนสคริปต์ได้และพฤติกรรมที่ดูเหมือนจะไม่สอดคล้องกัน

หมายเหตุอื่น ๆ :

  • ฉันไม่มีxconfไฟล์ (หรือคล้ายกัน) ในetc/X11dir ของฉัน
  • การแก้ไขจอแสดงผลเป็นปัญหาที่พบได้บ่อยเพราะเมื่อใดก็ตามที่ฉันปิดจอภาพหนึ่งจอ VirtualBox จะฆ่าจอภาพเสมือนจริงแบบเต็มจอหนึ่งจอ (Urgh.)

คำถาม:

  • มีวิธีใดบ้างที่จะแยกความแตกต่างระหว่างความสามารถของฮาร์ดแวร์ตามจริงโดยทางโปรแกรม (เช่นความละเอียดดั้งเดิม) ของจอภาพที่แตกต่างจากภายใน VirtualBox?
  • เหตุใดฉันจึงเห็นข้อผิดพลาดต่างๆเหล่านี้ เกิดอะไรขึ้นกับxrandrฯลฯ ?
  • มีวิธีใดที่จะสามารถบรรลุความละเอียดเต็มหน้าจอที่ถูกต้องโดยไม่ต้องให้ฉันเริ่มgnomeเซสชันก่อนi3เซสชันของฉันหรือไม่

อาจเกี่ยวข้องกับปัญหา

  • ตัวชี้เมาส์ของฉันไม่ได้เรียงแถวอย่างถูกต้องกับตำแหน่งที่ตรวจพบการคลิก การคลิกมักจะเกิดขึ้นด้านล่างและด้านขวาของตัวชี้ เมื่อฉันกำหนดค่าหน้าจออย่างถูกต้องแล้วปัญหานี้มักจะหายไปแม้ว่าหน้าจอปัจจุบันจะมีความละเอียดที่ถูกต้อง แต่ตัวชี้ยังคงปิดอยู่เล็กน้อย
  • เมื่อฉันจัดการเพื่อให้ได้ความละเอียดที่ถูกต้องหน้าจอจะกะพริบเป็นบางครั้ง มันน่ารำคาญ แต่น่าอยู่ มีความคิดอะไรที่ทำให้เกิดหรือถ้ามันสามารถแก้ไขได้?

ฉันจะต้องขุดบันทึกย่อของฉัน แต่โหมดที่รองรับสำหรับหน้าจอของคุณคืออะไร i3 มีวิธีในการเริ่มต้นสคริปต์ก่อน / ขวาหลังจากเข้าสู่ระบบ? superuser.com/questions/808737//เป็นสิ่งที่ฉันได้ลงเอยด้วยการทำปัญหาทางกายภาพที่คล้ายกัน แต่อาจต้องใช้เวลาสักครู่ในการทำงานในกรณีของคุณ
Geek

@JourneymanGeek 4K มีการรองรับโหมดมาตรฐานส่วนใหญ่ที่ 60 เฮิร์ตซ์และรองรับโหมดขนาดใหญ่ (รวมถึง 4K) ที่ 30 เฮิร์ต SyncMaster ปรากฏขึ้นเพื่อรองรับโหมดปกติส่วนใหญ่โดยมีความละเอียดดั้งเดิม (แนวตั้ง) ที่ 1920x1280 สคริปต์การกำหนดค่า i3 รองรับการใช้งานสคริปต์เมื่อเข้าสู่ระบบ ฉันใช้คุณสมบัตินี้เพื่อเรียกใช้สคริปต์ที่อธิบายไว้ข้างต้นโดยอัตโนมัติซึ่งมีลักษณะคล้ายกับของคุณ แต่ฉันได้รับxrandrข้อผิดพลาดแปลก ๆอยู่เรื่อย ๆ
Kyle Strand

คุณจะเปิดตัว i3 ได้อย่างไร มันมีรูทีนการกำหนดค่าเริ่มต้น X ของตัวเองหรือไม่? หรือคุณวางไว้ในของคุณ.xinitrcและใช้startx? ผมใช้ xmonad (ซึ่งที่ผมเข้าใจคล้ายกับ i3?) startxซึ่งผมเปิดใช้ การxrandrเขียนสคริปต์ของฉันเสร็จสิ้น.xinitก่อนที่จะเปิดตัวจัดการหน้าต่าง ฉันมีผลลัพธ์ที่ยอดเยี่ยมเช่นนั้น X พร้อมที่จะไปและไม่มีอะไรรบกวนการเปิดตัว
Chris

ฉันใช้gdm3และได้i3เลือกให้เป็นสภาพแวดล้อมเดสก์ท็อปเริ่มต้นสำหรับบัญชีของฉัน
Kyle Strand

1
น่าเสียดายที่ไม่มีใครสามารถคิดได้ทันทีเนื่องจาก VBox ดูเหมือนจะไม่ระบุชื่อให้กับจอภาพอย่างสม่ำเสมอ คุณสามารถโพสต์เอาต์พุตของxrandr --query(a) เมื่อตรวจพบการตั้งค่าที่ไม่ถูกต้องและ (b) หลังจากที่คุณได้รับทุกสิ่งที่ทำงานอย่างถูกต้องหรือไม่ หรืออย่างน้อยหนึ่งอย่างจากทุกอย่างทำงานอย่างถูกต้อง
Chris

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.