树莓派修改根文件系统为f2fs

目录

  • 前言
  • 操作简述
  • 我的实际操作步骤
    • [1. 准备](#1. 准备)
    • [2. 查看树莓派分区信息](#2. 查看树莓派分区信息)
    • [3. 备份根分区](#3. 备份根分区)
    • [4. 格式化树莓派TF卡根分区为f2fs文件系统](#4. 格式化树莓派TF卡根分区为f2fs文件系统)
    • 5.恢复备份

前言

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

操作简述

复制代码
1.使用常规流程给树莓派3B安装Raspberry PI OS(其实就是debian11),此时根分区是ext4文件系统。关机,拔掉TF卡。
2.启动debian liveCD系统,然后读卡器插入TF卡,挂载TF卡根分区,使用tar命令备份TF卡下的根分区。
3.在live系统安装f2fs-tool后把TF卡的根分区格式化成f2fs, 再使用tar命令将刚才的系统备份恢复到f2fs的根分区。
4.tar恢复完系统后,修改/etc/fstab和cmdline.txt中文件系统为f2fs。

我的实际操作步骤

1. 准备

复制代码
为了方便和安全起见,最好准备两个u盘:
   一个用于存放树莓派操作系统的备份。
   一个用于启动debian liveCD,可以用ultraISO或dd将下载的debian liveCD的ISO文件刻录到u盘。

2. 查看树莓派分区信息

复制代码
使用lsblk -f命令我们发现树莓派的有两个分区,第一个分区是树莓派系统的启动分区,挂载到/boot,文件系统是fat32。第二个分区是根分区,挂载到/,文件系统是ext4。

3. 备份根分区

复制代码
   把已经插入TF卡的读卡器链接到PC,把备份U盘也插到PC上,使用刻录了liveCD的U盘启动,进入live系统。以下命令在live系统中执行。
   sudo su -  # live系统切换到root用户
   mkdir /tmp/raspi-root; mount /dev/sdX2  /tmp/raspi-root  # 假设树莓派TF卡的根分区位于sdX2(可以用lsblk -f命令或fdisk -lu命令判断), 这里把还是ext4的树莓派TF卡根分区挂载到/tmp/raspi目录
   mkdir /tmp/u; mount /dev/sdY1  /tmp/u  #这里假设/dev/sdY1是备份u盘的第一分区, 执行完命令后,备份树莓派系统用的u盘就挂载到/tmp/u目录了
   cd /tmp/raspi-root  #cd的树莓派TF卡的根分区
   tar zcpf /tmp/u/rootfs.tar.gz --one-file-system --exclude=lost+found --exclude=dev  .  # 将当前目录(TF的根分区)下的所有文件备份到/tmp/u/root.tar文件。这里是冷备份,排除掉lost+found、dev两个目录即可,proc、sys、boot目录是空的,不需要排除它们。*** 注意 ***,这里有个英文点号,表示当前目录(TF卡根分区挂载目录)。此时树莓派TF卡根分区已经备份到备份u盘中了。继续下面的第4大步
   ls -l >/tmp/u/raspi-rootfs-dir.txt  # 把树莓派TF卡根分区的目录详情记录到备份u盘的txt文件,方便后面恢复使用。

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

复制代码
1-apt install f2fs-tools # 此时live系统就具备了格式化f2fs的能力
3-umount /dev/sdX2   # 取消树莓派TF卡根分区的挂载,准备格式化分区为f2fs
4-fdisk /dev/sdX  # 进入fdisk的交互命令,操作树莓派TF卡
        执行p命令查看当前分区,找到树莓派TF卡的linux根分区(如前文说的,通过lsblk -f或fdisk -lu命令判断是不是linux根分区)
        执行d命令删除固态硬盘linux根分区
        执行n命令新建分区
        执行w命令将刚才的变更写入固态硬盘
   mkfs.f2fs  /dev/sdXn  # 执行前,务必使用lsblk -f或fdisk -lu /dev/sdX命令来确认根分区是哪个,因为序号会在上面的分区操作中发生变化。执行完毕后,使用lsblk -f就可以看到固态硬盘的linux根分区变成f2fs格式了。

5.恢复备份

复制代码
    mount /dev/sdX2 /tmp/raspi-root  
    cd /tmp/raspi-root
    mkdir dev; chmod 755 dev  # 前面tar备份的时候排除了dev目录,所以这里要新建。这里只是举个例子,对比第4步末尾的txt文件,缺什么目录就建什么目录,并修改权限。
    tar xpf /tmp/raspi-root/rootfs.tar.gz --numeric-owner  # 恢复树莓派系统到新的f2fs根分区
    vi etc/fstab  # 修改树莓派TF卡f2fs分区下的etc/fstab文件中的文件系统为f2fs,我看里面的分区UUID和ext4下的没有变化,所以文件中的分区UUID不用动
    mkdir /tmp/tf-boot; mount /dev/sdX1 /tmp/tf-boot  #把树莓派TF卡boot分区挂载到/tmp/tf-root目录下
    vi /tmp/tf-root/cmdline.txt  #修改树莓派TF卡boot分区下的cmdline.txt。最后umount树莓派TF卡的boot分区和根分区,拔卡,插入树莓派,启动。大功告成。
相关推荐
袁煦丞 cpolar内网穿透实验室18 小时前
精准模拟各种弱网场景!树莓派+ATC打造便携弱网网关。cpolar 内网穿透实验室第781个成功挑战
远程工作·树莓派·内网穿透·cpolar·弱网网关
Sheep Shaun1 天前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
小李独爱秋2 天前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
燃于AC之乐3 天前
【Linux系统编程】基础IO:从文件本质到系统操作
linux·文件系统·系统调用·文件描述符·基础io
_OP_CHEN3 天前
【Linux系统编程】(二十六)一文吃透 Ext 系列文件系统软硬链接:原理、实战与底层逻辑揭秘
linux·操作系统·文件系统·c/c++·硬链接·软链接·ext2文件系统
_OP_CHEN4 天前
【Linux系统编程】(二十五)从路径到挂载:Ext 系列文件系统的 “导航” 与 “整合” 核心揭秘
linux·操作系统·文件系统·c/c++·ext2文件系统·路径解析·挂载分区
cheniie9 天前
Nerves从Hello World到点亮LED
树莓派·elixir·nerves
未来可期LJ9 天前
【Linux 操作系统篇】文件系统 innode的理解
linux·文件系统
_OP_CHEN10 天前
【Linux系统编程】(二十四)深入 Ext2 块组内部:inode、数据块与目录的底层工作机制
linux·操作系统·文件系统·c/c++·inode·块组·数据块映射
_OP_CHEN11 天前
【Linux系统编程】(二十三)从块到块组:Ext2 文件系统核心架构的初步认识
linux·操作系统·文件系统·c/c++·ext2文件系统·磁盘分区·块组