拾豆新闻
  • 文章列表
  • 联系我

文章列表

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
October 24, 2017

Windows上编译vim文件导航跳转插件command-t

用Bundle在Windows平台上配置成功了以后,绝大多数插件都已经可以使用,但是唯独强大的文件导航Command-T因为Ruby开发的插件,需要手动编译。

官方文档写的安装编译过程代码大概是这样的,我省去了使用bundle的安装过程:

$ cd ~/vim\bundle\command-t\ruby\command-t\ext\command-t>
$ ruby extconf.rb
$ make

要完成这些肯定得装ruby和make,网上的绝大多数答案也都已经过期,说的是vim7.4左右的版本,而现在已经是vim 8.0。于是只好自己探索。

windows的ruby是一个特殊的安装包,和Ruby的官网都分开,网址是RubyInstaller for windows。

可供下载的版本从2.0.0-p648到2.4.2-2版本。

我从高版本开始尝试,安装2.4.2-2,安装成功并设置好windows环境变量,开始编译。结果发现报错 You have to install development tools first.. 于是我在官网发现了DEVELOPMENT KIT可以下载,但是居然只支持(Ruby 2.0 到 2.3),只好重新安装了Ruby 2.3, 并且按照官网development tools。

假设Ruby 安装到 C:\Ruby22-x64, 配置PATH环境变量。然后将Development tools 就解压到 C:\Ruby22-x64\DevKit, 然后进入该目录执行

$ ruby dk.rb init

成功后再执行

$ ruby dk.rb install

接着进入~/vim\bundle\command-t\ruby\command-t\ext\command-t>文件夹,执行ruby extconf.rb命令,发现ruby执行成功了,用choco安装make并执行make一切都顺利。 但是进入vim一按command-t的快捷键报错,报错内容是:

command-t.vim could not load the C extension
Please see INSTALLATION and TROUBLE-SHOOTING in the help
Vim Ruby version: 2.2.6
Expected version: 2.3.3

也就是vim内置的ruby版本和这个版本不匹配,看来我确实遗漏了vim内置版本的问题。于是继续降级到Ruby 2.2, 结果居然还是报错。报错内容依旧是You have to install development tools first. 然而我明明已经安装了development tools.

October 22, 2017

windows的包管理Chocolate和vim.Vundle

Windows的开发环境一直都会让人比较头疼,一般解决方法有用Cygwin等模拟Linux的环境,Windows 10又自带了Ubuntu On Windows 10的环境。但是都或多或少有点问题,例如Cygwin的文件目录和windows分离,Ubuntu On Windows 10不能用Nodejs,打开X应用比较麻烦,只能用终端等。

经过很多尝试,我认为最友好的环境还是windows原生的环境,只是你需要偶尔告别命令行搜索某些应用需要的依赖,依次安装,这样其实绝大多数的开发环境都是可以部署的。不过还是有工具可以帮助我们,例如Windows其实也有一个类似apt-get或者Homebrew的包管理工具,叫做Chocolate.

安装Chocolate只要在Powershell里写这行代码即可:

Set-ExecutionPolicy Bypass; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

安装包的方法是choco install <package_name> 但是这个命令必须用admin权限的powershell来执行。于是想是不是有个windows的sudo,结果一查还真的有,而且可以用chocolate安装。于是admin执行powershell并运行了choco install sudo就安装好了。以后只要在普通用户的powershell执行sudo choco install <package_name>即可了。

我用choco安装了git, vim, python,curl,wget等工具,安装后powershell可以执行不少的类似linux的命令了。 但vim是裸奔状态,如果我直接把以前配置的.vimrc文件拿过来,显然用不来,甚至连Vundle包管理都用不来。Vundle的官方文档有windows上配置的方法就是把:

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

改成

set rtp+=$HOME/.vim/bundle/Vundle.vim/
call vundle#begin('$HOME/.vim/bundle/')

然后再执行vim +BundleInstall +qall就好了。

  • ««
  • «
  • 3
  • 4
  • 5
  • 6
  • 7
  • »
  • »»
© 拾豆新闻 2025