手上这台 Surface Go 买来也有一年多了,作为微软家的产品,它和 Windows 集成度自然是很高的。因此一直很好奇在上面安装 Linux 发行版是什么体验。但考虑到可能存在的兼容性问题,一直没有尝试。
碰巧最近更新到 Windows10 2004,遭遇各种 bug 。又在 office 365 上遭遇了一波 bug,无比怀念在实体机上运行 Linux 发行版的畅快。于是下载了 openSUSE Tumbleweed 20200919 镜像进行安装。
注意:本文适用于保留 Windows 的情况下的安装,如果移除 Windows 系统,情况可能会有所不同。此外,请务必确认 Windows 系统分区 Bitlocker 恢复密钥可以获取。(参考)
安装
安装过程还算顺利,和在其他电脑上没有什么区别。
一些教程指出需要禁用 Secure Boot,就我的体验来看即使不禁用也可以顺利安装。
引导
安装后的引导是第一个坑。
不知道微软采用了什么机制,启动后总是会引导到 Windows,连 grub 的影子都没有见到。在 Surface UEFI 中也无法调整相关顺序。
一个解决方案是使用安装镜像自带的引导 Linux 功能引导到安装后的系统,然后使用 efibootmgr
调整引导顺序:
# efibootmgr
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0000,2001,0002,0001,0003
Boot0000* Windows Boot Manager
Boot0001* opensuse-secureboot
Boot0003* openSUSE
Boot2001* EFI USB Device
Boot2002* EFI Network
其中的 BootOrder: 指定了启动顺序
。我希望如果有插入 usb 可引导设备,则从外部设备引导,否则引导到 openSUSE 。因此我把 EFI USB Device 放在首位,opensuse-secureboot
放在第二位,其余项放后面。使用以下命令调整(不同设备对应编号可能不同):
# efibootmgr -o 2001,0001,0000,2002,0003
然后打开 Yast-引导加载器,保存配置即可。(熟悉的话也可使用 grub-mkconfig)
重启后就可以进入 grub 了。
输入 Bitlocker 恢复密钥
此时如果引导到 WIndows,会提示输入 Bitlocker 恢复密钥,一般系统盘的密钥在 Microsoft 账户上会有备份。输入后即可进入 Windows 。
兼容性问题
Wi-Fi 和蓝牙
进入系统后首先发现的兼容性问题是网卡不工作。 Surface Go 使用 QCA6174a 提供 Wi-Fi 和蓝牙,该硬件驱动按理说应该已经在内核中了,但是似乎存在 bug 。
这里提到的方法,使用第三方维护的文件,无效。
这里的这个方法十分可行,不过需要依赖 Windows 。在 openSUSE 上操作略有不同:
首先将 Windows 以下路径的文件复制一份到 openSUSE 中:
C:\WINDOWS\system32\drivers\eeprom_ar6320_3p0_TX8_clpc.bin
然后将这个文件复制到/lib/firmware/ath10k/QCA6714/hw3.0/
中(似乎不需要复制到 hw2.0
),分别命名为 board.bin
和 board-2.bin
。
重启后 Wi-Fi 和蓝牙都能正常工作了。
相机(暂无解决方案)
目前相机无法使用,似乎也没有可用驱动,并且可能很难解决。
Windows 无法关机(暂无解决方案)
另一个比较坑的地方是安装后 Windows 无法正常关机。
一开始我没有关闭快速启动,使用开始菜单关机后行为如同注销,系统会跳转到登录界面,不能正常关机。
关闭快速启动后,使用开始菜单关机后系统卡在关机界面,必须长按电源键强制关机。
暂时没有找到解决方案。