树莓派使用f2fs作为根文件系统

前言

在TF卡、固态硬盘之类的nand存储介质上,f2fs比起ext4之类的文件系统在性能和寿命上都有较大优化。所以我决定使用f2fs来作为我树莓派3B的根分区。

操作简述

1.树莓派安装64位Raspberry PI OS Lite系统,此时树莓派TF卡根分区是ext4文件系统。
2.下载Debian LiveCD ISO镜像并刻录到U盘。
3.PC上,用U盘启动Debian liveCD系统,在Debian liveCD系统中用tar命令备份树莓派TF卡的根分区。
4.在PC的Debian liveCD系统中把TF卡的根分区格式化成f2fs。
5.在PC的Debian liveCD系统中使用tar命令将备份的系统恢复到f2fs的根分区。

详细操作步骤

1. 给树莓派安装Raspberry PI OS Lite

这里要用到树莓派官方的Raspberry Pi Imager镜像写入工具给TF卡写镜像。操作系统要选64位的,64位的才能更好发挥出树莓派3B的arm64处理器性能。用Raspberry PI OS Lite版(其实就是debian11),Lite版不带桌面环境,体积小。树莓派启动后,执行lsblk -f 发现树莓派的根分区文件系统是ext4. Raspberry PI OS Lite的是Linux 6.1内核的,能支持f2fs,所以不需要修改initrd。

2. 刻录Debian liveCD启动U盘

1-从163镜像站下载五桌面环境的Debian liveCD ISO镜像文件。http://mirrors.163.com/debian-cd/current-live/amd64/iso-hybrid/debian-live-12.5.0-amd64-standard.iso
2-windows下用ultrISO,linux下用dd命令把liveCD镜像写入U盘。ultraISO:用“启动”-->“写入硬盘映像”功能。dd命令(假设u盘对应/dev/sdX1):dd if=镜像iso文件 of=/dev/sdX1 bs=1M
3-把制作好的U盘插入PC,启动Debian Live系统。

3. 备份TF卡Linux根分区

   把已经插入TF卡的读卡器链接到PC。
   sudo su -  # debian live系统切换到root用户
   mkdir /mnt/raspi-root; mount /dev/sdX2  /mnt/raspi-root  # 把还是树莓派TF卡linux根分区挂载到raspi-root目录。这里假设树莓派TF卡的linux根分区位于sdX2(可以用lsblk -f命令或fdisk -lu命令判断)
   cd /mnt/raspi-root  #切换到树莓派TF卡的linux根分区
   tar zcpf /tmp/rootfs.tar.gz --one-file-system --exclude=lost+found --exclude=dev  .  # 将当前目录(TF卡linux根分区)下的所有文件备份到/tmp/rootfs.tar文件。这里是冷备份,排除掉lost+found、dev两个目录即可,proc、sys、boot目录是空的,不需要排除它们。*** 注意 ***,这里有个英文点号,表示当前目录(TF卡linux根分区挂载目录)。此时树莓派TF卡linux根分区已经备份到live系统的/tmp路径下了。备份好后,千万不要关机,live系统中的数据会丢失,当然你也可以备份到另一个U盘,这样意外关机也不怕。
   ls -l >/tmp/raspi-rootfs-dir.txt  # 把树莓派TF卡linux根分区的目录详情(比如目录名、权限等)记录到备份u盘的txt文件,方便后面恢复使用。

4. 格式化树莓派TF卡linux根分区为f2fs文件系统

apt install f2fs-tools # 此时live系统就具备了格式化f2fs的能力
umount /dev/sdX2   # 取消树莓派TF卡linux根分区的挂载,准备格式化分区为f2fs
mkfs.f2fs -f /dev/sdX2  # 执行建立f2fs文件系统,并格式化。这里假设TF卡linux根分区在live系统中是/dev/sdX2,你可以在执行前,使用lsblk -f或fdisk -lu /dev/sdX命令来确认TF卡linux根分区是哪个。

5.恢复树莓派系统备份

    mount /dev/sdX2 /mnt/raspi-root  #挂载树莓派tf卡linux根文件系统
    cd /mnt/raspi-root
    mkdir dev; chmod 755 dev  # 前面tar备份的时候排除了dev目录,所以这里要新建dev目录。
    tar xpf /tmp/raspi-root/rootfs.tar.gz --numeric-owner  # 恢复树莓派系统到TF卡新的f2fs根分区
    vi etc/fstab  # 修改树莓派TF卡分区下的etc/fstab文件中的ext4文件系统为f2fs,我看里面的分区UUID和ext4下的没有变化,所以文件中的分区UUID不用动
    mkdir /mnt/tf-boot; mount /dev/sdX1 /mnt/tf-boot  #把树莓派TF卡boot分区挂载到/mnt/tf-root目录下,这里假设树莓派TF卡的boot分区在live系统中位于/dev/sdX1
    vi /mnt/tf-root/cmdline.txt  #修改树莓派TF卡boot分区下的cmdline.txt中的ext4文件系统为f2fs。最后umount树莓派TF卡的boot分区和linux根分区,拔卡,插入树莓派,启动。大功告成。

posted on 2024-02-29 21:38  进取有乐  阅读(92)  评论(2编辑  收藏  举报

导航