December 4, 2017
ArchLinux休眠后唤醒,wifi和蓝牙无法正常使用的解决方法
Manjaro Linux
从17.02
版本开始匹配了Surface Pro 3, 这里必须非常感谢下Manjaro Team的工作,我现在可以再次在Surface上用畅快的用Linux了。
具体可以看reddit上的这篇文章: https://cd-rw.org/t/running-linux-on-the-surface-pro-3/175/37。
我实际安装的版本是17.1pre3
,不管是蓝牙,触摸板,WIFI,touchpad,音量键,甚至触摸屏都可以正常使用,甚至都不用升级内核。
唯一的问题是启用休眠以后,wifi和蓝牙功能失灵了,即使通过重启NetworkManager.service
也无法解决,因此基本上就是硬件驱动的问题,网上关于其他一些笔记本在休眠后无法解决的问题基本上就是用lsmod查到和wifi相关的模块,然后重新加载的方法,但是没有和surface pro有关的内容。
找了几篇stackoverflow文章做了多次尝试,然后通过lsmod | grep wifi
和lsmod | grep bluetooth
查出来的模块,依次尝试,终于找到了正确的模块。
和wifi相关的模块是mwifiex_pcie
, 和蓝牙相关的模块是btusb
。
因此要做的操作就是rmmod
和modprobe
,休眠后执行下面的命令后,wifi和蓝牙就可以正常工作了。
sudo rmmod -v btusb
sudo rmbanbenmod -v mwifiex_pcie
sudo modprobe -v btusb
sudo modprobe -v mwifiex_pcie
但是这样就是每次都得再休眠后执行这些命令好像也略麻烦,最后看到又休眠后自动执行脚本的方法,pm
和systemctl
的休眠脚本位置不同,我对pm
没印象,觉得arch的休眠几乎肯定是systemctl
的,于是直接尝试了systemctl
,systemctl
的脚本位置在/usr/lib/systemd/system-sleep
,这里的脚本会在sleep或者休眠时被调用。
我的脚本/usr/lib/systemd/system-sleep/wakeup_suspend_dev.sh
的内容是:
#!/bin/bash
case $1 in
pre)
rmmod btusb
rmmod mwifiex_pcie
;;
post)
modprobe btusb
modprobe mwifiex_pcie
;;
esac
pre
是在休眠之前执行rmmod
的操作,post是在休眠之后执行modprobe
的操作。需要注意的是必须把这个脚本加可执行权限:
sudo chmod +x wakeup_suspend_dev.sh
January 5, 2016
ArchLinux将nvidia driver替换成开源的nouveau解决显卡驱动问题
昨天还装完arch兴高采烈,今天就差点放弃整个系统,罪魁祸首就是当年被linus喷了的nvidia.
Archlinux装了使用nvidia驱动,一开始发现根本就没有加载,装了和没装没啥区别,但是跑的好好的阿跑的好好的,结果不小心手贱点了nvidia-xconfig
的应用,莫名其妙的起不来了。(这个原因我想了半天才想出来,不然我实在是无力吐槽他妈跑了一天多好好的什么也没干突然就起步来的情况,一度怀疑是显卡硬件坏了)
于是抢救三个多小时,/var/log/xorg.0.log
里的报错也莫名其妙,比如:
not detect device nvidia, no screen found.
简直是日到狗。于是想着解决办法应该是彻底不要装nvidia的驱动, 用intel的集成显卡,照例来说应该也ok阿,于是直接删掉驱动:
pacman -R nvidia nvidia-utils
然后reboot, 没想到发生的事情更加奇葩了,连命令行就出不来了,直接黑屏了我草。
心里十万个草尼马,还好安装过arch的人毕竟还是知道有个arch-chroot, 放入安装介质(我的是u盘),重启, mount各种好盘:
mount /dev/sda2 mnt
arch-chroot /mnt /bin/bash
然后咋办呢,突然在arch的官方教程里出现了一个词: nouveau(还好我还有台电脑阿,这时候如果只有一台电脑要在手机上查资料的话。。。我tm会不会放弃linux直接装个windows都不知道,我就是对自己那么没信心阿)
nouveau是个什么呢,简单的解释就是个nvidia的开源驱动。。。虽然还不是对其了解,但是还是对开源两个字报有信心,而且也是死马当活马医了。。。于是:
pacman -S xf86-video-nouveau
据说还有什么3d的实验特性支持, (还可以pacman -S mesa mesa-libg1
, 额这好像和我目前十万火急的状态没啥关系)
然后咋办呢。。。nouveau已经装好了,nvidia也已经卸载了,这样就ok了么,好像还不行
lsmod | gerp nvidia
dmesg | grep nvidia
两个命令显示,nouveau还没有work,系统还是在用nvidia,继续查arch wiki 的 nouveau页,删除mod的方法是
modprobe -r nvidia
然后加入nouveau的mod:
modprobe nouveau
先就这样吧,从安装盘里推出来
umount -R /mnt
然后reboot,重启试试, 尝下startx还是不幸, 并且我们在dmesg | grep nouveau里看到了nouveau报错。。。额什么情况: