![]() | 点击翻译: | English • 中文 |
|
目录[隐藏] |
[编辑]简介
本文献给屏幕分辨率或屏幕刷新频率有问题(闪屏)的人,不管他们为什么碰到这样的问题,一个可能的原因是你的硬件(显卡/显示器)没有被系统正确的检测。 一个解决方法对这个人有用而另一个方法对另一个人有用。我希望在这里给出几个不同的解决方法,按我曾经见过的问题出现的频率和解决的成功率降序列出,那可能仅仅帮了很少人。希望可以通过这种方式为每一个人提供一个答案。让我们从最常见的解决办法开始。 对ATI用户我建议看看本页底部的《ATI – 刷新频率和分辨率快速设置》部分。
[编辑]重新运行自动检测脚本
我不能保证这个方法对大部分人有用,但可以保证这是最快和最简单的一个。我们要做的就是运行像你刚安装完你的系统的时候一样的脚本来试着检测你的显示硬件。有时候这确实有用,特别是当显卡或显示器和你安装Ubuntu的时候不一样的时候。运行如下的命令,如果你先输入sudo -v打开了一个sudo会话的话,那么你可以只是简单的拷贝、粘贴下面的文本。
对Ubuntu 6.06(Dapper Drake):
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.custom sudo sh -c 'md5sum /etc/X11/xorg.conf > /var/lib/x11/xorg.conf.md5sum' sudo dpkg-reconfigure xserver-xorg
将显示一个配置页面,问你是否想自动探测显示硬件。选择yes,接着你将等待一段时间接受自动检测到的配置。完成后,关闭你打开的窗口和桌面上运行的程序,按CTRL-ALT-Backspace重启桌面环境。你会被要求重新登录GNOME界面,希望所有问题都解决了。如果没有解决,尝试下一个方法。
[编辑]未能识别的显示器类型
用你熟悉的文本编辑器打开/etc/X11/xorg.conf。我假定你用nano做为编辑器,因为它很直观。
sudo nano /etc/X11/xorg.conf
现在寻找Section “Monitor”项。一旦你找到这一项,看看是不是在Section "Monitor"项和EndSection之间的文本之间应该有分别以HorizSync和VertRefresh开头的两行。如果没有这两行,不用担心,这说明我们可能已经发现问题了。 你得从你的显示器说明书中、命令行或者从网上为你的显示器找到这两段数据。用google搜索按你的显示器型号去找,在Lapis论坛上也有很多型号的列表。 我们需要水平同步频率(通常用kHz标示)和垂直刷新率(通常Hz标示)。这两个数值通常是像下面给出范围“30-98kHz”或者“50-160Hz”。 如果你的显示器支持的话,你也可以运行如下的命令(如果不能运行,请安装'xresprobe'包): sudo ddcprobe | grep monitorrange
返回数值的前面一对是你的HorizSync值(水平同步频率),第二对是VertRefresh 值。 有两种方法输入你的显示器信息到文件中,一种是运行下面的命令重新生成文件,运行中会要求你上面的两段数值。
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.custom sudo sh -c 'md5sum /etc/X11/xorg.conf > /var/lib/xfree86/xorg.conf.md5sum' sudo dpkg-reconfigure -plow xserver-xorg
另一种方法只是简单的用文本编辑器打开/etc/X11/xorg.conf 文件,添加上面的数据到文件中。 不过首先我们得备份一下这个文件以防错误的发生:
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
加入两行到xorg.conf文件的Section "Monitor"段中,例如,我的显示如下。 注意:只是加入HorizSync和VertRefresh开头的那两行,不要改变任何原来的文本内容。我文档中的这一小段只是个例子,你的硬件信息可能不是那样的。更重要的是如果你的显示器没有被正确识别的话,它会被标成“Generic Monitor”(通用显示器),这种情况下,不要改变任何另外的东西,否则图形界面不会被装载并报告不能找到显示器。
Section "Monitor" Identifier "FLATRON 995F" Option "DPMS" HorizSync 30-96 VertRefresh 50-160 EndSection
现在保存文件,关闭所有打开的程序,按CTRL-ALT-Backspace重启图形界面. 如果一切正常,你将会被提示重新登录你的系统。 注意:-如是你用的是XFree86那么你就得编辑/etc/X11/XF86Config-4。 如果你在分辨率的下拉框中只找到800X600,那么编辑Section“Monitor”中的Modes行,加入需要的分辨率可以解决这个问题。
SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection
如果还是不能解决,把你用不着的分辨率删除应该完全可以解决这个问题了。
[编辑]Intel图形驱动 (i810)不能使用高分辨率
对Intel显卡有一个普遍存在的问题就是虽然xorg.conf文件中加入了上面的内容,但是分辨率仍然不能使用。这经常出现在i810的显卡上,但是更新的驱动上不存在这样的问题。 安装更新的Intel显卡驱动 不幸的是,更新的驱动在6.10以后的版本(Edgy, Feisty等)中才有,但是6.06.1 (Dapper)中没有。如果你有Edgy以后的版本,你可以用如下命令安装更新的Intel显卡驱动:
sudo apt-get install xserver-xorg-video-intel
然后编辑/etc/X11/xorg.conf 文件,把Driver i810"改为Driver "intel"。你可以用如下命令编辑xorg.conf文件:
sudo nano /etc/X11/xorg.conf 或者sudo gedit /etc/X11/xorg.conf
你也可以用GUI(图形界面)编辑,方法如下: ALT+F2
gksudo gedit /etc/X11/xorg.conf
用旧i810驱动加915resolution 这个问题有时出现在装有集成Intel图形芯片的手提电脑上,这种电脑不具有标准分辨率。背景:好像Video Bios(vBios)已经把正确的分辨率传给液晶显示屏使其自动设置分辨率了,但是有时候分辨率没有被正确的传送并且导致正确的分辨率不能实现。 最好的解决是用“915resolution”软件来解决,查看UbuntuHelp:i915Driver你可以在内存中用这个软件复盖vBios设置来解决问题。这是915resolution软件开发者的表述: “915resolution是一个可以修改Intel800,900系列图形芯片的视频BIOS的工具。” 在Ubuntu上安装915resolution前确定你已经选择了"universe"源和类型(在Breezy上用855resolution替代915resolution):
sudo apt-get install 915resolution
一旦程序安装完成,你可以用这个程序列出可用的vBios模式:
sudo 915resolution –l
结果应该看起来像:
Intel 800/900 Series VBIOS Hack : version 0.5.2 Chipset: 845G BIOS: TYPE 1 Mode Table Offset: $C0000 + $269 Mode Table Entries: 27 Mode 30 : 640x480, 8 bits/pixel Mode 32 : 800x600, 8 bits/pixel Mode 34 : 1024x768, 8 bits/pixel Mode 38 : 1280x1024, 8 bits/pixel Mode 3a : 1600x1200, 8 bits/pixel Mode 3c : 1920x1440, 8 bits/pixel Mode 41 : 640x480, 16 bits/pixel Mode 43 : 800x600, 16 bits/pixel Mode 45 : 1024x768, 16 bits/pixel Mode 49 : 1280x1024, 16 bits/pixel Mode 4b : 1600x1200, 16 bits/pixel Mode 4d : 1920x1440, 16 bits/pixel Mode 50 : 640x480, 32 bits/pixel Mode 52 : 800x600, 32 bits/pixel Mode 54 : 1024x768, 32 bits/pixel Mode 58 : 1280x1024, 32 bits/pixel Mode 5a : 1600x1200, 32 bits/pixel Mode 5c : 1920x1440, 32 bits/pixel
如果你的屏幕分辨率没有出现在上面列表中,你可以改写你屏幕永远用不到的数值。例如,如果你想修改mode 41为2400X1600,编辑/etc/default/915resolution文件。
Ubuntu gksudo gedit /etc/default/915resolution
Kubuntu kdesu kate /etc/default/915resolution
你的文件应该看起来像:
# # 915resolution default # # find free modes by /usr/sbin/915resolution -l # and set it to MODE or set to 'MODE=auto' # MODE=41 # # and set resolutions for the mode. XRESO=2400 YRESO=1600
这保证了你的vBios mode 41启动时X-windows初始化前在内存中被改写了。现在你的分辨率可以使用了,以后你的系统重启后vBios会自动被设置为正确的分辨率。
[编辑]错误的默认色深设置
有时候自动图形界面设置设置了一个你硬件不能正确处理的过高的色深值。如果你遇到的是这种情况,首先备份你的/etc/X11/xorg.conf文件。
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
现在打开你最熟悉的文本编辑器。我假设你现在用的是nano,它相对来说较容易使用,当然你可以使用你喜欢的任意一款文本编辑器。
sudo nano /etc/X11/xorg.conf
在文件中搜索关键词DefaultDepth(注意这是一个单词),Hoary设置的默认色深是典型的"24",但就如所说的,一些硬件不能使用那么高的色深。十分安全的改变这个值为16测试一下你的视频问题是不是解决了。如果这个改变没有解决任何问题,简单的把它改回去就可以了。 一旦改变了DefaultDepth的值,保存文件,关闭桌面上所有程序,按CTRL-ALT-Backspace重启图形界面。如果一切顺利,在进入GNOME时你会被提示重新登录,希望可以用一个更高的色深。
[编辑]ATI – 刷新频率和分辨率快速设置
对那些用ATI显卡和fglrx驱动的人来说,试着在一个终端中运行:
sudo aticonfig
按照屏幕上的指示操作,重新启动GDM后可以解决这个问题。 例如现在的一个设置:
1个普通显示器 没有视频输出
我会运行下面的命令:
sudo aticonfig --initial --input=/etc/X11/xorg.conf sudo aticonfig --resolution=1600x1200,1280x1024,1024x768 sudo aticonfig --force-monitor=crt1,notv
运行aticonfig命令后,你需要重启GDM。 重启GDM用下面的命令:
/etc/init.d/gdm restart
问题应该解决了。 如果你的GDM用了一个比你桌面高的分辨率,你可以滚动到本页的底部看" GDM用了和我的电脑不同的分辨率"来解决问题。
[编辑]GDM看起来没问题,但是Gnome看起来有问题
有点不一样的是,这个问题存在于vanilla 5.10在虚拟机中的安装。因为这不是在一个一般的设备中,我通过如下命令在设置管理中把它设为VESA,分辨率1024X768:
sudo dpkg-reconfigure xserver-xorg
确认你正确的配置了你的硬件。 这些设置允许GDM给出一个正常的登录屏幕。但是,完成登录导致显示失败。 修正这个问题,你可以以普通用户运行gconf-editor工具并在Gnome's XML中修改设置注册表,这等同于/etc/X11/xorg.conf设置:
startx gconf-editor
浏览编辑器中desktop/gnome/screen/default/%d ,%d这里正确的应该是0.选择这个模式改变成你选择的分辨率,确定频率也同样适合你的显示设备。 退出编辑器,尝试再次登录GDM。
[编辑]GDM用了和我的电脑不同的分辨率
这个问题是很容易解决的,按照如下方法: 1)备份一下你的xorg.conf
sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
2)打开xorg.conf
gksudo gedit /etc/X11/xorg.conf
3)找到你的Screen项:
Section "Screen"
你会发现有若干项,类似:
SubSection "Display" Depth 24 Modes "1280x1024" "1024x768" EndSubSection
GDM将用“Modes”行的第一个,所以改变它为低一点或者高一点(请确认你的显示器和显卡都支持这个分辨率) 保存这个文件,关闭所有运行着的程序,重启GDM(/etc/init.d/gdm restart);另一个方法是logout,在登录屏幕处按Ctrl-Alt-Backspace。看看是不是一切运行正常了。 如果设定的显示分辨率(比方说“1152x864”)不同于虚拟机的屏幕分辨率,在xorg.conf文件的Display分项中加入匹配的行:
Virtual 1152 864
如果这些改变没有用,你可以用:
sudo cp /etc/X11/xorg.conf.bak /etc/X11/xorg.conf
恢复你的系统到以前的状态。
[编辑]你用的是nvidia驱动(二进制驱动)
当用nvidia驱动的时候, xorg似乎检测不到可能存在的分辨率。 就我来说,我可以使用的唯一的分辨率就是我的LCD的内定的分辨率(1680X1050) 以下是你如何修正这点的方法: 1)像在上面例子中一样备份一下你的/etc/X11/xorg.conf 。 2)打开/etc/X11/xorg.conf 3)添加下面的行到你的"Screen"项中:
Option "UseEdidFreqs" "false"
如果失败了,试着运行下面的命令:
sudo nvidia-settings
Under Video Configuration 设置你的分辨率和刷新率,点击apply(应用),然后保存X Config。
[编辑]结束
到此为止,这是我收集的所有对这个问题的可能的解决办法。如果上面没有一个方法解决你的问题,考虑把你的问题贴到Ubuntu支持论坛上或者IRC上的#ubuntu IRC频道 irc.freenode.net.
�