前言

在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,文件系统是vfat。第二个分区是根分区,挂载到/,文件系统是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的交互命令中
执行p命令查看当前分区,找到树莓派TF卡的linux根分区(如前文说的,通过lsblk -f或fdisk -lu命令判断是不是linux根分区)
执行d命令删除固态硬盘linux根分区
执行n命令新建分区
执行w命令将刚才的变更写入固态硬盘
执行mkfs.f2fs /dev/sdXn (执行前,务必使用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分区和根分区,拔卡,插入树莓派,启动。大功告成。

树莓派修改根文件系统为f2fs的更多相关文章

  1. Ramdisk根文件系统映像的修改与创建

    本文简述Ramdisk根文件系统映像的修改以及创建,并附相关脚本以实现自动化配置,而根文件系统的制作过程请网上自行搜索.相关过程尽可能以图的方式展示出来,重在说明操作的过程,仅供参考. Ramdisk ...

  2. 如何在 Linux 虚拟机上扩展根文件系统

    问题描述 通过 Azure 平台部署的 Linux 虚拟机默认的根文件系统容量有限,需要进行扩展. 问题分析 由于 Azure 平台部署的 Linux 虚拟机默认根文件系统容量比较小,客户在使用过程中 ...

  3. uboot通过NFS挂载ubuntu根文件系统

    由于工作需要,在做app开发或系统移植时,经常需要编辑系统后重新烧写异常麻烦.通过NFS挂载根文件系统就不需要每次更改系统后再进行编译和烧写,等开发完成后一次烧写即可完成. 一.准备材料 可以根据自己 ...

  4. Linux之搭建自己的根文件系统

    Hi!大家好,我是CrazyCatJack.又和大家见面了.今天给大家带来的是构建Linux下的根文件系统.希望大家看过之后都能构建出符合自己需求的根文件系统^_^ 1.内容概述 1.构造过程 今天给 ...

  5. linux根文件系统制作

    在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...

  6. 嵌入式Linux驱动学习之路(八)创建最小的根文件系统

    busybox 在配置busybox,在是否选择要静态链接库时,在静态下,busybox中的工具不需要动态链接库,能够直接运行.而用户自己编写的程序如果需要动态链接库,还是依然需要有. 如果是动态链接 ...

  7. Yocto开发笔记之《根文件系统裁剪》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  8. zju(4)使用busybox制作根文件系统

    1.实验目的 1.学习和掌握busybox相关知识及应用: 2.学会使用交叉编译器定制一个busybox: 3.利用该busybox制作一个文件系统: 4.熟悉根文件系统组织结构: 5.定制.编译ra ...

  9. 用Qemu模拟vexpress-a9 (四) --- u-boot引导kernel,用nfs挂载根文件系统

    环境介绍 Win7 64 + Vmware 11 + ubuntu14.04 32 u-boot 版本:u-boot-2015-04 Linux kernel版本:linux-3.16.y busyb ...

  10. 使用BusyBox制作根文件系统【转】

    本文转载自:http://www.cnblogs.com/lidabo/p/5300180.html 1.BusyBox简介 BusyBox 是很多标准 Linux 工具的一个单个可执行实现.Busy ...

随机推荐

  1. Spring Boot集成Actuator

    一.Spring-Boot-Actuator简介 官网:https://docs.spring.io/spring-boot/docs/2.3.4.BUILD-SNAPSHOT/reference/h ...

  2. 官宣!Python 开发者大会(PyCon US)提供在线订阅啦!

    今年一开年,我们就遇到了一个天大的"黑天鹅"事件,如今它已蔓延成为了一个全球性事件,而且似乎还要持续一段挺长的时间. 各行各业的人们都受到了牵连,各种计划和安排也要被迫作出调整.今 ...

  3. MySQL存储过程、索引、分表对比

    MySQL存储过程.索引和分表是用于提高查询效率的三种不同方法,它们各自对查询效率有不同的影响和应用场景.以下是它们的对比: MySQL存储过程: 影响查询效率: 存储过程通常不直接影响查询效率,因为 ...

  4. Asp .Net Core 部署在阿里云Centos上 :使用Docker部署

    参照 https://www.cnblogs.com/xiaxiaolu/p/9973631.html 运行环境 使用SecureCrt连接服务器 1.阿里云ECS 4核 16 GiB 8Mbps 带 ...

  5. windbg-windows调试工具来抓端游crash dump

    windbg下载有两种方式: Install WinDbg - Windows drivers | Microsoft Learn 从微软应用商店下载 dump上的windows的局部变量解析部分进行 ...

  6. Prompt learning 教学[案例篇]:文生文案例设定汇总,你可以扮演任意角色进行专业分析

    Prompt learning 教学[案例篇]:文生文案例设定汇总,你可以扮演任意角色进行专业分析 1.角色扮演 行为 Prompt写法 "牙医" ""我想让你 ...

  7. PE结构:VA&RVA&FOA 转换复习

    复习一下,不然会忘 1.imagebase 映像基地址 ,默认是0x400000 2.va 虚拟地址,载入OD后的地址,已经映射到内存的地址. 计算实际装入地址 VA imagebase (映像基址) ...

  8. 月薪40K+的测试老兵,测试开发学习实战心得分享

    1. 前言 大家好,我是Arthur,拥有超过10年以上的银行测试经验,目前在一家互联网创业公司担任测试经理.在我们那个年代,基本上都是不会写代码的做测试工作,而且基本都是纯手工:最近几年,测试开发开 ...

  9. MD5算法:高效安全的数据完整性保障

    摘要:在数字世界中,确保数据完整性和安全性至关重要.消息摘要算法就是一种用于实现这一目标的常用技术.其中,Message Digest Algorithm 5(MD5)算法因其高效性和安全性而受到广泛 ...

  10. 从零开始的react入门教程(五),了解react中的表单,何为受控组件与非受控组件

    壹 ❀ 引 我们在从零开始的react入门教程(四),了解常用的条件渲染.列表渲染与独一无二的key一文中介绍了react中常用的条件渲染操作,比如三元运算符,逻辑运算符等,结合react组件或者re ...