[Topic DIscussion] 准备迁移到BTRFS分区,我先说过程,麻烦大佬们指出不足
Tofloor
poster avatar
HighAvaPerCon
deepin
2022-10-27 18:24
Author

起因:在BTRFS格式的分区上安装了20.7.1,目前运行良好,但发现系统安装在/目录上,不想timeshift全盘备份,于是想把系统迁移到 @,分开 @home @cache @log @opt

步骤:

  1. sudo mount /dev/nvme0n1p1 /mnt/ 挂载目标盘
  2. sudo btrfs subvolume create /mnt/@ ...新建需要的子卷
  3. mv -v /mnt/ /mnt/@/* 迁移文件
  4. nano /mnt/etc/fstab 修改fstab的对应目录
  5. chroot /mnt/@
  6. grub-install --target=x86_64-efi --efi-directory=EFI文件夹 --bootloader-id=deepin --recheck 更新grub

疑问:

  1. 步骤1能否在deepin系统上操作,有文章说要在liveCD上操作,有文章说不用
  2. 步骤6的“--efi-directory=EFI文件夹” 我不确定是 /boot/efi 还是/@/boot/efi
  3. 步骤6可否用 grub-mkconfig -o /boot/grub/grub.cfg + update-grub 命令取代
Reply Favorite View the author
All Replies
HighAvaPerCon
deepin
2022-10-27 18:38
#1

吐槽一下论坛设置,不熟悉markdown,没有使用Markdown编辑器,但排版依然按照markdown来,总体乱糟糟的

Reply View the author
铁山老道孔乙己
deepin
2022-10-27 21:21
#2

我觉得1、2、都没有问题,问题在第3,第3步存在两个问题。

问题一、如果是一个正在运行的系统,你这么 mv 移动了,你说它还能运行吗?所以,还得 live cd。

问题二、 mv /mnt/ /mnt/@ 。@相当于 mnt下的一个子目录,是不是循环嵌套了?还是一个子目录一个子目录移动吧,根目录下也就十几个子目录吧!我没有用过 mv ,一般用 rsync ,使用 --exclude 参数把不需要的子目录给排除掉。所以建议你也使用 rsync ,把 @ @home 两个文件夹排除掉。

重新修改的系统配置文件,有三个。

第一个,/etc/fstab 文件,对应根节点,传递挂载参数 subvol=@

第二个,/boot/grub/grub.cfg 文件。里面所有引用根目录路径的地方,前面加上 /@/ 。然后在 linux 启动语句,加上启动参数 rootflags=subvol=@

第三个,efi 分区里的配置文件,EFI/deepin/grub.cfg 。将 set prefix 语句改为:set prefix=($root)'/@/boot/grub'

最后还有一个疑问,你的 / 确定是在 btrfs 文件系统内吗?

Reply View the author
魔法师
deepin
2022-10-27 22:25
#3
HighAvaPerCon

吐槽一下论坛设置,不熟悉markdown,没有使用Markdown编辑器,但排版依然按照markdown来,总体乱糟糟的

由于这个编辑器的问题,一些 markdown 高手也会因为自动调整格式而产生不愉快的体验

1. 普通编辑器基本没有这种问题

2. 只有论坛中的编辑器有这种体验

Reply View the author
HighAvaPerCon
deepin
2022-10-28 03:22
#4
铁山老道孔乙己

我觉得1、2、都没有问题,问题在第3,第3步存在两个问题。

问题一、如果是一个正在运行的系统,你这么 mv 移动了,你说它还能运行吗?所以,还得 live cd。

问题二、 mv /mnt/ /mnt/@ 。@相当于 mnt下的一个子目录,是不是循环嵌套了?还是一个子目录一个子目录移动吧,根目录下也就十几个子目录吧!我没有用过 mv ,一般用 rsync ,使用 --exclude 参数把不需要的子目录给排除掉。所以建议你也使用 rsync ,把 @ @home 两个文件夹排除掉。

重新修改的系统配置文件,有三个。

第一个,/etc/fstab 文件,对应根节点,传递挂载参数 subvol=@

第二个,/boot/grub/grub.cfg 文件。里面所有引用根目录路径的地方,前面加上 /@/ 。然后在 linux 启动语句,加上启动参数 rootflags=subvol=@

第三个,efi 分区里的配置文件,EFI/deepin/grub.cfg 。将 set prefix 语句改为:set prefix=($root)'/@/boot/grub'

最后还有一个疑问,你的 / 确定是在 btrfs 文件系统内吗?

感谢大佬指导迁移后要修改的文件,这些都是其他地方没看到的,还好没开始操作,不然就出问题了

至于你提的第二个,找了但是没找到,能详细说说吗

另外,我可以在liveCD下用btrfs subvol snapshot迁移吗

回复最后的提问:在此之前,用 btrfs subvol list /mnt是找不到子卷的,刚刚创建了几个

Reply View the author
HighAvaPerCon
deepin
2022-10-29 02:31
#5
魔法师

由于这个编辑器的问题,一些 markdown 高手也会因为自动调整格式而产生不愉快的体验

1. 普通编辑器基本没有这种问题

2. 只有论坛中的编辑器有这种体验

不知道迟点会不会改变,希望会变好

Reply View the author
HighAvaPerCon
deepin
2022-10-29 03:08
#6
enuentry 'Deepin 20.7.1 GNU/Linux' --class deepin --class gnu-linux --class gnu --class os $menue
try_id_option 'gnulinux-simple-28a07e0d-1af7-4207-996e-8080f80e1a81' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod btrfs
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  28a07e0d-1af7-4207-996e-8080f80e1a81
else
search --no-floppy --fs-uuid --set=root 28a07e0d-1af7-4207-996e-8080f80e1a81
fi
linux	/boot/vmlinuz-5.18.4-amd64-desktop-hwe root=UUID=28a07e0d-1af7-4207-996e-8080f80e1a81
ro  splash quiet  DEEPIN_GFXMODE=$DEEPIN_GFXMODE
initrd	/boot/initrd.img-5.18.4-amd64-desktop-hwe
boot
}

我该从哪里入手修改呢

Reply View the author