宇宙纪元

hinder110 的思考、读书与代码札记。

0%

从 gamescope 到 Linux 哲学——一次顺藤摸瓜的学习

起点:gamescope 怎么用?

无意间知道了 Gamescope——Valve 为 Steam Deck 做的 Wayland 微合成器。装好了,怎么用?

答案不复杂:

1
gamescope -W 1920 -H 1080 -r 60 -f -- %command%

Steam 游戏属性 → 启动选项,把上面这行粘进去,60 帧全屏跑。想降分辨率提性能就加 -w 1600 -h 900 -F fsr,开 FSR 超分。游戏里 Super+F 切全屏,Super+U 切 FSR 开关。

不复杂。但接下来发生了更有意思的事。

第一问:配置文件在哪里?

如果我想看 gamescope 的配置文件呢?pacman 装的程序,配置放哪了?

两条规则:

  • /etc/ — 系统级默认配置,pacman 装的,所有用户共享
  • ~/.config/ — 用户自己改的配置,程序第一次运行时自动生成,pacman 不碰

查一个包放了什么配置:pacman -Ql <包名> | grep /etc/

第二问:为什么这样设计?

因为 Linux 从一开始就是多用户系统。哪怕现在 PC 就你一个人,系统里还跑着 rootnobodyhttp 等几十个虚拟用户。

如果配置只有一个地方放:装个 vim,服务器上 50 个用户都得等管理员改全局配置才能换主题——疯了。反过来,一个人改了全局 vimrc,其余 49 个人的编辑器突然变了——更疯了。

解决方案:分层覆盖。

层级 谁设 优先级
程序默认值 开发者 最低
/etc/ 全局 root
~/.config/ 个人 你自己 最高

你的个人配置盖过全局,全局盖过默认。每个人只管自己一块,root 管底线。

不是注册表,是纯文本

Windows 用了注册表,一个大二进制数据库。Linux 选了纯文本文件。故意的:

  • 任何编辑器都能改,不需要 regedit
  • git diff 看改了哪,cp 就是备份
  • 换机器复制 ~/.config/ 就恢复
  • 脚本能直接读写配置

代价是每个程序可能用不同格式(INI/YAML/JSON/TOML)。换来的是透明和可控。

/etc//usr//var/~/.local/share/ 分离也是同样的逻辑——可执行文件、静态数据、运行时日志、用户数据各自归位,备份的时候你只要管 /etc/~/

不是 Linux 选了「难用」,而是选了「每个人只管自己一亩三分地」。你是多用户系统里的一个用户,root 不是你,系统服务的虚拟用户也不是你。分层就是为了让这个边界清晰。

第三问:加密是干什么的?

聊到 GPG(打错成 gbg),接着是文件加密。

说实话,我过去多少年也从没手动加解密过文件。最多压缩包设个密码。但仔细一想,我其实一直在用加密,只是它藏在底层:

  • 打开 https:// 网站 → TLS
  • 连 WiFi → WPA2/WPA3
  • SSH 连服务器 → 加密通道
  • Steam 输密码 → 加密传输

软件替你做了。手动加密只在数据要离开你可控边界时才有意义——发给别人、上传云盘、U 盘带走。

然后查了一下自己的硬盘——lsblk 没看到 crypt 层,/etc/crypttab 不存在,dm-crypt 模块没加载。裸奔。但因为我这台机器不带着到处跑、盘上也没什么见不得人的内容,不需要就是不需要。Linux 给你的是选择,不是强制。

顺藤摸瓜的学习

回头看这串问题的路径:

1
2
3
4
5
6
gamescope 怎么用
→ 配置文件在哪
→ 为什么这样设计
→ 加密是什么
→ 我需要加密吗
→ 我的盘加密了吗

这不是按教材目录学的。每一个问题都是上一个自然引出来的。从一条启动参数开始,摸到了 FHS 标准、多用户设计哲学、文本配置 vs 注册表、以及对自身系统的实际验证。

每个知识点都踩在上一步的实际操作上,不是背的,不会忘。

学习不是先有地图再走,是走到哪画到哪。今天画了一小段,但它连着真实的路。