Surface Go 2 安装 Ubuntu 20.04 双系统与驱动配置完全指南
2026/9/16 6:31:13 网站建设 项目流程

如果你手头刚好有一台 Surface Go 2,又不想让它永远活成一台 Windows 记事本,这篇文章就是为你准备的。我当初入这台机器,就是想找一个能塞进通勤包、能写代码、能跑 ROS / 嵌入式工具链的小本子;后来发现真正让它脱胎换骨的,反而是 Ubuntu 20.04 双系统安装和驱动配置完成后那几天。Surface Go 2 本身硬件不大,但照顾到 Type Cover、触摸屏、摄像头、音频、WiFi 这些部件,光是驱动就得比普通笔记本多花一倍的耐心。这篇文章不打算讲虚的,我直接把从 U 盘制作、Windows 分区压缩、UEFI 设置、Ubuntu 手动分区、驱动修复到日常开发环境搭建的完整过程写出来,适合手里有 Surface Go 2、愿意折腾 Linux 的朋友参考,也适合想在小平板/二合一本上装 Ubuntu 的人提前避坑。

网上关于 Ubuntu 双系统安装的教程很多,但放在 Surface Go 2 上会多出几道坎:Type Cover 在官方内核下不一定好用、触摸屏和触控笔需要额外的用户态服务、WiFi 掉线可能不是路由器而是固件问题、合盖睡眠后电量掉得厉害。这些如果不提前知道,很容易在"装完系统却连不上网"那一步就放弃。下面按我实际操作的顺序来,尽量做到每一步都能照抄。

1. 为什么是 Surface Go 2,又为什么要 Ubuntu 20.04

1.1 这台机器的硬件底子

Surface Go 2 有两条产品线:低配是 Pentium Gold 4425Y,高配是 Core m3-8100Y,两者都是无风扇设计,配上最大 8GB 内存。做日常开发、写文档、跑虚拟机、编译小型项目都够用,但你得接受它不是一台性能猛兽。

存储方面,64GB 版本用的是 eMMC,速度比 NVMe SSD 慢不少;128GB/256GB 版本则普遍是 SSD。装 Linux 时磁盘设备名会有区别:eMMC 大概率是/dev/mmcblk0,SSD 大概率是/dev/nvme0n1。这一点在安装时非常重要,后面分区我会专门说。

显卡是 Intel UHD Graphics 615,不是 NVIDIA。很多人一搜索"Ubuntu 20.04 驱动配置"就跑去装 NVIDIA 驱动,其实在 Surface Go 2 上完全没必要,Intel 核显用内核自带的 i915 驱动就很稳。只要不是跑大型 3D 或深度学习训练,这台机器完全能当一台安静的小开发本用。

1.2 为什么我还是选 Ubuntu 20.04

现在 22.04、24.04 都已经很成熟了,但我觉得 20.04 对 Surface Go 2 来说仍然是一个很合适的基线。首先是 ROS Noetic,它官方支持的就是 Ubuntu 20.04,很多嵌入式开发板和工业项目文档里给的例子也都是基于 20.04。其次是稳定性,20.04 是 LTS,虽然内核版本偏老,但我们可以通过安装 linux-surface 社区内核来补齐硬件支持,这个后面会详细讲。

另外,20.04.6 是这个系列的最后一个点版本,相对 20.04 刚发布时的版本,固件和软件包已经修得非常稳。如果你只想装一个"开机就能干活"的系统,20.04.6 比 20.04 刚出那会少很多麻烦。

当然,选 20.04 也有代价。老内核默认对 Surface Go 2 的触摸屏、音频、传感器支持不算完整,需要再花点时间补驱动。我的建议是:把 20.04 当作稳定底座,安装完成后立刻切到 linux-surface 内核,这样既保留 Ubuntu 20.04 的生态,又获得接近 Windows 的硬件体验。

1.3 现实预期管理:哪些能用,哪些需要折腾

在动手之前,我先给你一张基于社区和我个人实测的支持情况表,避免装到一半心里落差太大。

硬件模块官方 20.04 内核linux-surface 内核
Type Cover 键盘/触控板基本能用,但触控板手势可能不全支持完整,键鼠体验接近 Windows
触摸屏/触控笔可能出现点击不准或无法识别笔压iptsd + libwacom 组合,比较完善
WiFi(QCA6174)大概率要手动装 linux-firmware同样要装 firmware,但更稳
音频装了 sof-firmware 后大概率能出声相对更不容易发生无声
摄像头部分 UVC 摄像头可用,个别要碰运气支持更好,但仍取决于固件版本
睡眠/合盖耗电明显,偶尔会睡死有改善,但别把它当 S3 待机用

这不是故意吓唬人,而是二合一设备在 Linux 下的通病。Surface Go 2 的触摸屏和触控笔依赖 Intel Precise Touch 相关补丁,官方内核没有完全合入,社区内核把这些补丁整合在一起,所以"装完 Ubuntu 后换内核"不是可选项,而是必选项。

2. 装系统前,请先完成这四件事

2.1 备份、BitLocker 和快速启动

很多人上来就直接做启动盘,结果分区时发现 C 盘能压缩的空间非常小,或者装完 Ubuntu 后 Windows 需要 BitLocker 恢复密钥。原因就是 Surface 设备默认开了设备加密,也就是 BitLocker。

如果你打算以后还继续用 Windows,先备份重要文件,然后以管理员身份打开命令提示符或 PowerShell,执行:

manage-bde -protectors -get C: manage-bde -off C:

manage-bde -off C:的意思是开始解密 C 盘。执行完别急着关机,等系统后台把解密跑完。可以通过下面的命令确认加密状态:

manage-bde -status C:

看到加密状态变成"已解密"再继续。如果你实在不想关,也可以只导出恢复密钥,但后续一旦动到 UEFI 的启动项或内核签名,Windows 很可能弹出恢复界面,没有密钥会很麻烦。

接下来关闭 Windows 的快速启动。快速启动本质上是把关机变成休眠,会导致双系统切换时磁盘状态不一致,也容易让 Ubuntu 挂载 NTFS 分区时出现风险。在管理员命令行里执行:

powercfg /h off

这一步会同时关闭休眠文件和快速启动。我又在一些机器上遇到过关闭后 C 盘剩余空间突然变大了,说明页面文件法和休眠文件法确实占了不少空间。

2.2 用磁盘管理腾出 Ubuntu 的空间

Windows 装双系统最常用的方式是用磁盘管理把 C 盘压缩出一块未分配空间。按Win + X选择"磁盘管理",右键 C 盘,选"压缩卷",输入要压缩出的空间大小。

压缩多少取决于你的存储版本和用途。我的建议是:

Surface Go 2 存储建议分配给 Ubuntu适合用途
64GB eMMC30GB 左右命令行开发、轻量代码编辑
128GB SSD50GB 左右桌面环境 + ROS/嵌入式工具链
256GB SSD80GB 以上Docker、虚拟机、大工程编译

如果压缩时发现可压缩空间远小于预期,通常是因为系统文件、休眠文件或页面文件占了位置。上面已经把休眠关了,如果再不行,可以先把页面文件临时改成"无",重启后再压缩,压缩完再把页面文件调回来。这个过程不复杂,但一定要有耐心。

压缩完成后,你会看到 C 盘后面多出一块"未分配"区域。这就是 Ubuntu 的安身之地。后面安装时不要在安装器里选"自动安装",我们要手动分区,原因稍后解释。

2.3 下载镜像和制作启动 U 盘

Ubuntu 20.04 的镜像下载地址很好找,官方 releases 页面有 20.04.6 的 ISO。如果官方下载速度不理想,用国内高校镜像站也可以,比如清华镜像源,路径里选择20.04.6目录下的ubuntu-20.04.6-desktop-amd64.iso,大概 2.5GB 左右。

制作启动盘我用过 Rufus 和 balenaEtcher,两者都能成功。Rufus 在写入时可能会提示"将使用 DD 镜像模式写入",选 Yes 就好。如果 U 盘无法引导,重写一次,换 DD 模式,往往能解决。

有一点要提前说:安装过程中 Type Cover 很可能会没反应,所以最好准备一个 USB Hub 和一个 USB 有线键盘。如果连鼠标都没有,也可以用 Type Cover 碰碰运气,但别把希望全押在它身上。

2.4 Surface UEFI 设置:关 Secure Boot、开 USB 启动

Surface Go 2 进入 UEFI 有几种方式:在 Windows 下执行shutdown /r /fw /t 0,或者关机后按住"音量加号"不放,再按一下电源键。进入 UEFI 后,重点改两处:

  • Security -> Secure Boot -> 设为 Disabled
  • Boot configuration -> 确保 USB 启动是开启状态

关掉 Secure Boot 是为了避免第三方内核签名问题。linux-surface 内核虽然也提供 Secure Boot 的 MOK 方案,但新手在第一次安装时容易卡在 MOK 管理界面,不如先关掉。后面如果对安全有要求,再重新开都不迟。

另外,不要去动 TPM 设置。Surface 的 UEFI 里有 TPM 相关选项,我们不需要关它。关 Secure Boot 和 BitLocker 之后再动磁盘,Windows 不会因此崩溃。

3. 双系统安装实操:分区方案和引导修复

3.1 Live 环境确认磁盘信息

U 盘启动后,选择"试用 Ubuntu",先进入 Live 桌面。按Ctrl + Alt + T打开终端,执行:

lsblk -f

这个命令会显示所有磁盘和分区。重点看:

  • 有没有一个 fat32 格式、挂载点写着 EFI 的小分区(一般在 100MB 到 512MB 之间)。
  • 你的磁盘是/dev/nvme0n1还是/dev/mmcblk0
  • Windows 的 C 盘是哪个分区,不要搞错。

再执行:

lspci -nnk | grep -iA3 network

可以提前看一眼无线网卡型号和驱动状态。如果你的 WiFi 芯片是 Qualcomm Atheros QCA6174,那属于正常情况,后文会专门处理。

3.2 手动分区方案:极简且不容易翻车

进入安装界面后,在"安装类型"里选择"其他选项"。我强烈建议不要选"与 Windows 共存",因为安装器自动分区时可能把 /boot 分区搞得很小,或者在双系统引导上产生歧义。

手动分区的核心原则是:

  1. 找到已有的 EFI 分区,把它挂载为/boot/efi千万不要格式化
  2. 在 Windows 压缩出的空闲区域里,把剩余空间新建为 ext4,挂载到/
  3. 如果内存只有 4GB,建议再建一个 4GB swap 分区;如果内存 8GB 且不打算休眠,也可以跳过。

举一个 128GB SSD 的参考方案:

分区大小格式/类型挂载点
/dev/nvme0n1p1260MB(已有)EFI System Partition/boot/efi(不格式化)
/dev/nvme0n1p216MB(已有)Microsoft Reserved不用管
/dev/nvme0n1p3Windows 的 C 盘(已有)NTFS保持原样
空闲空间50GB 左右ext4/
空闲空间4GB(可选)swap[swap]

如果你的是 64GB eMMC 版本,可能看不到独立的 NVMe 分区,而是/dev/mmcblk0p1/dev/mmcblk0p2这样的命名。逻辑一样,关键是找到 fat32 的 EFI 分区,其他照做。

手动分区时,选择空闲空间,点"+",大小填给根分区的容量,类型选"主分区",用于"Ext4 日志文件系统",挂载点选"/"。swap 分区则在类型里选"交换空间"。最后一步要看清楚底部"安装启动引导器的设备"下拉框,选择整块磁盘,例如/dev/nvme0n1/dev/mmcblk0,而不是选某个分区。这样 GRUB 才能装到磁盘的 UEFI 引导路径上。

3.3 安装过程中容易卡住的几个点

第一个坑是 Type Cover 在安装界面里完全没反应。这种情况下只能靠外接 USB 键盘。如果外接键盘也没反应,检查 USB 口是否插在 Surface Connect 旁边那个 USB-C 口,或者换个 USB Hub。

第二个坑是安装器在检测到空闲分区时,默认创建的分区方案可能占用整个磁盘,导致 Windows 分区被覆盖。所以一定要在"其他选项"里手动选,确认根分区落在之前压缩出来的空闲空间上,而不是 Windows 的 C 盘。

第三个坑是如果你强行给 /boot 单独挂载一个小分区,后续 linux-surface 内核升级时容易因为 /boot 空间不足失败。我的建议是不单独分 /boot,而是让安装器把 /boot 放在 / 分区内部,省心很多。

3.4 首次重启、GRUB 引导和时间同步

安装完成后重启,如果一切顺利,应该能看到 GRUB 菜单。要是直接进了 Windows,不要慌,多半是 UEFI 把 Windows Boot Manager 排在了前面。重启时按住"音量加号"进 UEFI,在 Boot configuration 里把ubuntu调到第一项,或者找到 UEFI 启动菜单临时选择 Ubuntu。

进 Ubuntu 后,先打开终端更新引导:

sudo apt update sudo update-grub

GRUB 会自动探测到 Windows 并把它加进菜单。如果探测不到,可以安装os-prober再试:

sudo apt install os-prober sudo os-prober sudo update-grub

双系统最容易碰到的一个小问题是 Windows 和 Ubuntu 时间相差 8 小时。原因是 Windows 默认把 BIOS 时间当本地时间,Linux 默认当 UTC 时间。解决方法是让 Linux 使用本地时间:

sudo timedatectl set-local-rtc 1 --adjust-system-clock

执行完再进 Windows 看时间就正常了。

4. 驱动配置:无线、触控、音频、摄像头一次说清

4.1 先换内核:linux-surface 才是核心中的核心

很多人在装完 Ubuntu 后,发现 Type Cover 时好时坏、触摸屏完全没反应,就到处找 Surface 专用驱动。其实大部分问题的根源是内核不支持 Surface 硬件。社区维护的 linux-surface 内核把大量补丁都整合进去了,装完之后很多硬件问题会一次性解决。

在 Ubuntu 20.04 上,安装 linux-surface 内核可以走 PPA:

sudo apt install software-properties-common sudo add-apt-repository ppa:linux-surface/ppa sudo apt update sudo apt install linux-surface-secureboot-mok sudo apt install linux-image-surface linux-headers-surface iptsd libwacom-surface sudo update-grub sudo reboot

如果你关闭了 Secure Boot,重启时不会出现 MOK 管理界面。如果还留着 Secure Boot,重启后需要按提示选择"Enroll key from disk"完成密钥登记。

重启后执行:

uname -a

看到内核版本里带有-surface字样,就说明换成功了。之后 Type Cover 的触控板、触摸屏、触控笔、自动旋转等都会有明显改善。这也解释了为什么前面安装系统时不让你折腾单个驱动,因为顺序反了会做很多无用功。

4.2 WiFi 和蓝牙:QCA6174 的常见坑

Surface Go 2 的无线网卡通常是 Qualcomm Atheros QCA6174,需要ath10k驱动和对应固件。如果你刚装完 Ubuntu 发现无线图标都看不到,先检查硬件识别情况:

lspci -nnk | grep -iA3 network

输出里应该能看到 QCA6174,并显示"Kernel driver in use: ath10k_pci"。如果驱动没有加载,先安装固件包:

sudo apt update sudo apt install linux-firmware sudo reboot

如果驱动和固件都在,但 WiFi 信号弱、频繁断连,通常和电源管理有关。NetworkManager 默认可能会对无线网卡做省电,这对平板类设备尤其不友好。可以关掉:

sudo mkdir -p /etc/NetworkManager/conf.d sudo tee /etc/NetworkManager/conf.d/wifi-powersave.conf <<'EOF' [connection] wifi.powersave = 2 EOF sudo systemctl restart NetworkManager

wifi.powersave = 2表示禁用 Wi-Fi 省电,让网卡保持全速连接。在续航上会有一些代价,但稳定性比那一点电值钱得多。

蓝牙方面,QCA6174 的蓝牙通常是同一个芯片通过 USB 通道提供,一般装完 linux-firmware 就能用。验证蓝牙状态可以执行:

bluetoothctl power on scan on

如果蓝牙设备一直无法搜索到,先确认是不是被 rfkill 禁用了:

rfkill list

看到Soft blockedHard blocked就执行rfkill unblock bluetooth

4.3 触摸屏和触控笔:iptsd 和 libwacom-surface 的配合

Surface Go 2 的触摸屏不是通过最简单的 USB HID 协议直接工作,它需要 Intel Precise Touch 相关补丁。安装 linux-surface 内核时我们装上了iptsdlibwacom-surface,这两个包负责把触摸屏和触控笔事件转成标准的 Linux 输入设备。

装好后,先用xinput确认设备是不是被识别到了:

xinput list

正常时你会看到类似Surface Type CoverSurface Touchscreen这样的设备。如果看到触摸屏设备,但触控笔没有压感,可以检查 iptsd 服务:

journalctl --user -u iptsd -b

如果日志里有错误,最常见的是内核版本和 iptsd 版本不匹配。这时候回到 linux-surface PPA,把它升级到最新版本:

sudo apt update sudo apt upgrade sudo reboot

另外,GNOME 桌面默认对触控笔的压感支持还可以,但如果你用的是 KDE 或其它桌面,记得在系统设置里看一下 Wacom 设备是否被识别。libwacom-surface这个包有一层很重要的作用:它把 Surface 触控笔识别为符合 Wacom 协议的设备,很多绘制软件依赖这个识别结果。

4.4 音频:从无声到出声的三种排查

Surface Go 2 使用 Intel 平台的音频方案,在 Ubuntu 20.04 里很可能遇到"一个声卡都没显示"的情况。先执行:

aplay -l

如果没有输出设备,大概率是缺少 Sound Open Firmware。

sudo apt update sudo apt install sof-firmware alsa-ucm-conf sudo reboot

如果重启后仍然无声,问题可能出在内核选择音频 DSP 驱动的策略上。Intel 音频驱动有两个方向:传统 HDA 和 SOF。可以通过/etc/modprobe.d/下的文件强制指定:

sudo nano /etc/modprobe.d/soundfix.conf

写入:

options snd-intel-dspcfg dsp_driver=1

然后更新内核参数并重启:

sudo update-initramfs -u sudo reboot

dsp_driver=1代表传统 HDA 驱动,dsp_driver=3代表 SOF 驱动。不同固件版本下,Surface Go 2 可能需要试不同值。一般是先试 1,不行改 3。改完后用aplay -l再看看声卡是否出现。

还有个容易被忽略的点:Ubuntu 桌面默认音频输出设备可能没选中正确的声卡。打开音量设置,或安装pavucontrol

sudo apt install pavucontrol

在"输出设备"标签页里切换一下扬声器/耳机,看看声音是否出来。

4.5 摄像头、亮度与自动旋转

摄像头在 Surface Go 2 上相对佛系。先看设备是否被内核识别:

lsusb dmesg | grep -i uvc

如果有UVC Camera相关输出,就可以用cheese或浏览器直接测摄像头。要是完全没输出,先确认 Windows 内已经把 Surface 固件升级到最新,再去装 linux-surface 内核。有些摄像头固件需要由 Windows 侧的 Surface 驱动更新,Linux 本身无法主动升级固件。

亮度控制一般是 Intel 平台的标准背光接口,装完 linux-surface 内核后,FN 亮度快捷键大多可用。如果快捷键没反应,可以安装brightnessctl手动调:

sudo apt install brightnessctl brightnessctl set +10% brightnessctl set 50%

自动旋转依赖iio-sensor-proxy。安装它:

sudo apt install iio-sensor-proxy

然后在终端运行:

monitor-sensor

转动屏幕时应该能看到加速度传感器的输出。如果完全没输出,多半是内核缺少hid-sensor-hub相关补丁,这在 linux-surface 内核里已经包含。GNOME 桌面在识别到传感器后,会自动开启平板模式的屏幕旋转,不用额外安装太多东西。

5. 从"能开机"到"适合开发":内存、存储、电源与开发环境

5.1 开发环境速建:一条命令装齐基础工具

驱动稳定之后,这台机器才算真正变成开发本。先装最基础的工具链:

sudo apt update sudo apt install build-essential git curl wget vim htop cmake net-tools python3-pip

编辑器我用 VS Code 比较多,直接装 deb 包:

sudo snap install code --classic

如果你不想用 Snap 版本,也可以去微软官网下载.deb包,用sudo apt install ./code_*.deb安装。对于 64GB 用户,我建议能不用 Snap 就不用 Snap,因为 Snap 的运行库会额外占很多空间。

Docker 是不少开发场景的刚需。安装命令:

curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER

执行完后注销重新登录,当前用户就能直接执行docker命令了。

如果你的目标是 ROS Noetic,建议按官方文档操作,核心是添加 ROS 软件源,然后:

sudo apt install ros-noetic-desktop echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

Ubuntu 20.04 是 ROS Noetic 官方支持的版本,这也是我坚持不换 22.04 的另一个原因。

5.2 存储优化:64GB eMMC 用户如何活下来

64GB 版本装完 Ubuntu 20.04 桌面后,可用空间很容易只剩 20GB 左右。对轻量开发来说其实够用,但要注意几个占空间大户:

一个是journald日志。长时间运行后/var/log/journal可能吃好几 GB。可以设置日志上限:

sudo journalctl --vacuum-size=100M

想永久限制也行,编辑/etc/systemd/journald.conf,把SystemMaxUse改成 200M,然后重启systemd-journald

另一个是 Snap 的缓存和旧版本。snap list可以看到所有 Snap 包,如果确认不需要 Snap,可以严格一点:

sudo apt purge snapd

这会连带移除 Ubuntu 软件商店,也会让部分默认应用失效。对 64GB 用户而言,我的经验是:开发工具尽量用apt或者官方 tar 包,IDE 用 VS Code 的 deb 或者源码包,浏览器用 Firefox 的.tar.bz2或 deb 版本,保持系统干净。

5.3 电源与睡眠:别迷信 S3 深度睡眠

Surface Go 2 在 Windows 上用的是 Modern Standby,也就是 S0ix 待机,并不是传统笔记本的 S3 睡眠。Linux 里面对应的是s2idle

检查当前支持情况:

cat /sys/power/mem_sleep

看到s2idle是正常现象,不要看到deep不存在就觉得系统不完整。在 Surface 系列上强行加mem_sleep_default=deep参数,很可能导致合盖后直接睡死,按任何键都醒不过来,只能长按电源强制重启。

我建议的做法是:

  • 更新 linux-surface 内核后再谈睡眠,老内核的 s2idle 状态确实容易异常耗电。
  • 合盖前把 WiFi、蓝牙都停掉?不需要这么极端,但可以关闭后台编译任务。
  • 如果长时间不打算用,最好直接关机,而不是合盖待机。

电池信息可以通过upower查看:

upower -i /org/freedesktop/UPower/devices/battery_BAT0

Surface Go 2 的电池管理在 Linux 下可以用,但不要指望和 Windows 的电源策略完全一样。我是把它当作"不插电能用一下午的终端机"来用的,重度编译仍然要插电。

5.4 快照:折腾内核前最重要的自救手段

后面你肯定会遇到升级内核、调整 GRUB 参数、装某个驱动实验等情况。强烈建议在系统稳定之后先做个快照。

timeshift是 Ubuntu 下比较方便的系统快照工具:

sudo apt install timeshift sudo timeshift --create --comments "after install linux-surface" --tags D

如果你把根分区放在了 ext4 分区上,timeshift 可以生成 rsync 快照,占用不大,但是能在系统崩溃时把你拉回来。Surface Go 2 这类小众设备最怕的不是坏驱动,而是没有后悔药。

6. 一周实测踩坑记录:从引导丢失到内核升级翻车

6.1 排错表:遇到问题先按这个顺序查

症状可能原因处理办法
U 盘无法引导U 盘写入模式不对/接口兼容性用 Rufus 的 DD 模式重写,换另一个 USB 口
Type Cover 在安装时没反应官方内核缺少 Surface 键鼠补丁用外接 USB 键盘先完成安装,装完 linux-surface
系统开机黑屏内核参数或 GRUB 安装位置问题在 GRUB 菜单按 e 临时加nomodeset,进系统后修正
WiFi 搜不到或频繁掉线QCA6174 固件缺失/电源管理安装 linux-firmware,关掉 NetworkManager 省电
触摸屏能点但笔不流畅缺少 iptsd 或版本不匹配确认已安装 linux-surface 内核,升级 iptsd
完全没声音SOF 固件缺失或 DSP 驱动选择错误安装 sof-firmware,试 dsp_driver=1 或 3
合盖睡眠后电量狂掉Modern Standby 下设备没有真正休眠更新 linux-surface 内核,避免追加 deep 参数
Windows 更新后 GRUB 丢失Windows 更新覆盖了 UEFI 启动项进 UEFI 手动选 ubuntu,或使用 boot-repair
Windows 和 Ubuntu 时间差 8 小时RTC 时间基准不一致timedatectl set-local-rtc 1 --adjust-system-clock
摄像头黑屏固件未更新或 uvcvideo 未被触发回 Windows 更新 Surface 固件,再试 linux-surface 内核

这张表基本覆盖了我一个月内遇到的所有大问题。其中频率最高的是 WiFi 掉线和触摸屏不顺畅,两个都是驱动或固件问题,不是硬件毛病。

6.2 几个令我印象深刻的现场

第一次装完系统,我兴冲冲地准备联网,结果 WiFi 列表一片空白。lspci能看到 QCA6174,但dmesg | grep ath10k显示 firmware 加载失败。后来发现 20.04 版的 linux-firmware 包版本比较老,更新一遍就恢复了。所以如果你的情况和这个一样,别急着换网卡驱动,先更新固件。

还有一次我手贱在/etc/default/grub里加了mem_sleep_default=deep,想试试能不能让合盖睡眠更省电。结果合盖不到半小时,再打开屏幕全黑,按什么都没反应,最后只能长按电源键 20 秒强制重启。后来查了内核文档才知道 Surface Go 2 在 Linux 下默认只支持 s2idle,强行用 deep 就是自杀式配置。

最后再说一个被很多教程忽略的点:Windows 更新有可能会把 UEFI 启动顺序改回去,导致开机直接进 Windows。这不是 Surface Go 2 特有的问题,是双系统机器的通病。解决方式不是每次重装系统,而是进 UEFI 把ubuntu启动项调到第一项,或者在 Ubuntu 里执行sudo update-grub后重启。

6.3 我现在的使用习惯

折腾这一圈之后,我基本固定成下面这套流程:

  • Windows 保留 30GB,专门用于 Surface 固件升级和偶尔的文档处理。
  • Ubuntu 的根分区保留 50GB 以上,所有代码和项目放在里面。
  • 每次升级内核或系统大版本前,用 timeshift 做一个快照。
  • 不在 Ubuntu 里折腾 Big Sur/Hackintosh 那种高风险操作,Surface Go 2 不是拿来跑黑苹果的。

这台机器现在对我来说就是一台随时随地打开终端、跑 ROS 节点、写 Python/Shell、偶尔远程回台式机干重活的移动开发终端。它的性能上限不高,但足够轻、足够安静,配合 Ubuntu 20.04 的稳定和 linux-surface 内核的硬件支持,比刚买回来时那个只能开浏览器的 Windows 平板强太多了。

如果你想照着做,我的最后一条建议是:别一次性把所有优化都做完,先让我上面这些关键步骤跑通,用上两天,再根据自己实际需求去加东西。Surface 设备在 Linux 下的生态已经比以前成熟很多,但最稳妥的办法仍然是"小步快跑,随时回滚"。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询