Debian安装经验
目录
1. 为什么是Debian?
维修部在实际工作中大量使用Debian作为主力系统,在服务器和桌面环境中均有部署。偶尔 也会探索其他发行版,但多数是尝鲜性质。
目前维修部使用的系统是Debian的forky分支。截止本文撰写时,forky仍为测试版,可能存 在不稳定性,但其更新频率不低,甚至比Arch Linux还要快一些。如果forky成为稳定版, 建议协会成员可以长期使用该版本,不必频繁更新。
Debian的许多工具相当讨喜,比如 update-alternative 、 update-grub 等等,无论
什么人,都应该试试Debian发行版的 update* 系列命令,可以相当程度上减轻发行版管
理的复杂度,从桌面到服务器,从命令行到GUI,Debian的 update* 系列命令可以管理许
多东西。
而且Debian是一个传统发行版,用的人不少,许多应用在做适配的时候会优先为Debian进行 适配。同时其也允许一些“Hack”玩法。相比起NixOS与GNU Guix发行版来说更符合直觉1。
2. 分区与文件系统
相比各位在网上都可以找到Debian的安装教程,但是这次,我想来点不一样的。不是都说 Arch 的安装困难吗,这回叫Debian按照Arch的安装方式进行安装,同时配置Btrfs来设置子 卷。
注意 :如果选定使用Btrfs就要保证可以一次启动成功,否则,修复根分区时需要全部挂 载子卷,这个过程繁琐,容易出错,能一次启动就一次启动吧。
2.1. 根目录及子卷布局
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里记载的流程。