描述的很混乱,没太明白
描述的很混乱,没太明白
写的有点急,稍微有点乱,可是照着做还是可以懂的
我以前也尝试使用btrfs文件系统,没有成功。这是我原来的帖子:
https://bbs.deepin.org/zh/post/213048
看了你的文章,发现主要原因是没有修改 /usr/share/initramfs-tools/init 文件,并重新生成启动内核。
按照这个提示,重新修改内核生成配置文件,并重新生成启动内核,启动成功。
另:如果系统内核升级,会不会造成再次无法启动?我好担心啊!
我以前也尝试使用btrfs文件系统,没有成功。这是我原来的帖子:
https://bbs.deepin.org/zh/post/213048
看了你的文章,发现主要原因是没有修改 /usr/share/initramfs-tools/init 文件,并重新生成启动内核。
按照这个提示,重新修改内核生成配置文件,并重新生成启动内核,启动成功。
另:如果系统内核升级,会不会造成再次无法启动?我好担心啊!
不会,这个事本质上不是内核屏蔽的,而且说白了要是只在btrfs上装可简单呢,做好取消屏蔽这个事,只需要使用无损转换命令即可完成ext4到btrfs的转变,但是要想使用快照就得把系统放到子卷里,这是我文章复杂的地方!
我以前也尝试使用btrfs文件系统,没有成功。这是我原来的帖子:
https://bbs.deepin.org/zh/post/213048
看了你的文章,发现主要原因是没有修改 /usr/share/initramfs-tools/init 文件,并重新生成启动内核。
按照这个提示,重新修改内核生成配置文件,并重新生成启动内核,启动成功。
另:如果系统内核升级,会不会造成再次无法启动?我好担心啊!
我之所以使用rsync倒腾文件,主要是为了安全,别一个命令没转好变成有损就尴尬了!
我的做法是先把 Debian 安装到 BTRFS 子卷中,然后进入 Debian,安装 QEMU 或 VirtualBox 虚拟机,然后把 Deepin Linux 安装虚拟机中,然后创建 Deepin Linux 子卷(rootfs),挂载Deepin Linux 子卷(rootfs)和虚拟磁盘后,使用 rsync 工具同步到 Deepin Linux 子卷(rootfs)中,然后修改 fstab,chroot 到 Deepin Linux 子卷(rootfs),安装 dracut(会自动替换 initramfs-tools),然后 update-grub,这个方法是可行的。
你这个方法改天折腾一下,看来是要替换掉 `/usr/share/initramfs-tools/init` 中的 btrfs 设置。
今天尝试你的方案没有成功,/usr/share/initramfs-tools/init 配置文件中没有看到有关 btrfs 的配置,无需替换,最后我手动 GRUB SHELL 进入系统后,通过 update-grub 和 grub-install 工具修复引导。
在 chroot 模式下,无法执行 update-grub 和 grub-install ,出现奇怪的错误,在 debian 中百试不爽的方法,在 deepin 中失败。
今天尝试你的方案没有成功,/usr/share/initramfs-tools/init 配置文件中没有看到有关 btrfs 的配置,无需替换,最后我手动 GRUB SHELL 进入系统后,通过 update-grub 和 grub-install 工具修复引导。
在 chroot 模式下,无法执行 update-grub 和 grub-install ,出现奇怪的错误,在 debian 中百试不爽的方法,在 deepin 中失败。
有,你好好看
本文修改过,更适合小白了
所以我来顶一下
Popular Events
More
前言:由于deepin不知道是因为什么原因安装器并未提供安装到btrfs的选项,同时还在系统里屏蔽了btrfs,导致无法使用
准备U盘+deepin.iso镜像,启动live后联网安装gparted磁盘工具,gedit这类文本编辑器,本文使用深度编辑器dedit命令可能会变。这样后面处理起来会方便一些。
注意,下面这个方法为了使用深度自己的内核,也为了操作上不使用过多的命令,我是先安装到ext4再到U盘live系统里倒腾,(注意如果后续版本deepin放开了btrfs,就跳过1、2、3两步)具体看步骤
1、将系统安装到ext4,建议硬盘只分4个区,efi、swap、一个空的btrfs分区只格式化不做挂载和根目录 / ,也就是这个系统文件只有一个根分区里因为btrfs可以用子卷来充当更多的挂载点,而且这样一个大分区容量不会被一堵墙隔离,共享容量,还有一点这么做的目的最终根目录的文件都会转移到btrfs里面,根目录所做的sda4会被删除,如果顺序乱了,最终可能sda1 sda2 sda4这种局面,虽然有方法调整过来命名,但是后面还要修复引导这些,因此这一步不要去增添麻烦。装好后启动系统。
2、现在咱们做一个操作,编辑这个文件,打开终端输入,回车:
注意使用深度文本编辑器替换里面的 ,btrfs 说白了就是删除,但使用替换可以精准替换成空,这样这个屏蔽项目就被删除了,保存退出。
3、执行
这一步必须做,不然内核并没有真的可以运行在btrfs。执行完毕后这套系统就可以跑在btrfs了。
4、接下来建议使用刚才装系统用的deepin 的iso镜像用u盘启动到安装界面,此时按下ctrl+Fn+alt+F2(台式机之类ctrl+alt+F2)进入tty2,然后输入startx回车,等待进去live系统,如未启动再执行一次,再执行一次发现加载到live系统了。
btrfs组件深度自带不需要安装,但是如果你不了解你的磁盘,这里建议可以联网安装一个gparted 图形化操作。精准不出意外
5、接下来我们处理一下sda3分区,首先将这sda3和sda4同时挂载,并在sda3即btrfs所在分区创建子卷
btrfs想要使用快照必须使用子卷功能,在最外层的大btrfs父卷是不可以直接快照的,若不使用子卷就安装系统与平常文件系统也就相差无异了
6、接下来该做的就是把安装有系统的第四分区文件同步到第三分区里
sudo rsync -avr 源目录(/dev/sda4)目标目录(/dev/sda3),注意这是示意,往后看。
至此相应的文件就都倒腾到了sda3里面的两个子卷里,子卷看起来就是个文件夹目录,在5.0以上内核可以当个文件夹直接删除,而不用
sudo btrfs subvolume delete /mnt/b/@ 这样去处理。
7、接下来我们要修改几个文件,/boot/grub/grub.cfg、/etc/fstab以及EFI目录里所有的grub.cfg
第一步:使用blkid命令查看新的sda3的uuid,复制替换grub.cfg文本中的uuid。
第二步:我们在内核参数后面加上一个参数告诉内核根目录在哪个子卷里 即rootflags=subvol=@,也可以使用rootflags=subvolid=257 两种表述意义一样257是子卷的id号通过sudo btrfs subvolume list /mnt/b/命令查看
方法还是替换最好搜索splash 替换为rootflags=subvol=@ splash 因为splash这个参数只要是deepin肯定有,替换的时候不至于格式错误。
第三步:如下图所示,逐行将写有路径的地方,找到这些路径前面加上它的新的真实路径,因为这些路径在第三方系统读取起来仅仅是一个分区下的@、 home两个文件夹。下图之前的路径是 /usr/share/grub/unicode.pf2现在我们将其改为/@/usr/share/grub/unicode.pf2
图示中的uos是我之前用过的子卷,目前我在用Ubuntu类型的子卷方案即 @ 、@home,因为timeshift这个软件支持btrfs且只支持Ubuntu这个子卷方案,我使用它来管理快照,因此作为对比,大家将有更深的理解。
第四步:将文件中带有ext字样的地方修改为btrfs,同样使用替换功能来做。
其余保持不变保存即可。
接下来我们修改EFI目录里的参数,随便找个地方挂一下,/mnt再新建个c文件夹吧
grub.cfg文件里面内容修改uuid值修改为现在的,路径加上@,如下所示,同样之前我根目录所作子卷为uos现在大家将其替换为@。
接下来最后一步,也就是fstab的写法,位于/mnt/b/@/etc/fstab 直接贴出来
解读一下,uuid值因为在一个大分区里,所以根和home用一样的。然后用subvol=@这个参数告诉具体在哪个子卷里,这里也可以采用前面提到的subvolid=257,id查看前面已经说了,两者等价,用id的好处是当子卷名称变化后不影响其系统引导和启动,用子卷名称的好处是以后系统挂了我直接找一个之前的快照改一下名称为@系统就等于活了。如果是ssd可以加上ssd这个参数,其实btrfs早已默认优化ssd不必添加,如果想启用透明压缩可以加入compress=zlib 或者 compress=zstd 采用的压缩工具不同而已,启用后似乎有些问题大家自行测试,透明压缩的加入其实是减小了磁盘读取数据的量,受内核控制,它在内存已经完成,写入硬盘的数据减小,这样磁盘寿命也会相对提升。
在blkid确认一下其他分区的uuid对不对,只有细致才能一次性重启到系统,而不是grub黑屏或者initramfs黑屏,再重新回到live多折腾。
8、至此就做好了deepin运行在btrfs子卷的系统就调整完成了,看看怎么创建快照吧!
再次提示timeshift的btrfs模式需要Ubuntu类型的@,@home
8、重新启动到系统,进入系统后执行一次sudo update-grub 以更新引导确保万无一失,其次还记得刚刚的sda4分区吗?他现在没用了,进入正式系统后安装gparted删除sda4将空闲空间分配给sda3即可,之所以这一步放到现在,是为了减少前述步奏出错的概率,在正式系统下使用gparted调整分区的uuid不会变,进而更加安全。