我应该如何将 ext4 转换为 F2FS 以供主系统使用?

我应该如何将 ext4 转换为 F2FS 以供主系统使用?

我能够启动一次,但无法复制全新安装。这是我尝试并发布的列表,希望其他人可以解决这个问题。

我采用了散弹枪方法 + 最终选择了使用 Calamares 作为安装程序的发行版。我将 /usr 分区为 ext4,因为 GRUB 的文件位于那里,而我在将 /usr 分区为 F2FS 时不断遇到问题。我猜想问题出在 GRUB 无法从 F2FS 文件系统读取其文件。

/boot/efi - FAT32
/usr - ext4
/ - F2FS

我提取了安装前的 ISO 并发出了以下命令:

add-apt-repository ppa:rodsmith/refind; apt update; apt install f2fs* libf2fs* gparted -y; apt install refind

/etc/initramfs-tools/modules 中加载的模块列表

crct10dif_pclmul
crc32_pclmul
libcrc32c
f2fs

然后用 保存update-iniramfs -u

现在启动到 Live CD。我尝试使用 kvpm 创建逻辑卷(并使用 mkfs.f2fs 将它们格式化为 f2fs),但安装写入失败。如果由于以下原因而失败,unpackfs那么我会在仍在实时环境中时 chroot 到分区中:

mount /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot/efi
mount --bind /dev /mnt/dev
. . .
chroot /mnt 
apt install refind # or apt install refind --reinstall
cp -r /usr/share/refind/refind/ /boot/efi/EFI/refind
cd /boot/efi/EFI/refind/drivers_x64
curl -a http://efi.akeo.ie/downloads/efifs-1.3/x64/f2fs_x64.efi -o f2fs_x64.efi

我尝试过但失败的其他方法:

  • 将整个驱动器作为 F2FS 运行,并使用 FAT32 启动分区,无法加载操作系统

  • 将 ext 分区复制到 F2FS 失败。GRUB 2.02 无法正确读取 F2FS UUID。编辑 /boot/grub/grub.cfg 以将标签更改为 UUID 不起作用。

  • 构建了 GRUB 2.03 的当前分支,但在运行时遇到失败make check TESTS='f2fs_test';依赖项列表对于新手(我)来说是不完整的。

  • 将根分区为 ext4,然后将其余部分分区为 F2FS。GRUB 的文件位于 /usr。

  • 尝试将启动格式化为 NTFS,以保留双启动 Windows 和符号链接 GRUB 所需文件的能力(FAT32 不行)。此方法无效,因为 NTFS 不被视为 ESP 分区,无论标志如何。

我使用的参考文献:

https://ubuntuforums.org/showthread.php?t=2326934&p=13705533#post13705533

https://github.com/void-linux/void-packages/issues/4436

http://www.rodsbooks.com/refind/

http://efi.akeo.ie/

https://www.phoronix.com/scan.php?page=news_item&px=GRUB-Now-Supports-F2FS

答案1

警告:由于 F2FS 缺乏对 selinux 的支持,您可能无法启动桌面环境,据我所知,archlinux 支持 f2fs 作为根分区,Fedora linux 总是会失败,请在操作前先搜索一下

首先,你应该为 /boot 创建一个 512MB 的 ext4 分区,为 / 创建一个 f2fs 分区,我应该注意到 F2FS 无法缩小大小,我建议你创建一个比原始大小大几 GB 的分区

然后将 /boot 和 / 复制到新位置

# rsync -aAXv /boot /path/to/newboot/folder
# rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/newroot/folder

修改新的 fstab 文件,将 uuid 更改为新分区,您可以执行blkid以检查新分区的 uuid

执行update-grub生成新的启动选项

如果你堆叠在 rootfs 中,请尝试使用 fallback img 进行启动

当你启动到新系统时,通过执行重新安装 grubgrub-install

相关内容