在 mbp 2013 上安装 Linux 的经验分享

2015-02-19 18:43:20 +08:00
 snnn

我之前用的是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显卡驱动启动时崩溃

这个笔记本是双显卡,一个内置的Intel显卡,一个GeForce GT 650M。内置的Intel显卡所使用的是内核的i915模块。这个模块在启动的时候经常崩溃,导致还没到登录界面,就卡死了。而且这个问题似乎只出现在使用EFI引导的时候。

我的解决办法是:禁用这个模块!

浏览器不支持GPU加速

很奇怪,如果我使用外接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的视频。

内核进程占用100%的cpu

然后是背光模块似乎与nvidia的官方驱动冲突。用top看,kworker的某个进程始终CPU 100%。

我用perf研究了一下,发现大部分cpu都耗费在了gmux模块上。

Samples: 44K of event 'cycles', Event count (approx.): 36241300831

我查了一下,这个符号来自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

virtualbox不支持usb

换vmware吧。附带说,vmware在mac下也不支持usb,可能是因为我用的vmware fusion的版本太老。

屏幕亮度调节

屏幕亮度调节默认是失效的,除非你每次开机后执行
/usr/sbin/setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0

4843 次点击
所在节点    MacBook Pro
23 条回复
jamesxu
2015-02-19 18:47:10 +08:00
直接 Ubuntu 不行吗?要不虚拟机,这样太折腾了
snnn
2015-02-19 18:49:01 +08:00
@jamesxu Ubuntu也解决不了驱动问题啊,它们的内核都一样的。另外,Linux对高分屏支持差是通病,无论换什么发行版,什么硬件,都是这样。只能期待它一点点的改善。
snnn
2015-02-19 18:50:00 +08:00
@jamesxu 还有,无论什么发行版,只要是Linux,就没办法用chrome的gpu加速。更差的是,经常连webgl都用不了。
Agromania
2015-02-19 19:19:25 +08:00
我之前也是在mbp上各种折腾装上了Ubuntu,针对各种坑还写了笔记,

最后我还是换了MacOSX + Vagrant,感觉之前一切努力都是瞎搞。
Neo
2015-02-19 19:55:40 +08:00
so,no zuo no die
xieyudi1990
2015-02-19 20:41:00 +08:00
rmbp mid14, 没有碰到任何问题.

applesmc有人通过把Windows下的驱动逆向后开源了, 通过读写300h~31fh的io地址来控制. 如果你觉得内核带的那个applesmc.c不好, 可以尝试自己写一个. 不过自带的那个也还行, 一般50多度吧.

hidpi和发行版有毛关系?

早期efi的确会有驱动问题, 但是你还可以从legacy启动嘛. 反正我从efi启动linux无任何问题, 反倒是从efi启动windows会造成个带SecureROM的游戏会死机 (gta4)....
snnn
2015-02-19 21:18:46 +08:00
@xieyudi1990 "applesmc有人通过把Windows下的驱动逆向后开源了"

请问你说的这个开源后的驱动在哪里可以下载到? 还是已经进kernel的mainline了?
xuhaoyangx
2015-02-19 21:31:20 +08:00
= =其实很好奇vm性能上普遍比vb好不少,但是为啥这么多人喜欢用vb
14
2015-02-19 21:34:39 +08:00
@xuhaoyangx 开源免费
maemual
2015-02-19 21:34:45 +08:00
@xuhaoyangx 因为不要钱╮(╯_╰)╭
snnn
2015-02-19 21:49:35 +08:00
@xuhaoyangx 比如vagrant,对virtualbox的支持免费,对vmware的支持要收79$。于是我就只好继续用virtualbox。
xuhaoyangx
2015-02-19 21:54:35 +08:00
@14 @maemual 免费= =,的确,只不过不太涉及到vagrant这类容器的话,我都是用vm或者parallels,vb性能- -太渣了
@snnn 这种的确没想过- -自己也没怎么用过vagrant
chuhades
2015-02-19 23:10:12 +08:00
本来一直纠结装回 debian,看了下,放弃了。。
xieyudi1990
2015-02-20 06:45:22 +08:00
snnn
2015-02-20 10:14:49 +08:00
@xieyudi1990 这就是linux mainline的代码啊。光靠它是不行的,cpu经常过热。
windirt
2015-02-20 10:51:35 +08:00
virtualbox 要安装extpack才能支持usb
Dandy
2015-02-20 11:29:33 +08:00
一个Parallels足矣
sean419
2015-02-20 20:54:56 +08:00
直接在Parallels Desktop里装一下解决。只要内存够足。
andyhenry
2015-02-25 00:00:50 +08:00
@xieyudi1990 我现在感觉每个在mac上安装linux的人上辈子都是折翼的xx。就我个人而言,作为玩家而非工作使用mac真是一点意思都没有,远不如linux。
其实现在gnome和firefox对hidpi支持良好
andyhenry
2015-02-25 00:03:25 +08:00
linux和osx体验完全不同吧,怎么可能用虚拟机体验呢。就我个人而言,开始用osx之后*nix的知识一点没长进,反而是回到了win到处找破解软解的阶段。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/171807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX