在Linux Guest上的VirtualBox VM中强制监控分辨率


10

我正在运行Slackware-current的VirtualBox 4 VM中工作。我添加了一个外部监视器,并试图将它们设置为以其本机分辨率运行,但是没有运气。

我正在按照本页上的说明进行操作

但是我无法跳过添加新的监视模式的步骤,即:

xrandr --addmode VBOX1 1600x1200_60.00

运行该命令时,出现错误消息:

X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 151 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 20
Current serial number in output stream: 21

我参加了许多论坛,安装了最新版本的VirtualBox4,并安装了Guest OS Runtime实用程序。

我还确保我的虚拟显示器可以处理此问题,即: xrandr | grep -i maximum

产量:

minimum 64 x 64, current 800 x 600, maximum 32000 x 32000

其他人遇到过类似的事情吗?

Answers:


9

我自己遇到了这个确切的问题。

首先,在大多数指南中,通常需要执行以下操作:

  1. 指定监视器分辨率,然后将其提供给gtf :(
    gtf 1024 768 60获取60Hz时1024x768分辨率的Modeline信息)。
    就我而言,它产生:

    #1024x768 @ 60.00 Hz(GTF)hsync:47.70 kHz; pclk:64.11 MHz Modeline“ 1024x768_60.00” 64.11 1024 1080 1184 1344 768 769 772795 -HSync + Vsync

  2. 创建新模式:(
    xrandr --newmode "1024x768_60.00" 64.11 1024 1080 1184 1344 768 769 772 795 不要包括结尾-HSync +Vsync。一些指南告诉您执行此操作,但是由于某些原因,它将破坏配置)。

  3. 现在您应该可以将模式添加到新的显示中:
    xrandr --addmode VBOX0 1024x768_60.00

  4. 设置设备的新模式: xrandr --output VBOX0 --mode 1024x768_60.00

如果步骤3仍然失败(这些步骤适用于我的笔记本电脑屏幕,分辨率为1680x1050,但由于某种原因,不适用于支持1600x1200的外接显示器。这些步骤对于分辨率最高为1280x1024的外接显示器也适用。)仍然尝试让xrandr使用auto模式。就我而言,它使我的笔记本电脑屏幕和外接显示器能够完美运行。我使用的脚本如下:

#!/bin/bash

# Script to automatically resize virtual monitors in VirtualBox

# Start the server
sudo killall VBoxService
sleep 1
sudo VBoxService
sleep 1

# Start the client service
VBoxClient-all

# Get the modeline information we want for the following resolutions:
# 1680x1050@60.00Hz (Laptop display)
RES0="1680 1050 60"
# 1280x1024@60Hz (External monitor)
RES1="1280 1024 60"

# Setup mappings for physical to virtual monitors
MAP0="VBOX0"
MAP1="VBOX1"

# Generate settings
SETTINGS0=$( gtf $RES0 | grep Modeline | cut -d ' ' -f4-16 )
SETTINGS1=$( gtf $RES1 | grep Modeline | cut -d ' ' -f4-16 )

# Get name of modelines from settings
NAME0=$( echo $SETTINGS0 | cut -d ' ' -f1 )
NAME1=$( echo $SETTINGS1 | cut -d ' ' -f1 )

# Echo settings
echo "Modeline for Display 0 ($NAME0): $SETTINGS0"
echo "Modeline for Display 1 ($NAME1): $SETTINGS1"

# Create the new modelines via xrandr
xrandr --newmode $SETTINGS0
xrandr --newmode $SETTINGS1

# Add the newly created modelines to devices
xrandr --addmode $MAP0 $NAME0
xrandr --addmode $MAP1 $NAME1

# Finally, enable the new modes
xrandr --output $MAP0 --mode $NAME0
xrandr --output $MAP1 --mode $NAME1

# Extra: Attempt to run "auto" mode on the external monitor
# This is out last-ditch effort (which worked in this case) to get it running at
# 1600x1200 instead of 1280x1024 :)
xrandr --output $MAP1 --auto --above $MAP0

3
xrandr --addmode VBOX0“ 1600x900_60.00”给我以下错误:无法获取默认输出的gamma大小。找不到输出“ VBOX0”
stiv

我明白了xrandr --newmode $SETTINGS0 X Error of failed request: BadRequest (invalid request code or no such operation) Major opcode of failed request: 149 (RANDR) Minor opcode of failed request: 25 (RRGetScreenResourcesCurrent) Serial number of failed request: 11 Current serial number in output stream: 11
moodboom

6

在virtualbox上运行Arch时,我遇到了同样的问题。分配更多的视频内存似乎可以为我解决此问题。

在此处输入图片说明


经过许多失败的尝试,这终于对我有用。
洋葱
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.