想 Deepin 安装到 Btrfs 文件系统中,简单
Tofloor
poster avatar
comzhong
deepin
2017-07-22 06:33
Author
本帖最后由 comzhong 于 2017-7-27 11:44 编辑

       看见好几个人总想安装  Deepin 到 btrfs 文件系统,其实很简单(btrfs 不稳定,会丢失数据不推荐,搞坏了不负责)

      安装时进入 live 环境,或者你喜欢用 tty 也可以,总之,修改 /usr/share/deepin-installer/resources/default_settings.ini,关键之处就在下面三个位置,其实就是在变量中增加 “btrfs”,改成下面这样就可以了:


可用文件系统列表
  1. # Specify available filesystem types used by normal disk partition.
  2. # Name of filesystems are separated by ';'
  3. # Currently supported filesystems are:
  4. #  * btrfs,
  5. #  * ext4, ext3, ext2,
  6. #  * fat16, fat32,
  7. #  * hfs,
  8. #  * hfsplus,
  9. #  * jfs,
  10. #  * nilfs2,
  11. #  * reiser4,
  12. #  * reiserfs,
  13. #  * xfs,
  14. # Note:
  15. #  * EFI filesystem might be hidden in legacy mode.
  16. #  * `unused` means this partition is not used.
  17. # Exact fs names can be found in partman/fs.cpp::GetFsTypeByName()
  18. partition_supported_fs = "btrfs;ext4;ext3;ext2;efi;linux-swap;jfs;reiserfs;xfs"
Copy the Code


默认新文件系统
  1. # Default filesystem for new partition.
  2. partition_default_fs = "btrfs"
Copy the Code


boot分区文件系统列表
  1. # Filesystem list for boot partition.
  2. # If /boot is used, this rule applies to it;
  3. # Else this rule applies to /.
  4. partition_boot_partition_fs = "btrfs;ext4;ext3;ext2"
Copy the Code


不想根目录分区被格式化可以在这里去掉
  1. # If mount point of a partition is in this list, format that partition
  2. # compulsively.
  3. # Note that this list is a subset of |partition_mount_points|.
  4. partition_formatted_mount_points = "/boot;/tmp;/var"
Copy the Code


====================================
安装完成,先别点“安装完成”重启,先进tty,创建一个快照:
  1. sudo mount /dev/sda5 /mnt
  2. sudo btrfs subvolume snapshot /mnt /mnt/snap-deepin
Copy the Code


进系统后,复制一份快照
  1. sudo btrfs subvolume snapshot /snap-deepin /snap-backup
Copy the Code


进系统后,查看快照
  1. sudo btrfs subvolume list /
Copy the Code

进系统后,删除快照
  1. btrfs subvolume del /snap-deepin
Copy the Code

启动快照snap-deepin,在grub菜单中  linux 后面增加参数
  1. rootflags=subvol=snap-deepin
Copy the Code

设置为默认subvolume,这个在live环境用,256是subvolume id,root subvolume 的 id 是 5 ,可用 0 标识。在系统中用的话,不知道是不是重启生效,懒得试了。
  1. sudo mount /dev/sda5 /mnt
  2. sudo btrfs subvolume set-default 256 /mnt
Copy the Code
default subvolume有什么用呢?
利用snapshot和default subvolume,可以很方便的实现不同系统版本的切换,比如将系统安装在一个subvolume下面,当要做什么危险操作的时候,先在subvolume的基础上做一个快照A,如果操作成功,那么什么都不用做(或者把A删掉),继续用原来的subvolume,A不被删掉也没关系,多一个快照在那里也不占空间,如果操作失败,那么可以将A设置成default subvolume,并将原来的subvolume删除,这样就相当于系统回滚。
有了这样的功能后,Linux的每次操作都能回滚,养成在修改操作前做snapshot的习惯,就再也不用担心rm误删文件了。
现在有些发行版已经有了类似的功能,如ubuntu,将安装工具(apt)和Btrfs结合,自动的在安装软件之前打一个snapshot,然后安装软件,如果成功,删除新的snapshot,如果失败,修改default subvolume为新的snapshot,删除掉原来的snapshot,这样对系统没有任何影响,并且所有操作对用户是透明的。










Reply Favorite View the author
All Replies
1 / 2
To page
窄口牛
deepin
2017-07-22 06:54
#1
挂载点怎么修改为文件夹?
Reply View the author
星外之神
deepin
2017-07-22 07:05
#2
早就知道了
Reply View the author
星外之神
deepin
2017-07-22 07:05
#3
官方有人说过
Reply View the author
comzhong
deepin
2017-07-22 09:08
#4
https://bbs.deepin.org/post/142951
挂载点怎么修改为文件夹?

安装完创建一个快照就是
sudo mount /dev/sda5 /mnt
sudo btrfs subvolume snapshot /mnt /mnt/snap-deepin

在grub菜单添加参数启动快照
rootflags=subvol=snap-deepin

然后 root subvolume 的文件不想要删除就是
Reply View the author
comzhong
deepin
2017-07-22 09:08
#5

有些人不知道
Reply View the author
窄口牛
deepin
2017-07-22 14:54
#6
本帖最后由 jonathan_hzs 于 2017-7-22 06:59 编辑

是否等于把根目录拖到deepin文件夹,然后grub添加rootflags=deepin?
Reply View the author
comzhong
deepin
2017-07-22 19:08
#7
本帖最后由 comzhong 于 2017-7-22 11:21 编辑
https://bbs.deepin.org/post/142951
是否等于把根目录拖到deepin文件夹,然后grub添加rootflags=deepin?

是   ,注意要写完整:rootflags=subvol=deepin
Reply View the author
窄口牛
deepin
2017-07-22 19:24
#8
好的,谢谢指导!
Reply View the author
窄口牛
deepin
2017-07-23 00:25
#9

目录位置
menuentry "启动deepin os" --class debian{
        set root='(hd1,gpt5)'
                linux        /deepin/boot/vmlinuz-4.9.0-deepin4-amd64 root=UUID=e098fc64-2c01-4e4e-84bd-222a2dd398e3 rootflags=subvol=/deepin ro splash quiet
                initrd /deepin/boot/initrd.img-4.9.0-deepin4-amd64
}

grub2菜单
失败了

Reply View the author
comzhong
deepin
2017-07-23 01:06
#10
本帖最后由 comzhong 于 2017-7-22 17:10 编辑
https://bbs.deepin.org/post/142951
目录位置
menuentry "启动deepin os" --class debian{
        set root='(hd1,gpt5)'

加:rootflags=subvol=deepin ,而不是 rootflags=subvol=/deepin
这个方法,你要像我上面那样安装到 btrfs 分区,一个快照就是一个 subvloume  子卷,EXT4 分区安装系统到分区子目录没试过。
Reply View the author
窄口牛
deepin
2017-07-23 01:09
#11
不是,我只需要它可以和别的系统共用分区。
Reply View the author
comzhong
deepin
2017-07-23 01:12
#12
本帖最后由 comzhong 于 2017-7-22 17:14 编辑
https://bbs.deepin.org/post/142951
不是,我只需要它可以和别的系统共用分区。

btrfs 分区的子卷都是共用的这个分区的空间,看来你一点都不了解 btrfs ,你把每个系统安装到这个 btrfs 分区的不同子卷,实际上它们就是在共用这个分区,实际上就是你要的效果。
Reply View the author
窄口牛
deepin
2017-07-23 01:19
#13
哦,我是想在ext分区实现共享分区,因为我要它和安卓86共享空间。
Reply View the author
窄口牛
deepin
2017-07-23 01:20
#14
如果用brtfs格式的分区,我就不确定安卓86是否支持了。如果是别的linux,那估计没有疑问。
Reply View the author
窄口牛
deepin
2017-07-23 01:52
#15
谢谢仔细解释。我再琢磨吧。
Reply View the author
Feng Yu
deepin
2017-07-23 02:18
#16
用zfs吧,已经是ubuntu官方支持的方案了
Reply View the author
tmacy
deepin
2017-07-23 02:19
#17
https://bbs.deepin.org/post/142951
安卓 x86 没说支持 btrfs ,不过可以试试最新的 7.1 rc ,万一支持呢。

至于你想把系统安装到分区的子目 ...

系统应该装在子卷里吧,如果装系统前不先做子卷,做出的快照就在一个子卷里?或者你的系统也不在子卷里,似乎有些问题啊。。
Reply View the author
窄口牛
deepin
2017-07-23 02:26
#18
安卓86要支持brtfs,需要编译内核,config修改打开brtfs,那超出我的知识范围了,玩不了。debian装到文件夹估计需要修改init,具体改哪还没概念。
Reply View the author
tmacy
deepin
2017-07-23 02:31
#19
https://bbs.deepin.org/post/142951
你也可以先格式化,建立子卷,用下面的命令将子卷设置为默认子卷,256是subvolume id,再安装系统。

可是这样安装系统,并不能安装到subvolume里吧?默认是直接解压缩到整个分区吧
Reply View the author
comzhong
deepin
2017-07-23 02:37
#20
本帖最后由 comzhong 于 2017-7-22 18:54 编辑
https://bbs.deepin.org/post/142951
可是这样安装系统,并不能安装到subvolume里吧?默认是直接解压缩到整个分区吧 ...

安装之前格式化分区,安装的时候,不要格式化分区,何必这么麻烦,我觉得我那样装就挺好的,而且你那样,还要做一些修改,反而多找些事做。
Reply View the author
1 / 2
To page