Thinkpad T440p安装Linux的种种问题(by quqi99)
作者:张华 发表于:2014-05-08
版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
(http://blog.csdn.net/quqi99 )
Thinkpad T440p里使用了一些最新的硬件,这些硬件厂商对Linux高度不兼容, 以下是安装ubuntu 14.04与win8双系统时遇到的一些问题。
1, 要在BIOS(F1键)里disable掉UEFI Security Boot特性。
UEFI是下一代的BIOS,它内操置了一些操作系统的公钥,操作系统要用私钥签名,UEFI硬件用公钥检測操作系统的完整性,可信才载入系统。
本来是一个非常好的技术,可是被微软给滥用了。微软先强制将它自己的公钥加到UEFI DB中,然后再要求厂商预安装Win8之后强制厂商将UEFI Security Boot特性打开,这样就无法安装其他没有公钥的操作系统了,然后强制其他厂商向微软申请公钥,也不同意用户自己定义公钥文件。对于一些支持win8的移动硬件,微软甚至都强制不提供disable UEFI Security Boot的开关界面。
2, Thinkpad T440p使用了Realtek公司的rtl8192ee 10ec:818b网卡,
root@laptop:/home/hua# lspci -nn |grep Wireless
04:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8192EE PCIe Wireless Network Adapter [10ec:818b]
Realtek公司却没有提供对应的Linux驱动(附录一是一个极不稳定的驱动,基本没法用),也就是眼下:
有固件:/lib/firmware/rtlwifi/rtl8192eefw.bin
但无驱动:/lib/modules/3.13.0-24-generic/kernel/drivers/net/wireless/rtlwifi/rtl8192ee/rtl8192ee.ko
Realtec公司的rtl8192ee驱动将出如今linux 3.16版本号的内核里,3.16内核眼下还没有出,实在没办法解决,仅仅好先又买了个TL-WN725N USB无线网卡对付着用。
3, Thinkpad T440p除了主板里的集成显卡以外,另一个nvidia的显卡,默认使用的是开源的bumblebee驱动,我遇到的会造成这两种问题:
一是比如运行lspci命令之后都会造成全部的usb设备都无法用,如usb网卡,如usb数标。
二是因为acpi call失败造成无法正常关机,且每次造成磁盘数据损坏导致在开机时须要修复
三是合上电脑再打开桌面消失
四是发热厉害
五是不安装它可能启动ubuntu不成功,须要在grub中暂时将quiet splash改成nomodeset就可以,将nvidea驱动安装后就不须要了。
网上有人遇到了和我一样的问题,见:https://github.com/Bumblebee-Project/bbswitch/issues/78,但它的办法是在仍然用bumblebee驱动的前提下寻求解决(见附录二),我是直接安装nvidia linux驱动(值得一提的是,nvidia也是一个起初对linux极不友好的一家公司,linux之父在公开场合还以前骂地这家公司,见:http://www.ithome.com/html/it/19249.htm,可是如今竟然有nvidia linux驱动了,赞一个)。
sudo apt-get purge bumblebee*
sudo apt-get purge libvdpau-va-gl1
sudo apt-get install nvidia-319 nvidia-settings-319 nvidia-prime
附录一,眼下极不稳定的一个rtl8192ee linux驱动
參考:http://ubuntuforums.org/showthread.php?t=2198221
wget http://netbook-remix.archive.canonical.com/updates/pool/public/o/oem-wireless-rtl-92ce-92se-92de-8723ae-88ee-8723be-92ee-dkms/oem-wireless-rtl-92ce-92se-92de-8723ae-88ee-8723be-92ee-dkms_0017.1016.2013~sutton1.tar.gz
sudo modprobe rtl8192ee
sudo modprobe -rv rtl8192ee
sudo modprobe -v rtl8192ee swenc=1 fwlps=0 ips=0
附录二,仍使用开源的nvidia驱动nouveau的前提下解决acpi问题
git clone https://github.com/mkottman/acpi_call
cd acpi_call
make
sudo cp acpi_call.ko /lib/modules/`uname -r`/kernel/drivers/acpi
sudo depmod -a
sudo modprobe acpi_call
Create a script with the following in it (e.g. at /usr/local/bin/disable_nvidia.sh, remember chmod +x it):
#!/bin/sh
echo "\_SB.PCI0.PEG.VID._DSM {0xF8,0xD8,0x86,0xA4,0xDA,0x0B,0x1B,0x47,0x60,0x42,0xA6,0xB5,0xBE,0xE0} 0x100 0x1A {0x1,0x0,0x0,0x3}" >/proc/acpi/call
echo "\_SB.PCI0.PEG.VID.GPOF" >/proc/acpi/call
exit 0
Call the script from /etc/rc.local
Add rdblacklist=nouveau i965.modeset=1 nouveau.modeset to the GRUB_CMDLINE_LINUX_DEFAULT flags in /etc/default/grub, also for full KVM support (e.g. better brightness control etc.) I've found adding acpi_osi=\"!Windows 2012\" helps too.
run sudo update-grub