我之前用的是Fedora 19,现在已经升级到Fedora 21。机器是13年底买的。
apple没有使用标准的SMBus,它自己定制了一个smc模块。由于不知道它具体是怎么工作的,所以Linux对applesmc的支持极差。
风扇控制模块是坏的,所以CPU经常过热。表现在经常收到mce事件
CPU7: Core temperature above threshold, cpu clock throttled (total events = 3)
mce: [Hardware Error]: Machine check events logged
用sensors命令可以看到CPU温度经常在90度以上。实际上应该在87度以下。
bugzilla上相关链接:
https://bugzilla.redhat.com/show_bug.cgi?id=924570
https://bugzilla.kernel.org/show_bug.cgi?id=14514
workaround:安装这个针对mbp的fan control 软件 https://github.com/dgraziotin/Fan-Control-Daemon
并且手动把最低风速调到3000
echo 3000 > /sys/devices/platform/applesmc.768/fan1_min
echo 3000 > /sys/devices/platform/applesmc.768/fan2_min
smc经常会报错,发送命令失败:
kernel: applesmc: send_byte(0xe0, 0x0300) fail: 0x40
kernel: applesmc: F1Tg: write data fail
反正不管怎样,cpu过热的消息都会经常出现
我这个是视网膜屏,分辨率是2880x1800,大多数程序不是为这么高的分辨率设计的。于是Fedora19下显示效果就特别差,字小的看不清。windows下可以调整DPI,其中win 8.1对这个的支持就比较好,win 7就很差。
升级到Fedora 20后,这个问题有很大改善。升级到Fedora 21后有更大的改善。
但是chrome不是DPI aware的,暂时的做法就是把chrome的zoom level调大。不要试图调大chrome的默认字体,否则连google都无法正常使用了。
这个笔记本是双显卡,一个内置的Intel显卡,一个GeForce GT 650M。内置的Intel显卡所使用的是内核的i915模块。这个模块在启动的时候经常崩溃,导致还没到登录界面,就卡死了。而且这个问题似乎只出现在使用EFI引导的时候。
我的解决办法是:禁用这个模块!
很奇怪,如果我使用外接U盘引导,按照传统BIOS的方式启动GRUB,那么chrome可以部分的使用GPU加速,但是如果是采用EFI启动,则chrome完全不能使用gpu。
提示说:“GPU process was unable to boot: Features are disabled upon full but not preliminary GPU info.”
再或者提示说:“Older Drivers are unreliable for Optimus on Linux"
不过,反正国内这环境,也没机会在浏览器内看1080p的视频。
然后是背光模块似乎与nvidia的官方驱动冲突。用top看,kworker的某个进程始终CPU 100%。
我用perf研究了一下,发现大部分cpu都耗费在了gmux模块上。
Samples: 44K of event 'cycles', Event count (approx.): 36241300831
48.37% kworker/0:3 [kernel.kallsyms] [k] native_read_tsc
native_read_tsc
__const_udelay
+ gmux_index_wait_ready.isra.7
+ 35.03% __const_udelay
37.76% kworker/0:3 [kernel.kallsyms] [k] delay_tsc
7.83% kworker/0:3 [apple_gmux] [k] gmux_index_wait_ready.isra.7
我查了一下,这个符号来自apple_gmux模块,把这个模块禁用后就好了。我这个模块的版本号是3.2.19
不过很奇怪的是我把kernel升级到3.16.3后,这个问题就消失了。apple_gmux似乎并未做什么更新。
键盘布局可以通过修改hid_apple的参数来实现。把这下面这两个加入到/etc/default/grub中
hid_apple.fnmode=2 hid_apple.swap_opt_cmd=1
换vmware吧。附带说,vmware在mac下也不支持usb,可能是因为我用的vmware fusion的版本太老。
屏幕亮度调节默认是失效的,除非你每次开机后执行
/usr/sbin/setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.