ATI 驱动安装配置 (简体中文)

From ArchWiki

Jump to: navigation, search


Article summary
有关ATi官方驱动和开源驱动。
Available Languages
English
简体中文
Italiano
Türkçe
Русский

Contents

概述

ATI用户有两种驱动可选官方的(程序名字叫:catalyst)和开源的(程序名字叫:xf86-video-ati 或者xf86-video-radeonhd)。如果你不确定该用哪种,请先试一试开源版的。开源驱动能满足大多数的需要,而且,一般来说遇到的麻烦也更少些。

目前,开源驱动在性能上不及官方专属版本,也缺乏TV-out支持之类的功能。但另一方面,它能更好地支持双头显示(dual-head)(xf86-video-ati),优秀的2D加速、并为使用OpenGL加速的窗口管理器(比如Compiz)提供良好的3D加速。

如果无法确定使用何种驱动,可以先试试开源驱动,因为开源驱动对ati显卡的支持更广泛,问题较少。查看现在功能开发进展情况可看: 可看 feature matrix

Rxxx?

Rxxx系列名字是显卡的程序代号方式。具体对应关系可以查看维基百科: [1]

开源ATI驱动

开源ATI驱动有两种,xf86-video-atixf86-video-radeonhd.

开源驱动间的区别

  • xf86-video-ati (下面叫:radeon) :
    • Works with Radeon chipsets up to X1950 (latest R500 chipsets) as well as HD2xxx (latest R600 chipsets).
    • Radeons 9200以及之前的显卡系列,拥有稳定、完整的功能以及2D、3D加速功能。
    • Radeons 9500-X1950系列具备完整2D加速和较好的3D加速功能,但相比ati官方驱动,功能仍然不全(比如, powersaving仍然处于测试阶段)。
    • 支持DRI1, RandR 1.2/1.3, EXA加速和Kernel-Mode-Setting/DRI2(使用最新的linux kernel,libDRM和mesa)。
    • 显卡从HD2xxx (R6xx)系列开始,直到目前最新的ati显卡,都被支持,但目前只有2D支持。

支持情况请看这里

注:支持几乎所有的ATI显卡,根据实际使用,目前3D虽然稳定,但效率仍然明显不如windows下用ati官方驱动

Note: HDMI的支持将通过AtomBIOS被xf86-video-ati实现。
  • xf86-video-radeonhd (下面叫 radeonhd ):
    • 专为ATI R500芯片(Radeon X1000 系列)和更新显卡而写的。
    • 是Novell根据AMD发布的驱动文档重写的。
    • 支持RandR 1.2但仍然很多东西仍在开发。

如果硬件支持,驱动还支持HDMI声音输出。

注:目前2D性能方面,比xf86-video-ati优秀,但3D只支持两个系列的,其他系列仍在开发

安装与配置

安装

Note: 如果你之前安装过私有驱动,请确认卸载catalyst,并重启系统。

安装xf86-video-ati

pacman -S xf86-video-ati libgl ati-dri

安装 xf86-video-radeonhd :

pacman -S xf86-video-radeonhd libgl ati-dri
Note: 可使用AUR中的GIT版本驱动——最新开发中的版本,可能提供更新的功能以及更多显卡的支持,但是可能不稳定。

配置

在新版xorg的支持下,可以不用配置xorg.conf,只要你开启了hal服务,安装了xf86-input-evdev等xorg驱动,Xorg会自动帮你完成硬件识别等工作。

无xorg.conf情况下运行Xorg

从Xorg-server 1.5.x开始,/etc/X11里面的Xorg.conf配置文件就不是必须的,一般情况下,Xorg可以自动检测硬件并自动完成设置。

一定要确认HAL, mesa, 程序组 xorgxorg-input-drivers 已经安装:

 pacman -S hal xorg-input-drivers mesa xorg

并把HAL加入到/etc/rc.conf的DAEMONS中,然后使之运行

Note: 开启了KMS (Kernel Mode Setting) , xorg.conf可能根本就不需要了。,关于Radeon Kernel mode-setting的更多信息,可看this.

使用xorg.conf运行Xorg

Note: /etc/X11/xorg.conf已经不需要所有关于输入设备的部分了,因为 HAL可以配置部分/全部的热插拔设备。 (需要确认HAL已经运行,并且xorg-input-drivers 已经安装。)

编辑xorg.conf,下面是一个简单但是完全可以正常工作的样本,更详细请看man radeon:

Section "ServerLayout"				# 这里你需要配置什么就写什么,我需要定义显卡参数,就添加一个Screen行
	Identifier	"Xorg Configured"	# 这个Layout的名称
	Screen      	0  "screen0" 0 0	# 定义你使用的名字叫screen0的Screen,下面一定要有定义
EndSection

Section "Device"
	Identifier  "x700"			# 定义名称叫"X700"的设备(Device),因为下面有用到
	Driver		"radeon"		# 使用radeon驱动,完全可以不要
	VendorName	"ATI Technologies Inc"
	BoardName	"ATI Mobility Radeon X700"
#	Option		"BackingStore" "on"	# 不知道有什么作用
	Option          "DynamicClocks" "on"	# 部分显卡开启动态调整频率
	Option		"EnablePageFlip" "on"	# 提高性能
#	Option		"FBTexPercent"	"50"	# 默认如此
EndSection

Section "Screen"
	Identifier "screen0"
	Device     "x700"			# 使用名字叫"X700“的设备,上面有定义
	DefaultDepth     24			# 默认使用的色深,可以不写
	SubSection "Display"			# 这里可以定义分辨率,当KMS启用后,这里可能失效
		Viewport   0 0			# 自动识别分辨率,有这一行下面两行失效
	#	Depth	24			# 定义这里调整色深24的时候模式
	#	Modes	"1280x800"		# 分辨率为1280x800,去掉前面的"#"号,删除Viewport行生效
	EndSubSection
EndSection

你想自定义硬件的工作参数等,可以修改xorg.conf,and add or make sure you have the following in their given sections:

Section "Module"
  Load  "glx"
  Load  "dri"
  Load  "drm"
EndSection

Device section for xf86-video-ati :

Section "Device"
 Identifier "name"                     # your alias
 Driver "radeon"
EndSection

Device section for xf86-video-radeonhd :

Section "Device"
 Identifier "name"                     # your alias
 Driver "radeonhd"
 Option "AccelMethod" "exa"            # to enable 2D and Xv acceleration on R6xx/R7xx - default AccelMethod shadowfb
 Option "DRI" "on"                     # to enable 2D and Xv acceleration on R6xx/R7xx - default DRI disabled
EndSection
Note: Try below for smooth performance,over Option "DRI", for RS780M/MN [Radeon HD 3200] using the radeonhd driver(as of 3rd May 2009)

This section (DRI) is not needed (thus deprecated),but use it if you encounter DRI related problems.

Section "DRI"
 Group        "video"
 Mode         0666
EndSection

使用开源驱动时,请确认你安装了ati-dri而不是catalyst。否则,错误的libGL.so将导致直接加速(direct rendering)无法工作。

AMD/Ati cards and kernel mode-setting (KMS)

Kernel mode-setting is a technology that puts the work of setting graphics output modes into kernel space. This allows for a cleaner implementation, and means that switching VTs (Ctrl+Alt+F1, etc.) is nearly instantaneous. KMS also allows a full-resolution framebuffer (which is nice for high-res displays in console mode). KMS requires Xorg free video userspace driver xf86-video-ati 6.12.4 or later. KMS enables more technologies (like DRI2) that will reduce artifacts and increase 3D performance. Eventually, all Xorg video drivers will be replaced by corresponding kernel drivers which support KMS.

Since version 2.6.31, kms is available and is enabled by default in the default Arch kernel.

Note: For now, only Radeons up to R5xx (X1xxx) support KMS. Support for later Radeon cards will be added in Linux kernel 2.6.32.

Early start

This method will start KMS as early as possible in the boot process, when the initramfs is loaded.

1) Remove all "vga=" and "video=" options from your kernel appendline in /boot/grub/menu.lst. Using other framebuffer drivers (such as uvesafb/radeonfb) will conflict with KMS. Remove any framebuffer relates modules from /etc/mkinitcpio.conf.

2) Add "radeon" (without quotes) to MODULES array in /etc/mkinitcpio.conf. Depending on your chipset it may be necessary to add "intel_agp" before the radeon module.

3) 重新初始化initcpio:

mkinitcpio -p kernel26

4) 重启系统。

Late start

With this choice, KMS will be enabled when the boot process says, "Loading modules."

1) Remove all "vga=" and "video=" options from your kernel appendline in /boot/grub/menu.lst. Using other framebuffer drivers (such as uvesafb/radeonfb) will conflict with KMS. Remove any framebuffer relates modules from /etc/mkinitcpio.conf.

2) Add "radeon" module or "intel_agp radeon" if needed to the modules array in your /etc/rc.conf

Some users have reported udev module loading can be speed up by adding "options radeon modeset=1" to your /etc/modprobe.d/modprobe.conf file.

3) 重启系统。

If you are lucky your system will boot with both possible ways straight with proper framebuffer resolution and Xorg will start very quick.

Warning: If late start won't work for you, try the early start of Kernel Mode Setting.

Kernel Mode Setting Troubleshooting

Slow or no compositing after having KMS enabled

You must have these package versions installed at least in order to have both KMS and 3D desktop compositing enabled:

kernel26 2.6.31.x
mesa 7.5.x
ati-dri 7.5.x
libgl 7.5.x
xf86-video-ati 6.12.4

If these are already installed but you still can't have both KMS and 3D compositing enabled (or if 3D compositing is slow), disable KMS.

Note: Most problems and major drawbacks are supposed to be solved if the installed Mesa's version is at least 7.6.x. That's a warning for those that haven't upgraded to Mesa 7.6 yet.

KMS 相关问题的解决办法

停用KMS
Warning: Follow this section, if you encounter such problems, like: kernel crash, distorted framebuffer on boot, Xorg refusing to start, Xorg unloading the DRI2 module and falling back to mesa software rasterizer meaning no 3D acceleration.

The solution is to disable experimental KMS and fall back to the old behavior.

1) 加"radeon.modeset=0" 到grub或者lilo的引导菜单 /boot/grub/menu.lst 中 如果这个不起作用,换成 "nomodeset"试试。 2) 如果你把"radeon" 加到mkinitcpio.conf文件的 MODULES 里,删除之。

3) 重建initramfs 输入:

 mkinitcpio -p kernel26
Warning: 使用Catalyst驱动的用户:可能需要把radeon加入模块加载黑名单里面。 Put into your modules array in 在文件/etc/rc.conf的modules部分,加入"!radeon" .
  • Options for modules can be provided in a file under /etc/modprobe.d/. If you are using the radeon module (which you can see if it's loaded with the command

lsmod | grep radeon , you can switch off KMS by creating a file specifying the module options e.g. /etc/modprobe.d/radeon.conf

options radeon modeset=0

4) 重启系统。

删除xorg.conf

有些xorg.conf参数设定可能会产生问题,备份之后,删除之,然后 重启 Xorg。

性能调整

下面这些选项属于Section "Device":

       Option "AGPMode" ""

默认为"未定义"。所以有这个定义的最好删除,哪怕你定义成8说不定效率都不如留空

       Option "ColorTiling" "on"

默认开启。打开ColorTiling是绝对安全的,并且这被认为是默认的设置。人们注意到,通过xorg.conf来开启它,性能会有所提高。

       Option "AccelMethod" "EXA"

默认如此,定义加速方式(Acceleration architecture),最好不要修改。

       Option "EnablePageFlip" "on" 

默认未开启,开启Page Flip一般是安全的,同时也会禁用EXA,因此大多用在比较老的显卡上。新版驱动可以使之与EXA共存。

       Option "AGPFastWrite" "yes"

这一选项可以打开fast writes。很可能会出问题,比如造成X死锁,所以做好删除它的准备,如果你到时进不了X的话。

要了解更多的配置选项请阅读manpage

man radeon

driconf是一款很不错的工具,值得一试。它让你能修改一些设定,比如vsync,anisotropic,texture compression等等。有些程序(比如Google Earth )要求“disable Low Impact fallback",使用driconf可以做到这一点。

TV输出(TV out)

自2007年8月起,所有集成了tv-out功能的Radeon显卡都有了驱动的tv-out支持。 目前tv-out还有一些局限:它对输出的自动识别并不总是正确,而且只支持NTSC制式。 不管怎样,它在我的Radeon 7000上工作地很棒。这里是我的方法:

首先,检查你的S端子输出:xrandr应该会给你类似如下的结果:

Screen 0: minimum 320x200, current 1024x768, maximum 1280x1200
...
S-video disconnected (normal left inverted right x axis y axis)

现在我们要告诉Xorg线已经插好了

xrandr --output S-video --set load_detection 1

设定TV制式标准

xrandr --output S-video --set tv_standard ntsc

为它添加一个分辨率(目前只支持800x600)

xrandr --addmode S-video 800x600

我打算使用复刻模式(clone mode)

xrandr --output S-video --same-as VGA-0

好了,让我们来看看效果吧

xrandr --output S-video --mode 800x600

这时,在电视上你应该能看到你的桌面,分辨率是800x600。

要关掉这一输出:

xrandr --output S-video --off

你可能还发现视频只在显示器上播放,而电视上没有。XV_CRTC属性控制着Xv overlay的输出方向。

把输出指向电视:

xvattr -a XV_CRTC -v 1

要切换回显示器,把1改成0-1应用于双头显示(dual head)设置中的自动切换

HDMI输出声音

如果你硬件支持,而且安装的驱动为xf86-video-radeonhd (xf86-video-ati将很快有HDMI支持),你就可以按照下面修改xorg.conf

Section "Device"
  # ...
  Option "Audio" "on"
  Option "HDMI" "all"
EndSection

重启X,看是否有效。

  1. Connect your PC to the TV via HDMI cable (duh).
  2. Use xrandr to get picture to the TV. Ex: xrandr --output DVI-D_1 --mode 1280x768 --right-of PANEL. Simply typing xrandr will give you a list of your valid outputs.
  3. Run aplay -l to get the list of your sound devices. Find HDMI and note the card number and corresponding device number. Example of what you want to see: card 1: HDMI [HDA ATI HDMI], device 3: ATI HDMI [ATI HDMI]
  4. Try sending sound to this device: aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav. Be sure to change plughw:z,y to match your hardware number found with last command. You should be able to hear the test sound from your TV.

AMD/Ati cards and KernelModeSetting (KMS)

Official Kernel 2.6.31 has experimental modesetting enabled now. Kernel Mode-Setting is a technology that puts the work of setting graphics output modes in kernel space. This allows for a cleaner implementation, and means that switching VTs (Ctrl+Alt+F1, etc.) is nearly instant. As well, you will have a full-resolution framebuffer, which is nice for high-res displays in console mode. KMS requires Xorg free video userspace driver xf86-video-ati 6.12.4 or later.

Early start

This method will start KMS as early as possible in the boot process, when the initramfs is loaded.

1) Remove all "vga=" and "video=" options from your kernel appendline in /boot/grub/menu.lst. Using other framebuffer drivers (such as uvesafb/radeonfb) will conflict with KMS. Remove any framebuffer relates modules from /etc/mkinitcpio.conf.

2) Add "radeon" to MODULES in /etc/mkinitcpio.conf. Depending on your chipset it may be needed to add "intel_agp" in front of the radeon module.

3) Re-generate your initcpio:

mkinitcpio -p kernel26

Late start

With this choice, KMS will be enabled when the boot process says, "Loading modules."

1) Remove all "vga=" and "video=" options from your kernel appendline in /boot/grub/menu.lst. Using other framebuffer drivers (such as uvesafb/radeonfb) will conflict with KMS. Remove any framebuffer relates modules from /etc/mkinitcpio.conf.

2) Add "radeon" module or "intel_agp radeon" if needed to the modules array in your /etc/rc.conf

Some user have reported udev module loading can be speed up by adding "options radeon modeset=1" to your /etc/modeprobe.d/modprobe.conf file.

If you are lucky your system will boot with both possible ways straight with proper framebuffer resolution and Xorg will start very quick.


Troubleshooting

1) Disable KMS:

If your card is not yet well supported this can happen: kernel crash, Xorg refuses to start, Xorg unloads the DRI2 module and falls back to mesa software rasterizer meaning no 3D acceleration.

The solution is to disable experimental KMS and fall back to the old behavior. Add "radeon.modeset=0" into the kernel append line in /boot/grub/menu.lst or the lilo configuration file.

Catalyst user: You will probably also need to blackmask module loading for radeon. Put "!radeon" into your modules array in /etc/rc.conf.

ATI官方驱动:Catalyst

ATI的私有驱动曾被称为fglrx,现在ATI将其重新命名为Catalyst。目前,改变的只是软件包的名字,内核模块依然保留着它原有的名字fglrx,因此下面提到的任何“fglrx"都特指内核模块,而不是软件包

支持的设备

访问ATI Catalyst 8.8 (Linux) Release Notes,查看支持的显卡列表 NOTE: 从 v. 9.4版本开始,ATI官方驱动只支持R600和更新的显卡 (这表示,HD2xxx和比这系列更新的显卡才支持). 相对旧的显卡,尤其是笔记本用户,会发现ATI Catalyst 8-8 显卡驱动,只支持Xorg <= 7.3. 直到 8-10 Catalyst驱动才开始支持Xorg 7.4。所以如果你的显卡较老,并使用Xorg 7.4,目前你只能使用开源显卡驱动,推荐使用xf86-video-ati。即使是从Catalyst 8-10 到 9-3驱动支持的显卡开始支持Xorg 7.4,大批量的较老显卡使用起来仍会比较困难,因为arch没提供官方显卡驱动打包支持。

安装

自Xorg 7发布以来,Arch在extra软件仓库中提供预编译的catalyst软件包。如果你使用core或者extra中提供的内核,那么安装过程将会很简单。如果你使用定制的内核,那么你将需要一些额外的步骤。

普通内核

kernel26

安装kernel26的fglrx驱动,你需要catalyst软件包。

# pacman -S catalyst

这个软件包只包含内核模块,同时还要安装catalyst-utils作为依赖。catalyst-utils独立于内核,同时为Xorg提供库和实用程序,其中也包含了ATI自己的libGL.so

自己编译的内核

为定制的内核安装catalyst,你需要为你的内核编译专门的模块,并创建自己的catalyst-$kernel软件包。

如果你缺乏制作软件包的经验,首先阅读wiki中关于ABS的页面,这会使你接下来的工作更顺利。

获取PKGBUILD

可以通过下面的两种方式从CVS或ABS中获取PKGBUILDfglrx.install文件

编辑PKGBUILD并创建软件包

这里需要作三处修改:

第一,把

   pkgname=catalyst

改成

   pkgname=catalyst-KERNEL_NAME

其中KERNEL_NAME可以是任何你想要的名字

第二, 从依赖列表(dependencies)中移除kernel26

第三, 把

   _kernver=${_kernel_version}-ARCH

改成

   _kernver=`uname -r`

(或者直接把使用你定制的内核时uname -r的输出结果填到那里)

最后,创建并安装软件包(makepkg -i或者makepkg然后pacman -A pkgname.pkg.tar.gz

注意

  • 如果你使用仓库的多个内核,记得给每个内核都装上相应的catalyst模块。它们不会互相冲突。
  • 不需要改动catalyst-utils,它是独立于内核的。你需要做的只是编译一个内核模块。

ATI/AMD安装程序

安装

警告:不推荐使用ati.com/amd.com的安装程序!

这样做会与各种pacman软件包发生文件冲突,同时也很可能造成X的运行失败。通过pacman获得的软件包是专门为Arch Linux配置的,建议你选择它们。

如果你已经尝试了用官方安装程序进行手动安装,并且发现电脑不再正常工作了,在/usr/share/ati里应该有一个卸载脚本,运行它,然后试一试pacman的软件包。

如果出于某种原因,你一定要使用ATI/AMD的安装程序,下面的步骤可能会对你有用:

  • 下载ATI/AMD的驱动安装程序
  • 给它可执行权限
  • 安装mesa
   #pacman -S mesa
  • 如果需要的话,安装Xorg
  • 检查ATI/AMD安装程序需要的其它包,这些包已在官方网站上列出。
   #pacman -Q | grep NameOfPackage
  • 按照接下来描述的方法用aticonfig更新xorg.conf
  • 如果有需要,在xorg.conf里添加指向fglrx.so模块的ModulesPath

配置

ATI提供了aticonfig来修改已存在的xorg.conf,配置显卡的各个方面。 查看aticonfig选项的完整列表,运行

$ aticonfig --help

如果你还没有xorg.conf,运行下面的命令来生成一个

# Xorg -configure

用aticonfig修改xorg.conf有一个最简单的方法。运行aticonfig,后面不要加任何命令行参数,在输出结果未尾的examples中你可以找到它。

   Examples:
     1. Setting up fglrx for the first time.
          Single head :    aticonfig --initial --input=/etc/X11/xorg.conf
          Dual head   :    aticonfig --initial=dual-head --screen-layout=above
                           This command will generate a dual head configuration
                           file with the second screen located above the first
                           screen.

只要视实际情况调整两行中的一行来完成你的个人设置。

警告:最好还是亲眼检查一遍新的xorg.conf以保证文件的正确性。否则,你的图形界面可能无法启动 你可以拿它与wiki中Xorg页面给出的Sample Xorg.conf files 相比较。

确保你的"Screen"章节含有"DefaultDepth 24"并且有包含"Mode 666"的"DRI"章节。fglrx需要这些,否则重启或者注销后可能无法使用图形界面。另外,最新的Xorg可以自动选择和调整X选项,你不必在xorg.conf里面写非常多的内容。以前为xorg写的配置内容可能多余了。

下面这个例子就可以正常工作了

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
 
Section "Files"
	RgbPath      "/usr/share/X11/rgb"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "/usr/share/fonts/misc"
	FontPath     "/usr/share/fonts/100dpi:unscaled"
	FontPath     "/usr/share/fonts/75dpi:unscaled"
	FontPath     "/usr/share/fonts/TTF"
	FontPath     "/usr/share/fonts/Type1"
EndSection
 
Section "Module"
	Load  "extmod"
	Load  "dbe"
	Load  "xtrap"
	Load  "record"
	Load  "dri"
	Load  "glx"
	Load  "GLcore"
	Load  "freetype"
EndSection
 
Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
EndSection
 
Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection
 
Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
EndSection
 
Section "Device"
	Identifier  "Card0"
	Driver      "fglrx"
	VendorName  "ATI Technologies Inc"
	BoardName   "Radeon Mobility X1400"
	BusID       "PCI:1:0:0"
EndSection
 
Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth	24
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection
 
Section "DRI"
	Mode 0666
EndSection

接下来,确定模块fglrx、以及相关需要的模块agp等被加载:

# modprobe fglrx 

把他们加到/etc/rc.conf的modules列表,使它们在系统启动时就加载。

最后,运行startx来启动Xorg,确认direct rendering是否已经打开。在终端输入:

$ glxinfo | grep direct

如果显示为"direct rendering: yes",恭喜,你成功了!如果提示找不到glxinfo,你可能还需要安装软件包mesa。

注意:Xorg近期的版本,libs的路径变了,所以有时libGL.so可能没被正确加载(即使已经安装了)。此时别忘了修正路径。 Please read "trouble shooting" section for detail.

已知问题及解决

OpenGL程序支离破碎

这个bug已经在8.9版本里面修复了。 OpenGL programs like e.g. blender in windowed mode, show a rectangle/checkerbox corruption. 这个可以通过使用虚拟显示来解决。只要设置虚拟大小为你的显示器横向大小加上64就可以了 例如,你的显示器是1600x1200分辨率,那么用1664替代1600

 Section "Screen"
   Identifier "Screen0"
   Device     "Card0"
   Monitor    "Monitor0"
   SubSection "Display"
     Depth     24
     Virtual 1664 1200
   EndSubSection
 EndSection

重启或者startx之后黑屏并且系统完全挂起或者锁死

这个bug已经上报了,请使用一个能引导的Live CD之类的光盘引导你的电脑,如ubuntu live cd,arch的安装光盘或者安装程序

  1. 重启并且用光盘引导电脑。
  2. 挂载你的系统分区,如你的系统分区在sda5,需要挂载到/mnt,那么就mount /dev/sda5 /mnt。
  3. 查看/var/log/Xorg.0.log,主要是看里面以(EE)开头的内容。可以使用如下命令,grep -e EE /mnt/var/log/Xorg.0.log。
  4. 搜索解决出现的问题。
  5. 重启并且取出光盘,启动你的Archlinux,测试xorg.conf是否正常。
  6. 如果仍然有问题,那么就修改xorg.conf里面驱动fglrx为mesa或者ati或者radeon,至少这样能让你进入图形界面,虽然没有3D加速了。

注销后KDM消失

如果你使用catalyst驱动,并且系统在注销以后自动回到控制台(vc/1),而不是正常时的KDM,你需要命令KDM在每次注销后重新启动X server:

$ sudo vim /opt/kde/share/config/kdm/kdmrc

在[X-*-Core]区段中加入:

TerminateServer=True

现在当你从KDE注销以后,应该可以看到KDM了。

Direct Rendering未开启

打不开Direct Rendering吗?运行:

   $ LIBGL_DEBUG=verbose glxinfo > /dev/null

输出结果的开头部分通常会给出没有direct rendering的原因。

常见的错误信息和解决方法如下:

   libGL error: XF86DRIQueryDirectRenderingCapable returned false
  • 确认你在加载fglrx内核模块之前加载了正确的agp模块。运行hwdetect --show-agp来确定你所需的agp模块,然后确认所有这些模块都被列在rc.conf中的MODULES=序列中,并且位于fglrx之前
   libGL error: failed to open DRM: Operation not permitted
   libGL error: reverting to (slow) indirect rendering
  • 为解决这个问题,要确保你的xorg.conf中有以下的section:
   Section "DRI"
       Mode 0666
   EndSection
   libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//fglrx_dri.so
   libGL error: dlopen /usr/lib/xorg/modules/dri//fglrx_dri.so failed (/usr/lib/xorg/modules/dri//fglrx_dri.so: cannot open shared object file: No such file or directory)
   libGL error: unable to find driver: fglrx_dri.so
  • 如果错误信息给出的路径是/usr/X11R6/lib/modules/dri/fglrx_dri.so,先完全地从系统中注销,然后重新登陆。如果你使用图形化的登陆管理器(gdm, kdm, xdm),确认每次登陆时/etc/profile都被用作源。通常可以把/etc/profile作为源加入到~/.xsession或~/.xinitrc中,但设置方式也可能视不同登陆管理器而有所差别。
  • 如果错误信息给出的路径是usr/lib/xorg/modules/dri/fglrx_dri.so,可能是有什么装错了。重装fglrx试试看。


   fglrx: libGL version undetermined - OpenGL module is using glapi fallback
  • 这可能是系统中有多个版本的libGL.so导致的。运行:
   $ sudo updatedb
   $ locate libGL.so

应该会返回如下的结果:

   $ locate libGL.so
   /usr/lib/libGL.so
   /usr/lib/libGL.so.1
   /usr/lib/libGL.so.1.2
   $

应该只有三个libGL.so,如果你还有别的(比如/usr/X11R6/lib/libGL.so.1.2)就把它们删掉。这样应该能修复你的问题。

也许没有什么错误指出这是一个问题,但如果你使用X11DR7,确保你的系统中没有下面这些文件:

   /usr/X11R6/lib/libGL.so.1.2
   /usr/X11R6/lib/libGL.so.1

休眠相关

无法进入待机/休眠状态

想利用休眠脚本进入待机状态时,如果fglrx返回了错误信息,可以这样解决:在/etc/X11/xorg.conf的"Device" section中加入下面的选项,这一选项将允许fglrx模块进入待机状态。

Option      "UseInternalAGPGart" "no"

无法从待机状态返回

如果你打开了framebuffer,catalyst驱动将不能从待机状态返回。若要关闭framebuffer,需在/boot/grub/menu.lst中添加vga=0的内核参数。比如:

# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz26 root=/dev/sda3 resume=/dev/sda2 ro vga=0
initrd /kernel26.img

硬件冲突

在某些版本的nForce3主板上(比如nForce 3 250Gb),Radeon显卡没有3D加速。原因尚不明确,据说有一个办法可能让这一组合得到3D加速:用nVIDIA的驱动启动Windows,然后重启(--b)

可以这样来验证:

用root登陆,在控制台输入:

    dmesg | grep agp

如果你得到类似的结果(这个是基于nForce3的系统)

    agpgart: Detected AGP bridge 0
    agpgart: Setting up Nforce3 AGP.
    agpgart: aperture base > 4G

并且,如果发出这个命令……

     tail -n 100 /var/log/Xorg.0.log | grep agp

得到类似的结果:

     (EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"

那就说明你遇到这个BUG了。

据说在某些情况下,降级主板的BIOS可能会有帮助,但这毕竟没有在所有的情况下都得到证实。而且,一次失败的BIOS降级有可能令你的硬件报废,所以请慎重行事。

更多关于这一bug的信息及可能的解决方法请看这里http://bugzilla.kernel.org/show_bug.cgi?id=6350

Compaq Presario笔记本电脑

即使安装了所需的驱动和配置文件,某些笔记本(比如装有Xpress 200M的Presario R4000 )仍然只给你一个空荡荡的屏幕。 问题似乎出在内核没有检测到正确的显存信息(即使你只有128M的显存,lspci -v也总是报告为256M)。修改BIOS的选项,使用"SidePort+UMA" ,让128M的显存加上128M的系统内存,这一方法看起来很管用。

这可能是BIOS或Linux PCI代码的bug。

外部资源

这里可以找到更多信息

Personal tools