最后更新:2017/02/23
本文主要参考自《在自定义的 btrfs+subvolume 上安装 Deepin 2014》这篇博客,并尝试应用到 Deepin 15 上,略有不同的是我使用了 UEFI 来引导。
- 试验的操作系统版本:Deepin 15.3
- 试验环境:VMware Workstation 12 Pro (使用 UEFI 引导)
0. 准备工作
Deepin 目前的 Live CD 模式是默认关闭的。开启的方法为进入系统启动菜单后,按 Tab
键编辑菜单项,出现一行命令后,将其中的 livecd-installer
这个参数改为 livecd
,按回车即可进入 Live CD 模式。当然也可以借助 Ubuntu 等其他发行版的 Live CD。
进入 Live 环境后,首先需要安装必要的工具:
apt-get install btrfs-tools squashfs-tools
VMware 中如果要启用 UEFI 引导,要在”虚拟机设置->选项->高级“中选中”通过 EFI 而非 BOIS 启动“这个选项。
1. 建立文件系统
根据你自己的需要划分分区,建议将 /boot
单独分区。由于我们要采用 subvolume,因此只需要一个 btrfs 分区即可。另外,由于 btrfs 尚未支持 swap file,如果你的内存比较小,或者需要使用休眠功能,则必须再单独划分一个 swap 分区。可以使用 GParted 进行分区,图形化操作比较方便。
我自己的分区情况是:第一分区为一个 512MiB 大小的 EFI 分区(FAT32,设置 boot 标记,如果你是在真机中直接安装,这个分区可能已经有了,如果是在虚拟机中则需要新建),第二分区为 512MiB 的 /boot
分区(ext4),第三分区为 swap 分区,第四分区为 btrfs 分区。如果你使用GPT分区表,却使用 BIOS 引导的话,还需要一个1 MiB 的 BIOS 分区。
把 btrfs 分区挂载到 /mnt
,并指定挂载参数,我这里指定了自动后台整理碎片以及空闲空间缓存加速( 在 btrfs 子卷上开启 lzo 透明压缩会有 bug,故这里没有启用)。
mount -o defaults,space_cache,autodefrag /dev/sda4 /mnt
接着,先创建一个 subvolume,作为以后 Deepin 的 /,名字可以随意命名:
cd /mnt
btrfs subvolume create deepin
然后按照喜好,任意创建其他 subvlume,作为以后 / 下的其他挂载点。这里,我们有两种 subvolume 方案,一种是跟传统目录树一样的树形结构,另一种是创建多个平级的 subvolume。这两种方案各有利弊,我先分别举例说明一下。
树形结构:
cd /mnt
btrfs subvolume create deepin/home
btrfs subvolume create deepin/opt
btrfs subvolume create deepin/srv
btrfs subvolume create deepin/var
平级结构:
cd /mnt
btrfs subvolume create home
btrfs subvolume create opt
btrfs subvolume create srv
btrfs subvolume create var
这两种方案各有利弊,具体来说:
第一种方案挂载比较方便,只需要挂载最上面一级的 subvolume,位于它下方的二级 subvolume 就能自动挂载了,不需要再手动挂载每个 subvolume。在生成快照的时候,也可以递归进行 snapshot 操作。但是,这种方案无法为每个二级 subvolume 单独设定挂载选项,设定了也没用,因为二级 subvolume 的挂载