在 Linode 上部署 Guix 镜像
来源: dthompson.us — 2026-09-26
概述
作者从 Digital Ocean 迁到 Linode,原因之一是前者向他认为糟糕的 Omarchy 发行版捐了 300 万美元。Guix Cookbook 给出的做法是先起一个 Linode 自带的 Debian 镜像再转换成 Guix,身为前 DevOps 的他觉得不够干净,于是做了一个可直接上传的 Guix 磁盘镜像:初始 RAM 盘识别虚拟磁盘、正确挂载根与交换分区、开机把根文件系统扩展到整块卷、带公钥认证的 SSH、免密码 sudo 供 guix deploy 使用、把引导文件放到 Linode 能识别的目录,并通过 DHCP 同时取得 IPv6 地址。
核心要点
- 迁移动因很直白:Digital Ocean 向 Omarchy 捐款 300 万美元,而他觉得开源项目为一小笔经费抢破头,不写代码的人却能拿到成卡车的钱。
- Cookbook 的既有路径是先把 Linode 自带的 Debian 镜像转成 Guix,他作为前 DevOps 认为这种方案不令人满意。
- 自建镜像要解决的关键点包括让初始 RAM 盘识别虚拟磁盘,以及正确挂载根分区与交换分区。
- Guix 自带的 resize-file-system-service 在他的 Linode 场景里会做不成立的假设,于是他写了一个自定义 shepherd 服务,开机执行 resize2fs 占满整块卷。
- 镜像用 mbr-raw 类型生成,而 Linode 只需要包含根分区,因此用 dd 以 128K 块 skip=8 跳过 1048576 字节的前导部分,再 gzip 压缩上传。
- 用默认配置直接启动会导致内核 panic,必须在引导设置里选 GRUB 2 并关掉所有文件系统与引导辅助开关才能起得来。
- 系统起来后所有更新都能通过 SSH 上的 guix deploy 完成;他也承认应该把这套改进写回 Cookbook,只是眼下没精力。
金句
Guix 自带的 resize-file-system-service 会做一些在我这套 Linode 环境里并不成立的假设。
👍 0
👎 0
← 返回 Lobsters 首页