我在外接显示器上的 MacBook 4,1(Intel GMA X3100 图形芯片组)上运行 Ubuntu 12.04,但只能获得 1024 x 768 的分辨率(在 OS X 中我可以得到 1280 x 1024)。
我可以使用xrandr
以下命令将分辨率强制为 1280 x 1024这些说明,但现在有两个问题:
屏幕偏离中心,可能向左上方偏移几十个像素。
该说明适用于 10.04,而使更改永久生效的说明在 12.04 中不起作用。
有任何解决这个问题的方法吗?
更新:我相信驱动程序是问题的根源。在我安装之前,Ubuntu 将图形设备列为“未知” mesa-utils
。在桌面加载之前,我还在启动时收到一条消息,内容类似于00:02.0: i915 Invalid ROM contents
。
以下是相关输出lspci -v
:
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (primary) (rev 03) (prog-if 00 [VGA controller])
Subsystem: Apple Inc. Device 00a1
Flags: bus master, fast devsel, latency 0, IRQ 45
Memory at d0100000 (64-bit, non-prefetchable) [size=1M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]
I/O ports at 6110 [size=8]
Expansion ROM at <unassigned> [disabled]
Capabilities: <access denied>
Kernel driver in use: i915
Kernel modules: intelfb, i915
00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (secondary) (rev 03)
Subsystem: Apple Inc. Device 00a1
Flags: fast devsel
Memory at d0200000 (64-bit, non-prefetchable) [disabled] [size=1M]
Capabilities: <access denied>
我尝试使用它xrandr --output VGA1 --pos 10x10
来查看它是否可以重新定位屏幕,但什么也没发生。
答案1
我已修复(1)。
我怀疑我在 xrandr 中输入的模式行编号不准确,所以我下载了适用于 OS X 的 SwitchResX,它有一个导出模式行的选项。所以我得到了我在 OS X 中使用的 1280 x 1024 模式的模式行,将它放入 Ubuntu 中的 xrandr 中,现在屏幕不再偏移了!
现在我只需要知道如何使这个改变永久生效。
答案2
您是否尝试过编辑 /etc/lightdm/lightdm.conf 文件?
例如,添加
display-setup-script=/usr/share/lightdmxrandr.sh
在登录屏幕运行上述脚本。
并添加
session-setup-script=/usr/share/lightdmxrandr.sh
在会话期间运行上述脚本。
就我的情况来说,该脚本内容如下:
#!/bin/bash
# connected external output
XCOM0=`xrandr -q | egrep '(HDMI1|VGA1|DP1) connected' | egrep -o '(HDMI1|VGA1|DP1)'`
# command to set external desktop
XCOM1=`xrandr --output LVDS1 --primary --auto --output $XCOM0 --auto --right-of LVDS1`
# command to set normal desktop
XCOM2=`xrandr --output LVDS1 --primary --auto`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi
exit 0;
# ERASE THESE COMMENTS:
# Forces multiple monitors correct resolutions for LightDM
# Tested with Ubuntu 12.04 LTS.
# Save this file as lightdmxrand.sh
# Set as an executable file like this:
# $ sudo chmod +x lightdmxrand.sh
# Move it to /usr/share/ directory like this:
# $ sudo mv lightdmxrand.sh /usr/share/lightdmxrandr.sh
# Edit /etc/lightdm/lightdm.conf adding the given line to it: display-setup-script=/usr/share/lightdmxrandr.sh
# If you want this script to also run after the login, add: session-setup-script=/usr/share/lightdmxrandr.sh
希望它有效!
答案3
我能够在稍新一点的 Ubuntu (18.04) 上解决您的确切问题,但原理是一样的。您的显示适配器被正确识别,输出与我的相同。
-使用 xrandr 命令,因为您必须正确设置分辨率。
-使用方向命令将显示器设置为内置显示器的左侧(或右侧)
-(对我来说,这一步解决了像素重叠问题:现在进入系统设置并移动排列。
这个桌面设置应用程序肯定会因您的 Ubuntu 版本而有所不同;18.04 回到了 gnome,不再是 unity 桌面。
一旦你对适合你的 xrandr 命令集感到满意,我建议将它们放入“~/.xprofile”。当你登录终端并获取桌面时,这些命令将自动运行。
此链接来自 ubuntu wiki 的优秀内容,并为您提供了自动配置的其他选项。
注意:如您所知,配置新分辨率可能会很棘手;如果您选择的分辨率不好,您可能只会看到一个屏幕或没有屏幕。我把终端应用程序放在前面,并准备好带有分辨率设置的命令历史记录。使用箭头键和查看是否可以拨入。如果出现黑屏,通常拔下第二台显示器和/或关闭笔记本电脑盖 30 秒并重新打开它会暂时解决问题。