新到手的高分触屏版Thinkpad New X1C,一到手连Windows常用软件都没装好,就开始装osx 10.9.3,打算体验一下黑色的macbook air with retina display。由此开始了痛并快乐着的2周历程。
由于要保留系统恢复分区(花美元买的正版windows 8.1,怎么能放弃呢?),而机器本身已经gpt分区了,所以选用clover,安装过程参照了Black screen after apple logo和Dell XPS 15 (9530) - Intel HD 4600 Graphics on QHD+ built-in display - Need some help,尤其是后面一个,我的解决思路就是从那里学来的,而前一个有RehabMan对这类问题的建议,可以作为尝试的一个方向。
Dell XPS 15 (9530) - Intel HD 4600 Graphics on QHD+ built-in display - Need some help这篇帖子的作者极为牛逼,尤其是结构化的思路和动手能力研究能力了不起,而且过程描述很清晰,建议去学习一下。他在驱动3840x2160高分屏的HD4600时遇到了问题,外接显示器显示正常而LCD黑屏或闪烁。最终发现了由于高分辨率,两个因素需要修正,1是iokit的显示器频率锁定,2是预设DVMT prelocated memory和显卡驱动程序stolen memory size和frame buffer的大小。从10.9.3开始apple已经把pixel clock rate从165MHz放宽到330MHz,而他的机器需要375MHz,因此需要解锁iokit。而我的是275MHz,在范围内,应该不需要解锁。而preallocated memory在联想的bios里是被屏蔽了的,升级到最新版的1.16,只有一个intel graphic memory selection选项,值是256M和512M,应该是指DVMT Maximal Memory Size。要修改这个需要把芯片焊下来进编程器输入,我没这个能力也不敢,只好想想别的办法。从帖子中看到他始终有一台外接显示器,外接显示器的显示是正确的(因为分辨率低),他的种种试验都要依靠外接显示器完成。而我从来没试过外接显示器,说不定也是同样的情况。找了一台1280x960分辨率的老显示器接上,clover引导开机,依然黑屏,而外接显示器无显示,这是因为内置显示器是主显示器,把盖子合上,输出应该可以转到外接显示器上。合上盖子,外接显示器依然没动静,气馁中打开上盖准备长按电源关机时,外接显示器亮了一下,看到有密码输入框,可是随着主屏打开,两个显示屏又都黑了。按这个思路再试一次,这次晚一点再翻开主屏,信号切换需要时间,外接显示器亮了。兴奋中发现我没有usb键盘,虽然出现了密码框,但没法输入密码啊。等不及明天再找键盘,我试着把主屏打开一个小角度,手伸进去按键。在试这个合适角度时,奇迹发生了,内外屏都亮了,显示清晰,只是内屏与外屏的显示比例一样,是4:3的,两边各有一块没有。大喜过望地输密码进系统,系统报告里显卡的名称是正确的,但显示明显是没开QE、CI的。用ioregexplorer看,驱动程序已经加载了,QE、CI与驱动程序其实是2件事,但一般驱动程序正确加载了QE、CI应该打开了,不知道怎么回事。于是修改dsdt中的ig-platfor-id,试图寻找一个最佳值。在试0x0a260006时,意外发现外接显示器上的顶栏是透明的,说明QE、CI已经开了,那么我的显卡已经驱动了,要解决的就是LCD的频率、显存的问题了。在验证驱动和QE、CI时,尝试调整显示器分辨率,发现点击控制面板的分辨率图标打开了两个叠在一起的对话框,一个是外接显示器的,一个是主屏的,不小心还不容易发现。选择按主显示器优化,主屏的显示比例对了,分辨率也对了,外屏变成了压缩的16:9显示,但主屏下半部分闪烁严重。继续调整主屏分辨率,选择缩放,可选的分辨率框出现了,2560x1440是最高的一个,试了试1600x900,果然屏幕不闪了,这最终证明了通过ig-platfor-id注入,显卡驱动已经正确加载了,问题是高分辨率导致的显存不足或频率问题造成的。我尝试了第二档,数值记不清了,2500左右的,也能正常显示,这与根据Intel HD 4600 Graphics on QHD+ built-in display - Need some help中成功时所需的显存数和我的分辨率计算出来的结果是相符的,我的显存可能在临界点上,稍降一点分辨率就OK了,点确定把这个分辨率固定下来,以后估计可以不用外接显示器了。尝试之下,果不其然,可以离开外接显示器了,顶栏透明、水波纹全开,retina级别的黑macbook air的显示终于出现了。但也只是显示,要全部设备驱动还任重道远。即使显示也没有完美解决,开机时还是会黑屏,需要合上上盖,cross your fingers and count from 1 to 10,翻开上盖,bingo,密码框出现。此外,屏幕左上角苹果图标和应用的名称这两栏有点模糊,有时会看见条纹,可能就是上述帖子里说的part corruptio吧。猜测原因或者是iokit和framebuffer的原因,或者是ig-platform-id没有最优,前者可能性更大。