Goodbye macOS: aisuneko 的 Debian 使用心得

Goodbye macOS: aisuneko 的 Debian 使用心得

写在前面

距离上次重装 macOS 已经过去了三年(那次是因为装 Ubuntu 双系统试图 fix 分区间互传文件的权限问题给整坏了), 逐渐发现整个系统变得越来越 cursed, 甚至时常五国, 便寻思着什么时候安排一下重装. 朋友先是建议我直接升 macOS Big Sur, 见我不愿意又百般劝说我直接换 GNU/Linux……. 经不住朋友软磨硬泡, 在朋友(长达数小时的)耐心指导下成功 fresh install Debian bullseye. 目前已使用一个月有余, 在这里简单写点心得体会吧.

安装

安装还算顺利(只是要注意一些引导相关的套路, 比如 EFI partition), 但中间遇到了一点状况:提示缺少网卡驱动 (这块只有 nonfree 驱动的网卡本身也相当 buggy, 下面会提到). 试过临时下下来放在另一块U盘上再加载, 但试了几次都没识别出来; 最后索性直接跳过了这一步, 后来才装的驱动.

使用体验

桌面环境不假思索选了 KDE.

重启, 进入系统, 发现所有界面元素都变得小的不行, 当然是因为这块Retina 屏; 调一下比例就还好.

KDE Plasma 的 UI 是真的好看啊呜呜, 之前用 GNOME 和 XFCE 的时候就想体验了

我的桌面, 并没怎么折腾桌面美化

怎么说呢…… 日常使用确实够了, 虽说没有 macOS 那么成熟的生态但现有的 FOSS alternative 也都不错. 之前命令行就用的不少, 所以用起来跟回家一样. 虽然某些地方还是要慢慢适应, 比如 Dolphin 的 Drag & Drop 会强制弹出下拉菜单(Move/Copy/Link), 但 KDE 总体上是高度可自定义的, 所以使用起来就好很多. 有一些地方的支持甚至还是意料之外的出色 - 比如 macOS 因为对 Plug & Play 支持不佳 (?) 所以与 Android 设备有线互传文件就用官方 Android File Transfer, 但放到 GNU/Linux下文件管理器就可以直接读取. 当然对我来说可能还是直接 adb pull最好用.

最直观的感受是轻量. 实测 plasmashell 内存占用一般只有200 - 300MB; 而 KDE 已经算 Heavy DE 了! 可以想象别的 DE 或者 WM 整体资源占用会有多么低. 我写这篇文章的时候整个系统的内存占用只有不到4GB (后台挂了 Firefox 和 Rhythmbox 等, 占用内存最多的单个进程还是Telegram Desktop), 而放在 macOS 下光是系统进程和 Aqua (macOS 的 DE) 就已经有4GB左右. 虽然同时执行两个(或以上) 的 resource hungry apps 还是会有明显卡顿(of course), 比如同时开 VM 和 Minecraft.

没错, 就是这么轻量

同时还注意到我这块 Retina 屏犹如重获新生 - 没错, 渲染效果目测完全不输 macOS (甚至还要好!), 感觉比 macOS 下还要更清晰一些.

Battery draining 其实跟macOS下的差不多, 没多大改善.

软件

转 GNU/Linux 之前最担心的就是软件 - 没错, 作为个人闲暇爱好的一部分, 我可以说重度依赖 Ps/Ai/FCPX 之类的 proprietary software. (还有 MS Office, 一直认为 LibreOffice 对 MS 格式的支持不好.) 虽然可以用 GIMP/Inkscape/kdenlive/LibreOffice 替代, 但还是担心这些 FOSS alternative 没有能够跟 proprietary 媲美的功能.

至于实际上手的体验嘛……

GIMP 感觉相比 Ps 有些地方不是很方便 (比如移动元素需要你指定是移动整个图层还是移动单个元素(而且这单个元素似乎还是靠色块识别的, 透明部分会直接忽略)), 其他地方…… 其实说实话, 相比 Ps 使用成本也高不了多少.

Inkscape 能打开 .ai 文件, 但似乎对图层的支持不好(图层和图层名直接乱了套), 其他就没测试了.

kdenlive 因为最近没有剪视频的需求, 所以也没多测试, 看上去使用逻辑有点像Pr就是. (听人说 kdenlive 本身不太行, 想要比较高大上的 effect 就去用 Blender, 但据说 Blender 上手门槛巨高)

LibreOffice 使用体验其实比我想象中的要好, 虽然没测试过用它编辑的文档与 MS Office 的兼容性.

整体感觉对我现在的 workflow 也没太大影响. 可能是因为暂时没需求

GIMP, Inkscape 和 LibreOffice

别的软件就好说的多, 但一个主要问题是更新 - Debian 作为 stable distribution, 稳定是稳定, 但软件源更新速度肯定比 Arch 等慢的多, 而我比较追求新软件.

Flatpak 就提供了一种选择. 比如我用的 Flatpak 版 Telegram Desktop, bullseye stable 源只提供到 2.6.1, 而 Flatpak 版和目前最新的 2.9.3 同步. Flatpak 沙盒化的特性也让其使用起来没有后顾之忧. 当然类似的还有 snap, 但一般不常用. (有一说一, Canonical 强推 snap 是导致我逐渐退坑 Ubuntu 的原因之一)

至于像 KDE Plasma这样的东西就…… Debian bullseye 默认只提供到 5.20.5, 5.21 有一堆看上去就很棒的新特性和 UI overhaul, 但目前只有 sid/experimental 源有…… 不想胡乱装包搞成 FrankenDebian, 只能暂时忍着了.

Flatpak 下不少应用都会出现中文显示异常的问题; 感谢这个 issue 提供的 workaround:

  1. 安装 Flatseal
  2. 在出现异常的应用的设置下找到 Filesystem -> Other files, 添加一行 xdg-config/fontconfig:ro

输入法

一般 GNU/Linux下中文输入法的 solution 就是 RIME. 当然我配 RIME + IBus 也是费了一点周折的, 和朋友一起研究了很久 ibus-daemon 和 kimpanel 才勉强让它在 KDE 下正常工作.

目前切换中英文输入法的方式还是很烦人, 有时快捷键无法正常切换 (例如在 Konsole 下), 只能拿鼠标自己去点 tray icon.

至于 RIME 的 config 就没动过, 懒得改了. 尝试导入一个第三方词库失败了, 就……

播放器

多年 iTunes 用户表示(除了设备管理阴间之外) iTunes 是我心目中最好的音乐播放器和音乐库管理器 - 但既然转了 GNU/Linux 就只能去寻求替代品.

试过诸如 Lollypop, Clementine, Audacious, Elisa, VLC 等等一众播放器, 但体验都很不理想; 不是音乐库支持差劲, 无法自动识别文件夹里的部分歌曲, 就是 UI 和操作反人类, 无法正常导入全 .m3u8 格式的播放列表. 最后发现最佳 alternative 就是 Rhythmbox - 功能不多不少,对音乐库管理(尤其是导入)的支持最好(虽然导入上面说的播放列表还是会漏一些, 不知道是不是我的曲库坏掉了), 操作方式也算合理. 当然 UI 乏善可陈, 推荐搭配 Alternative Toolbar 插件让它看上去更现代一点.

VM

在 Virtualbox 和 VMware Workstation 之间纠结了很久, 最后还是在朋友帮助下老老实实地配好了 QEMU/KVM + libvirt. (但相比直接上 Virtualbox 还是费了一番工夫, 比如装的时候要在virtio镜像和Windows安装镜像之间反复横跳)

实际用起来立马感受到了这个方案的强大 - 运行 Windows 10 VM 几乎感觉不到有明显性能损失, 低负载下甚至丝滑如真机, 谁叫 QEMU + KVM 的组合大致相当于 Type-1 Hypervisor 呢. 至于图形和音频性能…… 测试过几个 DAW (REAPER 之类) 发现整体还是有点卡顿, 但至少上网课是够用了.

上面提到转 GNU/Linux 之前担心没有能媲美 proprietary 的软件; 同时也担心 VM 性能不足以运行我实在需要的 Windows 应用. 现在应该是没有这个顾虑了.

当然问题也是有的. 比如对客户机宿主机之间的文件共享支持很差劲: 直接在 virt-manager 里配没用, 手动配 samba 可行但担心暴露到公网的安全性 (呃……), SPICE 同样无法使用; 最后还是权且用着 Resilio Sync. 还是太菜了.

我的 Windows 10 VM

Windows 10 Guest 无法使用 OpenGL 应用 (如 osu!) 的解决方案 (感谢这个 askubuntu 回答)

  1. 这里下载对应的release (MSVC或MinGW)

  2. 解压并运行 systemwidedeploy.cmd

  3. 在弹出的 cmd 窗口中选择 1. Core desktop OpenGL drivers

  4. 重启

代理

我用的代理软件是 Clash (因为对 routing 支持最好). 我选择了直接上 cli, 不行就挂个 WebUI 实时监控.

这里送上我的 Clash systemd service (没啥技术含量其实):

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Clash systemd service
After=network.target

[Service]
ExecStart=/home/aisuneko/bin/clash -f /home/aisuneko/clash_config.yaml
Restart=on-failure

[Install]
WantedBy=default.target

游戏

虽然好的跨平台游戏也不少 - 从 Minecraft 到 osu!lazer, 在 GNU/Linux 上的体验有时甚至比在其他平台上还要好 - 但毕竟大部分游戏还是 Windows only 的. 怎么办呢?

朋友帮我配好了 wine 和 Lutris.

通过 Lutris 试玩了几个 Windows 游戏 (Mini Motorways, NIMBY Rails, SimAirport)…… it works like a charm! 在我这块 Iris Pro HD 5200 上体验相比原生 Windows 一点也不逊色, Galgame就更不用说了.

当然对于一些其他游戏 (主要是3D的那种, 比如 Transport Fever 2 和 Parkitect) 就卡的几乎没法玩. 我承认主要是因为这块集显太垃圾, 但似乎也是因为是纯DirectX渲染.

所以得出结论, Lutris 对原生支持 OpenGL/Vulkan 渲染的 2D 游戏支持最好, DX的就…… 想都别想, DXVK本来就有性能损失, 加上我这块垃圾集显更是如此.

同时借助 Anbox 还实现了几乎无性能损失地运行 Android 游戏. 终于可以优雅的肝方舟少前了 (缺点是 prebuilt image 万年没更新了, 现在还锁定在 Android 7.1, 以及有时显示会变得很鬼畜)

总之就是 Linux gaming 体验一点都不差(只要打开方式对了) - 甚至比 macOS 上的体验还要好得多.

Wine 下运行 Mini Motorways

KARAKARA. 至于我为什么不直接去玩NEKOPARA...... (

几个 Tips

  1. 对于某些游戏, 比如 Mini Motorways, 要在 Wine configuration 里启用 Windowed (virtual desktop) mode, 不然窗口失焦后就识别不了任何鼠标键盘输入; 参考这里

  2. 对于 Galgame 可能会出现的日文乱码, 使用 Lutris 的正解:

    1. sudo vim /etc/locale.gen, 取消注释 ja_JP.UTF-8 UTF-8一行
    2. sudo locale-gen
    3. Lutris 中 System options -> Environment variables 下加一个 entry: LANG = ja_JP.UTF-8
  3. 解决了乱码问题, 还可能会因为缺失 CJK 字体显示豆腐块. (在对应的 wine prefix 里) winetricks cjkfonts 即可.

开发

刷Debian之后就没怎么写过代码. 按理说都用 GNU/Linux 了, 开发环境什么的应该完全不是问题, 简单配个 VSCode, Qt 和 Vim (我用的是 Neovim) 就差不多了.

最近倒是沉迷写 systemd service 和 Dockerfile, 走了不少弯路但也积累了不少经验, 现在至少把 Systemd service 的基本模板 (什么 [Unit] [Service] [Install] 啦, After ExecStart WantedBy 啦) 记熟了, 也初步入门了 Docker, 学着写了个 Docker Image. 果然让 systemd+Docker 的组合 daemonize (and containerize) everything 就是方便.

遇到的问题 (及解决方案?)

当然, 主要是硬件相关.

快捷键

上手之后发现快捷键配置很不习惯 - KDE 下默认把 control 键映射到了 ctrl, 而 Mac 上的 command 键似乎就没有与之对应的映射了. Google 了很久, 最后还是找到了中意的 workaround: kinto.sh. it’s not perfect, but at least it works.

触控板

手势

macOS 上已经习惯了诸如三指滑动切换工作区一类的触控板手势了 (或者说我已经习惯 MacBook 上的 Force Trackpad 了, 以至于用别的笔记本的触控板感到很不适应). GNU/Linux 下还是找到了一个替代方案: fusuma, 虽然需要自己手写配置.

我的配置文件长这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
swipe:
3:
left:
command: "xdotool key super+shift+Left"
right:
command: "xdotool key super+shift+Right"
up:
command: "xdotool key ctrl+F8" # Desktop grid, 类似 macOS 下的 Mission Control
down:
command: "xdotool key ctrl+F10" # Toggle present windows, 类似 Exposé
pinch:
2:
in:
command: "xdotool keydown ctrl click 4 keyup ctrl" # Zoom in
out:
command: "xdotool keydown ctrl click 5 keyup ctrl" # Zoom out
4: # 基本未使用, 仅供参考
in:
command: "xdotool key alt+F1" # Launcher
out:
command: "xdotool key super+D" # 显示桌面

虽然识别起来还是不太准, 但至少能用(不过这识别准确率确实有点让人抓狂).

发现两指缩放几乎不能被准确识别, 所以目前要缩放东西只能通过键盘快捷键替代了.

硬件问题

这块Force Trackpad偶尔会抽风, 表现为移动光标时光标会不停帕金森抖动(亲测不是因为触控板脏了), 有时干脆直接禁用光标移动了, 只能重启(或休眠再唤醒)……

不知道是不是驱动的问题, 暂时没有 solution……

网卡

这块 BCM43602 网卡可以说是目前最让我头疼的问题了. 只有 nonfree 驱动导致它经常出现唤醒后检测不到网络的问题, 要想上网只能重启. 不停 google, 尝试了 Arch Wiki, Debian Wiki 及数个 Stack Overflow 回答给出的解决方案未果, 几天后总算找到了还算凑合的 workaround:

1
iw dev <网卡设备名, 比如wlpxsx> set power_save off

现在虽然发作机率稍微降低但问题依然存在, 就算正常时也表现为先断开网络再连接, 可能还是power management的问题吧.休眠了, 又没有完全休眠

后来才知道我不是一个人; 有人甚至专门提交了 kernel bug看来天下苦 nonfree firmware 久矣. 虽然听说 AUR 有提供 broadcom-wl-dkms 驱动(甚至还有专门为 MacBook 编译的内核), 但作为 Debian 用户来说, 其实没有也没甚要紧.

休眠相关

表现为经常合盖不休眠;要么就是经常因为一些轻微震动就被唤醒(合了盖也一样!). 比如放在包里带着出去, 放半个小时再拿出来就会发现烫的不行. 难道又是霍尔传感器的 nonfree firmware 的问题?

btw, 上面说的唤醒检测不到网络的问题有时还会伴随此问题复发, 目前不清楚是我家磁场太强还是网卡/传感器有问题.

KDE 电池图标有时不显示

一般重启 plasmashell 就好了. 一次不行就两次

我一般都这么写:

1
2
alias restart_ibus='/usr/bin/ibus-daemon -drx --panel=/usr/lib/x86_64-linux-gnu/libexec/kimpanel-ibus-panel' # 确保kimpanel正常显示. 路径可能不一样, 仅供参考
alias refresh='restart_ibus && kquitapp5 plasmashell && restart_ibus && kstart5 plasmashell && restart_ibus' # 亲测至少前后两个restart_ibus不能省(?)

2022.01更新: 此法有一个副作用,就是对于某些应用(比如 flatpak 版 Telegram)会出现输入的字符重复多次显示的情况,而且每一次restart_ibus就会多一次重复。

无法配对蓝牙音箱

家里有个小米小钢炮2, 蓝牙一直连不上, systemctl status bluetooth 一看才发现了问题, 在这里找到了解决办法:

1
2
3
4
sudo apt install pulseaudio-module-bluetooth
sudo killall pulseaudio
pulseaudio --start
sudo systemctl restart bluetooth

虽然连上了之后音频输出还是卡的根本没法听.

Misc.

  • 有一块 VeraCrypt 加密过的备份盘, 所以试着用了用 ZuluCrypt 作客户端, 发现弹出分卷的时候总是失败. 这里推荐直接上官方 VeraCrypt client, 虽然要装野包.
  • 现在还是苦于找不到好的 GUI archive manager. 试过了 Ark, GNOME File Roller, PeaZip等等, 但不是不支持直接解压多分卷压缩包和加密压缩就是解压时出各种问题 (macOS下一直都用BetterZip, 完全无压力). 看来 cli 压缩工具还是要学习一个.
  • KDE 的音效不错; 后来才知道 Plasma 是沿用 KDE 4 的音效, 但居然毫无违和感.
  • KDE Connect yyds

结语

从难以抛弃 macOS 到拥抱 GNU/Linux, 我在亲身使用的同时心态也发生了变化. 不知不觉, 我已俨然从一名一般技术宅用户变成了半个 open source enthusiast. 在逐渐拥抱开源的同时, 我也开始越来越痛恨许多昂贵的(有时还窃取用户隐私的)专有软件和待用户如孙子的科技巨头. 也许 GNU/Linux 和开源社区确实是许多像我这样的 tech lover 的一座别样的避风港.

记得装完 Debian 的那个夜晚, 我跟朋友说了一句话:

现在我终于可以自豪的说, 我是一名 GNU/Linux用户了.

最后送上 Launcher 和我的 neofetch