使用f2fs作为根分区安装liunx
前言
本实验参考教程链接:固态硬盘使用f2fs作为根分区安装linux
实验步骤
-
准备
- 准备两个u盘,一个用于安装操作系统,一个用于放 liveCD系统或者一个用于安装linux系统和进入liveCD系统,一个用于备份文件。
- 使用电脑上自带的启动盘制作工具和下载好的镜像文件***.iso进行启动盘制作
- 也可以选择使用命令制作 我使用的是这个命令,这样可以在后续步骤中将这个系统盘当做liveCD系统使用
1.lsblk
//查看U盘盘符目录,我的目录为:/dev/sdb
2.cd Dekstop
(Dekstop为存放镜像文件目录)
2.dd if=***.iso of=/dev/sdb bs=1M
//输入这个命令后终端中没有信息输出,需要等待一段时间,关于dd
命令可以自行搜索或者man
手册查看命令解释。
-
安装UOS系统
- 正常安装,进入安装界面
- 手动分区:将所有分区删除后重新手动分区
sda1: EFI(EFI系统分区)
sda2: BOOT分区,ext4
sda3: 根分区,ext4
sda4, 交换分区,swap - 安装完成后进行联网系统激活。
- 进入开发者模式并重启。
- 安装f2fs-tools工具
sudo apt update
sudo apt install f2fs-tools
- 在终端中验证f2fs工具是否安装成功
mkfs.(TAB键)
如果在TAB补全命令后可以看到f2fs候选命令说明安装成功。则可以进行下一步操作。 - initrd镜像文件中加载f2fs模块
sudo vim /etc/initramfs-tools/modules
- 在文件末尾添加如下代码
f2fs crc32_generic crc32_intel
-
update-initramfs -u
//更新initrd
- 通过以上步骤,就可以保证备份根目录前,initrd镜像文件中存在f2fs模块了,能支持f2fs根分区引导了。
- 将用于备份的U盘插入USB口并格式化为f2fs
lsblk -f
//查看备份U盘的序号,我的电脑上备份U盘序号为sda
·sudo mkfs.f2fs /dev/sda· //将备份U盘格式化为F2FS格式
-
备份根分区
- 关机重启
- 使用LiveCD的U盘启动后进入live系统
- 进入live系统后将格式化后的备份U盘插入到电脑上
- 执行
lsblk -l
//查看UOS系统分区的序号和备份U盘序号sudo mkdir /tmp/3
sudo mkdir /tmp/u
mount /dev/nvme0n1p3 /tmp/3
//把根分区挂载到目录 /tmp/3 下mount /dev/sdb /tmp/u
//将备份用的u盘挂载到目录 /tmp/u 下cd /tmp/3
//cd到ssd的根分区tar cpf /tmp/u/root.tar .
//将当前目录(根分区)下的所有文件备份到/tmp/u/root.tar文件。注意,这里有个英文点号。此时硬盘根分区已经备份到备份u盘中了,依然运行live系统,不退出。
-
格式化硬盘linux根分区为f2fs 此时在上一步的live系统中,不要退出
sudo apt update
-
sudo aot install f2fs-tools
//给live系统安装f2fs-tools工具 -
umount /dev/nvme0n1p3
//取消根分区的挂载,准备格式化分区为f2fs -
fdisk /dev/nvme0n1p3
//进入fdisk的交互命令中p //执行p命令查看当前分区,找到硬盘的linux根分区(如前文说的,通过分区大小和序号判断是不是linux根分区) d //执行d命令删除硬盘linux根分区 n //执行n命令新建分区 w //执行w命令将刚才的变更写入硬盘
-
sudo mkfs.f2fs /dev/nvme0n1p3
//将nvme0n1p3分区格式化成f2fs格式(执行前,务必使用fdisk -lu /dev/nvme0n1p3来确认根分区是哪个,因为序号会在上面的分区操作中发生变化) -
sblk -f
//现在就可以看到硬盘的linux根分区变成f2fs格式了。 - 保持live系统,不退出,进行下一步。
-
恢复备份
-
mount /dev/nvme0n1p3 /tmp/3
//将上一步格式化后的硬盘分区挂载到目录**/tmp/3** 下 cd /tmp/3
-
tar xpf /tmp/u/root.tar
//恢复根分区备份 - 修正UUID
- 上面删分区、建分区操作导致uuid变化,需要修正uuid
-
sblk -f
//获取f2fs根分区的uuid -
sudo vi /tmp/3/etc/fstab
//找到根分区的uuid修改成正确的值
-
-
更新grub (在终端中输入以下命令)
mount /dev/nvme0n1p2 /tmp/3/boot //把ssd上的boot分区挂在到根分区的boot目录 mount /dev/nvme0n1p1 /tmp/3/boot/efi //把ssd上的esp分区挂到根分区boot目录的efi目录下 mount --bind /dev /tmp/3/dev mount --bind /proc /tmp/3/proc mount --bind /sys /tmp/3/sys mount --bind /run /tmp/3/run chroot /tmp/3 //chroot到硬盘的UOS 即电脑上面安装的UOS系统 update-grub2 //可能会报错,但是不要紧
-
进入F2FS分区上的linux系统
- 关机
- 拔掉系统U盘和备份U盘
- 重启
-
非常感谢原作者的技术分享!