[ 已解决 ] Intel && AMD 硬件安装私有驱动没能解决发热问题

最初是在这个帖子: 优化 AMD 显卡温度 ](优化 amd 显卡温度) 作为回复出现的,但觉得我现在出现的问题已经偏离了帖子的主题,并且在回复中提问显得不是和合适,于是决定新开一个主题。
总结一下在那篇帖子中描述的问题就是(基本是按时间顺序来的):

  1. 安装 AMD 私有驱动之后发热问题没能得到解决,但是对于这个不熟悉的话题不敢折腾,也一直没有管它 ;

  2. 早在几天前就装好了的私有驱动,昨天突发开机故障,开机时卡在

    [OK] Reached target Graphical Interface

这一步 ;
3. 经过排查,卸载掉私有驱动后能够正常开机,但是,发热问题很严重!
4. 记得 AMDCCCLE 中有可以禁用 AMD 的选项,于是重装私有驱动,配置好后能够重启,但是当我禁用掉 AMD 后再重启,无法开机,返回信息一样 ;
5, 再次卸载,然后找到了之前那篇帖子, 优化 AMD 显卡温度 ](优化 amd 显卡温度) ,虽然不懂其中的原理,但决定按上面说的先试着 ;
6. 因为安装 AMDOverdriverCtrl 需要已经安装好私有驱动,于是再次安装私有驱动,配置好 aticonfig 后重启失败,返回信息一样 ;
7. 再次卸载,到了现在这个状态,在这儿发求助贴 ;

需要补充的是:

  1. 系统,openSUSE 12.3;
    2, 硬件,intel && AMD HD 6400,intel 那块具体型号不记得了 ;

  2. 安装私有驱动是参照 官方文档 ](http://www2.ati.com/relnotes/catalyst_linux_installer.pdf) ,以及 这篇帖子 ](https://zh.openSUSE.org/SDB:ATI_驱动教程) 来的 ; 安装过程中没有报错,因为第一次成功装上了,虽然并没能解决我的问题 ;

  3. 目录 /etc/X11 下的内容:

    jiaxing@linux-e7bx:~> ls /etc/X11
    fs rstart Xmodmap xorg.conf.fglrx-2 xorg.conf.original-1
    lbxproxy xdm Xmodmap.remote xorg.conf.fglrx-3 xorg.conf.original-2
    mlterm xim xorg.conf.d xorg.conf.fglrx-4 Xresources
    proxymngr xim.d xorg.conf.fglrx-0 xorg.conf.fglrx-5 xsm
    qtrc xinit xorg.conf.fglrx-1 xorg.conf.original-0

从这儿可以看到,总共安装过 5 次的私有驱动 ;

  1. 因为对这个问题并不熟,所以暂时没想到还需要补充哪方面的内容了,如果还需要别的信息,在回复中补充 ;

「2013/07/16」修改为已解决,你确定已经解决???

@Jiaxing 阻碍你安装 ATI 驱动的是这个消息对么?

这个消息输出的意思是说,Systemd 将启动图形界面的责任成功传递给 Xorg 了。所以后面为什么 Xorg 没成功,你要看 /var/log/Xorg.0.log 和 /var/log/Xorg.0.log.old。

另外

sudo rm -rf /etc/X11/xorg.conf.fglrx-*
sudo rm -rf /etc/X11/xorg.conf.original-*

临时文件可删的。

不是这个消息阻碍我安装ATI驱动,而是装好后发生开机故障后的提示信息。
注意到我这三次安装:
第一次是装好之后,过了好几天突发开机故障,提示信息是这个,卸载掉ATI驱动后能够开机;
第二次是卸载重装之后,配置好aticonfig能够重启,但是在我使用amdcccle上面的禁用AMD硬件再重启后,开机故障,提示信息是这个;
第三次是再次卸载在重装之后,配置好aticonfig后重启,这次重启中,直接就开机故障了;
至于说为什么一装上ATI驱动就不能启动Xorg,卸载后就可以,原因我不知道。
关于/var/log/Xorg.0.log和/var/log/Xorg.0.log.old 这两个文件,暂时还看不懂里面在讲什么东西。。囧!这样看行不行??

jiaxing@linux-e7bx:~> cat /var/log/Xorg.0.log | grep EE
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    27.891] Initializing built-in extension MIT-SCREEN-SAVER
    28.192] (EE) Failed to load module "fglrx" (module does not exist, 0)
jiaxing@linux-e7bx:~> cat /var/log/Xorg.0.log | grep WW
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    26.957] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
    26.957] (WW) The directory "/usr/share/fonts/100dpi" does not exist.
    27.802] (WW) The directory "/usr/share/fonts/cyrillic" does not exist.
    27.823] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.
    27.891] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
    28.192] (WW) Warning, couldn't open module fglrx
    28.198] (WW) Falling back to old probe method for modesetting
    28.198] (WW) Falling back to old probe method for fbdev
    28.198] (WW) Falling back to old probe method for vesa
    28.732] (WW) RADEON(G0): No outputs definitely connected, trying again...
    28.732] (WW) RADEON(G0): Unable to find connected outputs - setting 1024x768 initial framebuffer
jiaxing@linux-e7bx:~> cat /var/log/Xorg.0.log.old | grep EE
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    28.145] Initializing built-in extension MIT-SCREEN-SAVER
    29.312] (EE) Failed to load module "fglrx" (module does not exist, 0)
jiaxing@linux-e7bx:~> cat /var/log/Xorg.0.log.old | grep WW
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    27.974] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
    27.974] (WW) The directory "/usr/share/fonts/100dpi" does not exist.
    28.137] (WW) The directory "/usr/share/fonts/cyrillic" does not exist.
    28.143] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.
    28.145] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
    29.312] (WW) Warning, couldn't open module fglrx
    29.322] (WW) Falling back to old probe method for modesetting
    29.322] (WW) Falling back to old probe method for fbdev
    29.323] (WW) Falling back to old probe method for vesa
    29.820] (WW) RADEON(G0): No outputs definitely connected, trying again...
    29.820] (WW) RADEON(G0): Unable to find connected outputs - setting 1024x768 initial framebuffer

另外,找到一个办法可以暂时解决发热严重的问题,就是禁用AMD显卡, 原文](http://www.mintos.org/hard/close-amd-display.html) 是说向 " /etc/rc.local " 中追加以下内容:

echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

这样的一个文件在openSUSE 12.3中并不存在,看起来像是一个cron??新建一个这样的脚本手动执行似乎也有效,至少发热没之前那样严重了。。

jiaxing@linux-e7bx:~> sudo cat /sys/kernel/debug/vgaswitcheroo/switch
root's password:
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Off:0000:01:00.0

亲,安装了不能用那不叫成功,这不还是阻碍了你的安装嘛。

除非你把三次的 log 都拿来,不然只能帮你有 log 的那次。这三次每次的原因都不一样。第一次第二次驱动是安装成功的。第一次的问题我不知道,但出在”突发“前你干了什么。第二次出在 amdcccle 你弄错了。第三次是(假设是有 log 这次)你驱动没装成。

亲,你已经会 grep EE 了,找到 (EE) 看不就会了吗?

Xorg.0.log 是你本次开机的日志,你的系统 fallback 到 vesa 意思就是没有驱动,纯当显示器用呢现在。要想从它看出消息,你得装完驱动,开机失败,进字符页面实时看。要么就是看 .old,这里它说明你的 ATI 内核模块未成功加载 (not found)。

所以你要去再装,出现这种情况,然后 lsmod 看是否已经挂载了 radeon 开源驱动。已经有了一个内核模块控制了显卡那后面的模块肯定加载不上,但用户空间 /usr 中,你的驱动文件(firmware)是和你加载的内核模块不配套。而从你的 Xorg.0.log 中可以推断出来,即使你不装闭源驱动,开源 radeon 也用不在你的显卡上,因为 fallback 到 vesa 了。vesa 是一个非常基础(就是”弱爆了“的意思)的显卡内核模块,你用它跑 3D 桌面那能不发热大么。

所以你的问题可能的原因就是,radeon 你用不来,但它又占着你的位置。所以我怀疑你是不是没有 blacklist radeon?那你需要再仔细看教程或者找相关内容看下,nvidia 驱动的文章里有怎么做的教学。

还有就是你可能没有在 GRUB 2 配置中的内核命令行添加 nomodeset,闭源显卡不支持 kernel mode。这个目前从日志里看不出来,我猜的。所以你先实验前面的。

Sent from my Galaxy Note 2 using Tapatalk 4 Beta

这个问题很简单啊,你看渣 Buntu 教程然后并没根据自己实际情况来嘛。

它不是一个 cron 定时任务,而是一个 sysvinit 开机脚本。cron 不一定在开机执行,它可以定在任何时间。sysvinit 也是一种”定时“,只不过只能定在每次开机。两者不是一回事就。

/etc/rc.local 是 sysvinit 需要的,而从 12.1 起,openSUSE 就是用 systemd 的了。所以当然没有。Arch 有那我只能说:不伦不类。

正确的做法是写一个 systemd service,然后使用 sudo systemctl enable xxx.service & sudo systemctl start xxx.service 让它能在每次开机自动运行。如何写 systemd service 可以 google,我们维基上我写过,关键词 ”openSUSE:How_to_write_a_systemd_service",或者等我用电脑时分分钟写一个。

Sent from my Galaxy Note 2 using Tapatalk 4 Beta

[Unit]
Description=Switch ATI Discrete Graphics Card Status
Wants=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'echo OFF > /sys/kernel/debug/vgaswitcheroo/switch'
ExecStop=/bin/sh -c 'echo ON > /sys/kernel/debug/vgaswitcheroo/switch'

[Install]
WantedBy=graphical.target

保存到 /etc/systemd/system/disable-ati-discrete-card.service

然后

sudo systemctl enable disable-ati-discrete-card.service
sudo systemctl start disable-ati-discrete-card.service

按照指示,再装了一遍,错误信息一样,直接重启失效,实时的启动的日志如下:

linux-e7bx:~/logs # cat Xorg.0.log.booterr | grep EE    # 我把当时可能用到的log都重定向到~/logs 里来了。。
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    20.990] Initializing built-in extension MIT-SCREEN-SAVER
    25.329] (EE) Screen 1 deleted because of no matching config section.    # 这个应该是印证了你之前的观点吧!
    26.048] (EE) fglrx(0): Active libglx doesn't match current PX setting.
    29.958] (EE) fglrx(0): PowerXpress: Fail to switch libGL link files.
    29.958] (WW) fglrx(0): PreInit PowerXpress failed!(EE) 
    29.958] (EE) Backtrace:
    29.958] (EE) 0: /usr/bin/Xorg (xorg_backtrace+0x49) [0x81eb2c9]
    29.958] (EE) 1: /usr/bin/Xorg (0x8048000+0x1a71d6) [0x81ef1d6]
    29.958] (EE) 2: linux-gate.so.1 (__kernel_rt_sigreturn+0x0) [0xb76f5410]
    29.958] (EE) 3: /usr/lib/xorg/modules/drivers/fglrx_drv.so (xdl_xs113_atiddxFreeScreen+0x10a) [0xb67316da]
    29.958] (EE) 4: /usr/bin/Xorg (xf86DeleteScreen+0x86) [0x80cda56]
    29.958] (EE) 
    29.958] (EE) Segmentation fault at address 0x1c
    29.958] (EE) 
    29.959] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
    29.959] (EE) 
linux-e7bx:~/logs # cat Xorg.0.log.booterr | grep WW
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    19.959] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
    19.959] (WW) The directory "/usr/share/fonts/100dpi" does not exist.
    20.171] (WW) The directory "/usr/share/fonts/cyrillic" does not exist.
    20.682] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.
    20.685] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
    22.999] (WW) Falling back to old probe method for fglrx
    29.958] (WW) fglrx(0): PreInit PowerXpress failed!(EE) 

“…但用户空间 /usr 中,你的驱动文件(firmware)是和你加载的内核模块不配套”

关于安装之后启动错误的那次,只有个fglrx,但是,安装之前,在运行级3下,lsmod又似乎有一些东西:

linux-e7bx:~/logs # cat lsmod.after-reboot.log | grep radeon    # 这个lsmod.after-reboot.log是安装之后重启错误的那次
linux-e7bx:~/logs # cat lsmod.after-reboot.log | grep fglrx    # 这个???
fglrx                6190318  0 
button                 13665  2 fglrx,i915
linux-e7bx:~/logs # cat lsmod.before.log | grep radeon    # 这个lsmod.before.log是没开始安装,运行级3
radeon                885878  0
ttm                    74171  1 radeon
drm_kms_helper         45273  2 radeon,i915
drm                   243772  4 radeon,i915,ttm,drm_kms_helper
i2c_algo_bit           13198  2 radeon,i915
i2c_core               34250  7 videodev,i2c_i801,radeon,i915,drm_kms_helper,drm,i2c_algo_bit
hwmon                  12912  3 coretemp,radeon,thermal_sys
linux-e7bx:~/logs # cat lsmod.before.log | grep fglrx    # 这后面没有东西。。。

”…所以你的问题可能的原因就是,radeon 你用不来,但它又占着你的位置“

其实现在,图形界面下,如果lsmod,返回结果是一样的

关于balsklist,检查了一下,如下:

linux-e7bx:~/logs # cat /etc/modprobe.d/50-blacklist.conf | grep fglrx
linux-e7bx:~/logs # cat /etc/modprobe.d/50-blacklist.conf | grep radeon
blacklist radeonfb

有这么一条,radeonfb

另外,grub 2中,内核命令行中确实没有nomodeset,这个是按默认来的,我没有动过。。
额,现在的话,该怎么办??后面所说的systemd service确实也有用,关于驱动这块我是看不懂我还能干什么了,所以,如果这一块搞不清楚是什么原因的话,那边就凑和着用吧!
指导性意见???

自行 Google “PreInit PowerXpress failed!(EE)”,我看到的一篇是:

salixos.org/forum/viewtopic.php?t=3707&p=24630#p24576

这直接证明你的问题不是「radeon 占位」,因为如果占位那你在安装后看到的也是 radeon。

所有的内核模块都没有“昵称”,radeon 和 radeonfb 是两个模块。但你不是占位问题,所以不需要考虑这里。

发行版默认不加这个选项,这个选项只对闭源显卡有用,发行版默认是开源的,开了反而开不了机。而闭源显卡驱动包没有设置这里的内容。这是它们的 bug,跟我们没关系。而你的问题暂时还不在这儿。

1赞

@Jiaxing 这个已解决是你自己标记的吧。不是我标的。

opensuse 官方 wiki 上的办法比较老了,你可以看看这个
wiki.archlinux.org/index.php/ATI_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29
archlinux 的
还有这个朋友的,他的是双显卡
forum.ubuntu.org.cn/viewtopic.php?p=2722821
具体命令修改一下就行,模块应该是差不多了。
推荐你用官方的包,可以直接编 rpm,官方包里也有图形界面的打包选项。
不过我也没装成功,似乎有个链接库冲突了。只能用 intel 显卡,热得很。
linux 的显卡驱动就只能看人品。

哦,这个标记是管理员的事么?我不知道啊。。解决是相对的,通过禁用独显暂时能搞定发热过多的问题,至于驱动,暂时不敢也不想去折腾了,所以。。就这样了!

「PS: 前段时间回家了,也一直忘记送出“感谢”了」

哦,这个一般用户自己标记,论坛的功能之一就是帮助你解决问题的嘛,自然是您自己觉得解决了才算解决了。

当然,这些问题的解决也是资料。为了方便后来的用户。管理员有时候也会代劳一下 (比较确定的情况下)。标记一下更清晰。节约大家时间。

您能自觉标记真是太好了。大概您没回帖,所以苏姐问一下您是不是真的解决了。