Surface Pro 3 安装Ubuntu 18.04 体验

最近把自己的surfacepro3全新安装了Ubuntu 18.04(删除了windows),记录一下


2019-08-02更新:

Surface Laptop系列默认安装后不支持自带键盘和触摸板,所以建议不要直接使用原版iso,使用下面github中的kernal进行安装!


2019-07-01更新:

在较长时间体验之后博主认为surface设备使用linux的体验不是特别好,特别是一些设备驱动的问题,以及主要卖点触控笔和触摸屏的缺陷。所以这里不建议在surface设备上使用linux,所以我已经把surface上的linux进行了卸载,然后主要使用移动硬盘中的linux系统在surface上运行,方便灵活。(安装方法见博客中专门的博文 https://blog.heguangyu.net/%e5%9c%a8%e7%a7%bb%e5%8a%a8%e7%a1%ac%e7%9b%98%e4%b8%8a%e5%ae%89%e8%a3%85ubuntu18-04%ef%bc%88%e5%be%85%e7%bc%96%e8%be%91%ef%bc%89/ )

另外博主特别推荐github上的大佬制作的专门用于surface设备的kernal,

https://github.com/jakeday/linux-surface

可以解决很多surface设备的适配问题,如果使用此kernal,切忌安装tlp相关电源优化软件


1.首先从Ubuntu官网下载iso

2.制作USB启动盘

3.按照官网提供的教程进行安装,注意在这部不要选择自动安装,选择自行分区安装

分区安装的注意事项:

a. 一定要使用专门的swap分区(后面在设置休眠和唤醒时必要用),分区大小根据本身设备的内存大小决定,一般取1至1.5倍

b. 推荐将home,boot等分区按需分开,以备后面折腾错了重装不会丢失重要文件

4. 安装系统,完全安装最小安装都可以,根据自己的需要,我选择的是最小安装,如果网络条件好可选择下载更新,如果不好可以安装完毕后再进行语言包等更新

5. 安装完毕后重启

6. 进入系统后会有一些更新和配置过程,待所有进程都完成后,进行一些基本的配置:

a. 安装linux电源配置程序,这个有助于提高笔记本的续航(使用surface专用内核时请勿安装!!)

sudo apt install tlp tlp-rdw
sudo tlp start

默认安装好的配置即可,不需要再作额外调整(大牛无视此条)

b. 安装gnome 优化程序,这个可以丰富ubuntu的桌面配置

sudo apt install gnome-tweak-tool

c.安装pm包,后面测试休眠用

sudo apt install pm-utils

8. 配置休眠

surface pro系列作为2合1设备,有很多场合还是需要休眠这个模式的,方便人们能在便携环境下快速恢复工作状态,同时保证续航。ubuntu系统默认没有休眠选项,本身只有挂起这个类似于windows中睡眠的功能,在该状态下系统实际上仍处在唤醒状态,实测掉电非常厉害,所以非常有必要在surface上启动休眠

a. 经过我的测试,默认安装完成后,surface就可以通过终端代码进入休眠状态

sudo pm-hibernate
#或
sudo systemctl hibernate

但是进入休眠状态,再次唤醒时,会出现全新启动,所有休眠之前的任务会被终止,即系统并没有从swap分区启动,因此我们要进一步调整

b. 首先找到swap分区的uuid:

grep swap /etc/fstab

复制其中UUID=XXX

(外国论坛中有类似现象的解决方案还包含使用/dev/sdx的,但是我实测在surface上没用,不知道原因

c. 修改grub文件

sudoedit /etc/default/grub

将该条的引号中

GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash”

添加(保留原有的)

resume=UUID=XXX(之前复制的)

保存退出,然后更新gurb使其生效

sudo update-grub

d. 重启电脑,此时已经可以正常休眠了,但是会出现另一个问题,就是在唤醒后wifi会失灵,这应该是一个bug,我们需要在休眠前先将网卡驱动停止加载,然后在唤醒后再加载回来,所以我们需要这样一个脚本来进行休眠(不要使用系统自带的休眠,会让wifi失灵,同时在唤醒后由于网卡失灵,会导致无法正常关机和重启,bug真多)这个脚本大牛也可以写进休眠和唤醒的系统进程去,我没有保存,之后找到了会再补充上来。脚本:

# remove buggy modules
modprobe -r mwifiex_pcie &&
# hibernate
echo disk > /sys/power/state
# reinsert
modprobe mwifiex_pcie

其中mwifiex_pcie是surface pro3的网卡驱动文件,可以由下面的代码获得

lspci -knn | grep Net -A2

将脚本保存为hibernate,复制到/bin文件夹中,赋予可执行权限

chmod +x hibernate

e. 每次需要休眠时,打开终端输入(肯定有更方便的办法的)

sudo hibernate

即可休眠,在唤醒后,wifi蓝牙等依旧工作正常

f. 经过一段时间的测试之后,我发现在唤醒过后,虽然wifi正常,但是会出现使用一段时间之后失常的现象,所以还需要:

sudo apt-get install bcmwl-kernel-source

本文参考:

https://askubuntu.com/questions/768136/how-can-i-hibernate-on-ubuntu-16-04/821122

https://askubuntu.com/questions/761180/wifi-doesnt-work-after-suspend-after-16-04-upgrade

感谢原作者

发表回复