终于搞定了启动U盘,下面可以进行安装了。安装ArchLinux是必须要联网的,所以首先进行网络配置。
我的电脑是Thinkpad E440,使用arch 201406的iso进入后内核版本是3.14.4-1-ARCH,然后我发现我的无线和有线网卡都不能正常工作!
lspci -v
有线网卡:Ethernet controller: Realtek Semiconductor RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 10)
dmesg | grep r8169
灯不亮,默认的驱动是r8169,报错“can’t disable ASPM; OS doesn’t have ASPM control”
无线网卡:Network controller: Realtek Semiconductor Device b723
直接没有驱动可用,后来才知道这无线网卡的驱动是rtl8723be,而3.14的kernel里面还没有包含这个驱动。
iwconfig —-> no wireless extensions
ip link —-> 只有两个接口,lo和enp4s0
Realtek RTL8723BE PCIe Wireless Network Adapter ARCH_201409 驱动可用了
1、查看Arch wiki和google了N次,应该手动加载驱动,而r8169不能正常工作则用r8168替代。
驱动的加载方式根据Makefile、install.h、PKGBUILD的文件的内容就知道大概怎么做了。
这位博主最近的文章“Fedora 20 的 r8168 与 rtl8723be 驱动”几乎与我的问题一样,直接下载来用无效。去arch官方repository找编译好的驱动,也不行。问题在于内核版本不一致,报错“disagrees about version of symbol module_layout”。所以只能在虚拟机中安装一个3.14.4-1-ARCH内核的环境,从以上源文件编译再安装了。
2、VMware使用UEFI启动,需要创建一个win8 64的虚拟机,然后修改vmx文件,加入一行“firmware=“efi””就可以了。但是创建的时候选择linux是不行的。
让虚拟机从U盘启动,按着教程安装完毕(耗时操作!),结果内核变成3.15了!原来arch的ISO只是一个启动环境,安装的基础系统都是从网络下载的,而arch的内核已经滚动升级到3.15版本了。没办法只能想办法让内核降级了!
在arch wiki的downgrade package里面找到了相关方法,但是我没有编译好的linux-3.14.4.内核二进制包,在网上怎么找都找不到!最后终于在ARM找到了——这个地方ARM不是CPU,而是Arch Rollback Machine,感谢做着东西的家伙。下载文件,执行命令,成功降级。
pacman -U linux-3.14.4xxx.pkg.tar.xz linux-headers-3.14xxx.pkg.tar.xz
然后就是编译。因为U盘作为启动的iso disk,是read-only的,所以拷贝到其他地方编译,再拷回去就可以了(…)。使用命令行的ftp命令与宿主机传递文件,还是很方便的。还有很多地方要用到vi命令,不记得就马上查一下。
3、安装rtl8723be无线网卡驱动(下载:rtl8723be-for_3.14.4-1-ARCH.zip),运行wifi-menu后就可以连接上无线网络了。
但是r8168驱动还是不能用!试了好几个AUR,以及官方的dependencies linux>=3.15 & linux<3.16的package也拿来编译,试试都不行。其实他们的源码都是一样的,不知道这些个AUR有什么不同。
最后经过不懈的尝试和google,终于搞定。
ethtool -s enp4s0 autoneg off
dhclient enp4s0
我在arch论坛的跟帖:https://bbs.archlinux.org/viewtopic.php?id=176413&p;=2
最后我发现r8169的问题在ubuntu中也存在,只要执行第一条命令就可以了。
在驱动这里的折腾耗费了我大量时间,这也是linux不那么适用于大众的一个原因吧。