Debian安装经验

目录

1. 为什么是Debian?

维修部在实际工作中大量使用Debian作为主力系统,在服务器和桌面环境中均有部署。偶尔 也会探索其他发行版,但多数是尝鲜性质。

目前维修部使用的系统是Debian的forky分支。截止本文撰写时,forky仍为测试版,可能存 在不稳定性,但其更新频率不低,甚至比Arch Linux还要快一些。如果forky成为稳定版, 建议协会成员可以长期使用该版本,不必频繁更新。

Debian的许多工具相当讨喜,比如 update-alternativeupdate-grub 等等,无论 什么人,都应该试试Debian发行版的 update* 系列命令,可以相当程度上减轻发行版管 理的复杂度,从桌面到服务器,从命令行到GUI,Debian的 update* 系列命令可以管理许 多东西。

而且Debian是一个传统发行版,用的人不少,许多应用在做适配的时候会优先为Debian进行 适配。同时其也允许一些“Hack”玩法。相比起NixOS与GNU Guix发行版来说更符合直觉1

2. 分区与文件系统

相比各位在网上都可以找到Debian的安装教程,但是这次,我想来点不一样的。不是都说 Arch 的安装困难吗,这回叫Debian按照Arch的安装方式进行安装,同时配置Btrfs来设置子 卷。

注意 :如果选定使用Btrfs就要保证可以一次启动成功,否则,修复根分区时需要全部挂 载子卷,这个过程繁琐,容易出错,能一次启动就一次启动吧。

2.1. 根目录及子卷布局

启动到Live CD里面之后,创建文件系统,记得用Btrfs来创建,因为我们要用Btrfs的子卷 来设置回滚系统2

创建好Btrfs分区之后可以使用mount把文件系统挂载至/mnt里面,使用Btrfs命令的子卷子 命令来创建以下子卷:

  • @
  • @home
  • @var
  • @opt
  • @root
  • @srv
  • @local

以下的子卷可以选择性的创建3

  • @nix
  • @gnu

对于不希望备份的目录也可以使用子卷处理,回滚只会对存放根文件系统的子卷起效。

同时不要设置默认子卷,让默认子卷是顶级子卷即可4

2.2. 子卷释义

以下章节会详细解释各个子卷的用途。

2.2.1. @

这个子卷用来存放根文件系统,和 @home 一样,是timeshift要求必须具有的子卷。

这个子卷作为根文件系统存储位置,是实现回滚的核心,Btrfs的快速回滚功能是通过COW实 现的,因此必须打开COW功能。

2.2.2. @home

这个子卷用来承载用户信息,和 @ 一样,这个子卷同样是timeshift要求的必须具有的子 卷。

timeshift要求必须有这个子卷的原因是,timeshift可以用来备份@home子卷。

2.2.3. @var

这个子卷是用来存放变动数据的子卷,自然要脱离根目录。

由于Btrfs的COW特性,频繁变动的数据会造成性能回退。因此要关闭COW功能。

重要 :但是,不是这个文件夹中的所有东西都不进入备份,比如dpkg的包数据,如果这 个数据没有和系统一起回滚,则引起不一致的错误。在这个情况下,请在根目录创建一个可 以被跟踪的目录,把数据从var目录中迁移到可以被回滚的目录中。之后使用bind挂载可以 解决,如果想要更彻底一些可以尝试把var中部分目录分离为子卷,而整体备份。

2.2.4. @opt@local

这两个子卷是用来放自定义的软件的地方,这两个地方都不需要频繁变动,因此可以打开 COW。

@local 挂载点为 /usr/local/

至于为什么要独立出来?因为管理员们不想每次回滚之后都重新安装软件。

2.2.5. @root

这个子卷是root用户家目录的子卷。

root毕竟也是用户,也是有数据持久化的必要的。

2.2.6. @srv

这个子卷排除备份的理由和 @opt@local 的理由一致,这个文件夹中会存放服务文 件,这些文件大多是项目,回滚是为了给这些代码提供稳定运行环境,结果把这些代码一起 回滚了,这不行。

2.3. 交换分区及启动分区

我不打算把内存交换到文件,这个功能需要额外的设置,因此我在磁盘的最后面创建了一个 交换分区。

启动分区在磁盘的最前面,没什么好讲的。

3. 安装系统

装系统就十分关键了。

3.1. 基本系统安装

安装系统要使用特定的bootstarp工具,Arch有自己的pacstrap而我们的Debian有 debootstrap,这个工具易用性不如pacstrap但是用好了也不错。

同时,为了方便在切换根分区同时挂载特殊文件系统,我们会再安装一个 arch-install-scripts 其中包含 arch-chroot

以testing (即forky)版本为例,通过以下命令可以把基础系统安装在硬盘里。

debootstrap --merged-usr testing ./ http://mirrors.example.com/debian

--merged-usr 可以把 /bin/sbin 连接到 /usr 目录中对应目录。

在安装好这个基础系统之后,先使用 genfstab -U /[mntpnt] >>/[newsys]/etc/fstab 建立分区表,记得修改分区表中的分区挂载选项,genfstab无法自动地发现nodatacow选项, 应该自行添加。

之后使用 arch-chroot 切换到新系统中,安装需要的软件包即可。

3.2. Bootloader

千万不要忘了这一步,少了这一步,系统无法启动,然后由于Btrfs特殊的子卷设置,启动 到启动盘,依次挂载子卷这个过程实在是过于折磨。

基本上就是Arch Wiki里记载的流程。

脚注:

1

NixOS与Guix的配置方式较为陡峭,对于新手而言学习曲线较高,建议先熟悉传统发行版再行尝试。

2

我不打算细讲这个部分,具体可以参考Arch安装教程里的创建文件系统的章节。

3

这两个子卷是给Nix和Guix软件包管理工具准备的,介于函数式包管理器比较特殊, 因此可以排除在快照之外。

4

这是因为timeshift通过挂载默认子卷来识别子卷与进行备份,如果默认子卷被更改 了timeshift就无法识别子卷布局,会拒绝进行备份。

日期: 2026-05-31 日 00:00

作者: 维修部部长

Created: 2026-09-06 日 22:19