文件系统挂载
在Linux工程项目进行测试时要储存重要的过程文件而文件又有可能过大时可以将文件存在某些闲置分区中例如某些容量比较大的备份分区。要注意的是本次工程实践的硬盘设备是NAND Flash闪存设备。查看分区运行cat /prop/mtd输出当前系统挂载的分区资源各列的含义依次为MTD 设备的编号标识符数字从 0 开始递增表示系统的物理闪存分区序号。分区大小单位字节通常以十六进制表示。擦除块大小单位字节即闪存的最小可擦除单元。分区的名称标签用于标识该 MTD 分区的用途如引导程序、内核、文件系统等。从中挑选合适的分区进行擦除文件系统初始化以及重新挂载。擦除分区挑选合适的分区后需要先将分区中原先的内容擦除可以运行flash_erase [选项] 设备节点 起始块偏移 擦除块数量例如flash_erase /dev/mtdblock0 5 12从第5块开始连续擦除12个块。如果没有集成flash管理工具也可以尝试使用内核级操作# 通过 MTD 字符设备直接操作dd if/dev/zero of/dev/mtdblock0 bs4096 count12 skip5dd指令是非常强大的数据操作指令块级操作dd操作的是数据块Blocks而非文件系统理解的单个文件。它能直接读取和写入磁介质扇区或文件内容因此可以用于处理原始设备如/dev/sda和普通文件。精确控制它对数据传输的来源(if)、去向(of)、块大小(bs)、块数量(count) 等都提供了非常精细的控制。文件名即一切它不关心文件的内容格式、类型它只负责忠实地拷贝字节。dd if输入文件 of输出文件 [选项]if输入文件(input file)。这是数据读取的来源。可以是普通文件如file.iso、物理磁盘设备如/dev/sda、分区如/dev/sda1甚至是标准输入stdin用if/dev/stdin或直接省略if但提供输入源。of输出文件(output file)。这是数据写入的目标。同样可以是普通文件、设备、分区或标准输出stdout用of/dev/stdout或省略of但提供输出目标。选项大小写敏感控制数据传输方式常见的包括关键选项详解bsBYTES块大小(blocksize)。定义一次读取和写入操作的字节数。使用较大的块如bs4M通常性能更好但使用较小的块如bs512可用于特定的精确操作。countBLOCKS要复制的块数量。仅拷贝指定数量的bs大小的块。如果不指定count和skipdd会一直读到输入文件的结束。skipBLOCKS在输入文件中跳过的块数量。在开始读取数据之前先跳过if文件开头的skip个bs大小的区域。常用于恢复备份中的特定分区。seekBLOCKS在输出文件中跳过的块数量。在开始写入数据之前先跳过of文件开头的seek个bs大小的区域从这里开始写入。用于将数据写入到目标设备的特定位置。statusLEVEL状态报告级别。控制传输进度信息statusprogress (GNU dd 特有)定期显示当前速度和传输完成的字节数。statusnone完全不输出状态信息。默认为statusnoxfer只显示统计摘要拷贝了多少字节、共用时间等。convCONVS转换选项(conversions)。这是一个强大的功能可以指定逗号分隔的参数列表notrunc不要截断输出文件。仅修改目标文件的部分内容时保持目标文件中未被修改区域内容的完整即使目标文件原本比你写入的数据量更大。这在使用dd修改磁盘分区上的单个文件内容时非常重要。sparse尝试检测输入块中的大量零字节并将其在输出文件中写成“稀疏文件”占用磁盘块较少。节省空间。noerror读取错误后继续处理而非终止。错误会被报告读取失败的块将被输出填充为全零假设未进行其他转换。sync用 NUL 字节填充每个输入块至ibs大小如果使用了非同obs的选项。这会影响bs,ibs,obs。常与noerror连用。ibsBYTES,obsBYTES输入块大小(input blocksize),输出块大小(output blocksize)。允许输入和输出块大小不同bs同时设置二者。当使用了convsync时输入块将被填充或截断至ibs。初始化文件系统由于存储设备是NADN Flash该分区又是作为日志保存分区有较高频率读写的需求因此需要把分区初始化为UBI(Unsorted Block Images) 分区进行块管理可以使用如下指令ubiformat /dev/device [options]-y强制执行操作跳过确认提示-s size指定擦除块大小单位字节-O size设置子页面大小针对 NAND 闪存优化-e count保留指定数量的擦除块作为备用区-f image从外部文件加载 UBI 镜像例如ubiformat /dev/mtd49值得注意的是每一次进行ubiformat系统会擦除该分区对于NAND设备而言基于寿命的考虑为了不产生更多的坏块应该避免频繁做这样的操作。然后把UBI设备挂载到内核到此系统会在/dev/下创建相应的ubi设备之后即可通过/dev/ubi*对该设备进行操作运行如下指令ubiattach -m MTD设备号 -d UBI设备号 [其他选项]-m MTD设备号指定要附加的 MTD 设备编号如 /dev/mtdX 中的 X。-d UBI设备号指定分配给 UBI 设备的编号如 0 对应 /dev/ubi0。-p MTD分区路径直接指定 MTD 分区路径如 /dev/mtd1替代 -m。-O vid_hdr_offset指定 VID 头偏移量适用于非标准闪存布局。-b max-beb-per1024: 预留一定数量的块给未来可能损坏的块。例如ubiattach -m /dev/mtd49 -d 15 -b 2Attach成功之后可以使用ubinfo查看ubi分区的信息ubinfo device_num例如~ # ubinfo -d 15ubi15Volumes count: 0Logical eraseblock size: 253952 bytes, 248.0 KiBTotal amount of logical eraseblocks: 80 (20316160 bytes, 19.3 MiB)Amount of available logical eraseblocks: 68 (17268736 bytes, 16.4 MiB)Maximum count of volumes 128Count of bad physical eraseblocks: 0Count of reserved physical eraseblocks: 8Current maximum erase counter value: 0Minimum input/output unit size: 4096 bytesCharacter device major/minor: 490:0其中需要关注实际可用的空间大小Amount of available logical eraseblocks。挂载分区到文件夹在UBI分区初始化之后还需要把分区划分成卷才可以挂载到文件夹上这是因为UBI分区并不是一个逻辑分区本质上UBI分区一个eraseblock的池子划分卷可用如下指令ubimkvol [选项] UBI设备节点-n, --vol_idID指定要创建的卷的 ID 号。这是一个整数 如-n 0。-s, --vol_sizeSIZE | max指定卷的大小。可以使用字节单位后缀如2048KiB,512MiB。使用-s max强烈推荐的方式表示使用 UBI 设备上所有剩余的可用空间来创建该卷。-N, --vol_nameNAME为卷设置一个可读的名称字符串。该名称在 UBI 卷操作和格式化时非常有用可以帮助识别。非常重要这对于后续格式化和挂载很有用-t, --vol_typedynamic|static指定卷的类型dynamic: 这是最常见和最推荐的类型。用于可变大小数据如文件系统。static: 仅供存放固定大小的原始数据块如 bootloader 镜像。使用较少。例如ubimkvol /dev/ubi15 -N factory -s 16Mib这里将之前创建的UBI分区划分为一个卷0大小为之前使用的ubinfo中所示可用空间。然后就可以进行文件夹的挂载了这里可以使用mount指令如mount -t ubifs /dev/ubi15_0 /tmp/log当然前提是文件夹存在可以先用mkdir创建文件夹mkdir /tmp/log

相关新闻

【共创季稿事节】鸿蒙原生 ArkTS 布局实现 Column + List + Navigation 协作导航 — 从列表渲染到页面切换的完整实践

【共创季稿事节】鸿蒙原生 ArkTS 布局实现 Column + List + Navigation 协作导航 — 从列表渲染到页面切换的完整实践

目录 前言 三大核心组件概述 2.1 Column —— 弹性列布局 2.2 List —— 虚拟滚动列表 2.3 Navigation —— 页面导航容器 列表—导航协作模式的设计思想 3.1 为什么需要协作布局 3.2 数据驱动 vs DOM 操作 3.3 状态驱动的页面切换 项目搭建与配置 4.1 工程结构总览 4.2 主题色…

2026/6/30 23:51:43阅读更多 →
Loop Engineering 实操篇:手把手教你写第一个 Loop

Loop Engineering 实操篇:手把手教你写第一个 Loop

Loop Engineering 实操篇:手把手教你写第一个 Loop适合人群:用过 Claude Code 的开发者、想让 AI 自动修 Bug 的效率控、上篇看完想动手的技术人01 先别急,你真需要 Loop 吗上一篇我们聊了 Loop Engineering 是什么。评论区问得最多的一句&am…

2026/6/30 23:46:43阅读更多 →
Redis入门介绍

Redis入门介绍

Redis入门介绍Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存&am…

2026/6/30 23:46:43阅读更多 →
两种创建线程方式的区别

两种创建线程方式的区别

继承 Thread 类&#xff08;Thread 子类&#xff09; // 1. 继承Thread类重写run() class MyThread extends Thread { private int ticket 10; Override public void run() {for (int i 0; i < 10; i) {if (ticket > 0) {System.out.println(Thread.currentThread().ge…

2026/7/2 2:08:30阅读更多 →
2026算法面试必考!24道梯度下降与优化器硬核解析(从SGD到AdamW,建议收藏)

2026算法面试必考!24道梯度下降与优化器硬核解析(从SGD到AdamW,建议收藏)

大家好&#xff0c;我是你们的技术伙伴。&#x1f44b;在深度学习的世界里&#xff0c;优化器是模型训练的“发动机”。它决定了模型如何根据损失函数的梯度来更新参数&#xff0c;直接影响着模型的收敛速度和最终性能。在2026年的今天&#xff0c;虽然各种新型架构层出不穷&am…

2026/7/2 2:08:30阅读更多 →
INT8 量化的数学本质:从浮点精度损失到推理加速的工程权衡

INT8 量化的数学本质:从浮点精度损失到推理加速的工程权衡

INT8 量化的数学本质&#xff1a;从浮点精度损失到推理加速的工程权衡 一、权重的"冗余精度"&#xff1a;为什么 BF16 的大部分比特都在浪费显存 大模型训练以 BF16 精度保存参数——每个权重占用 16 比特。但训练完成后&#xff0c;99% 的权重落在 [-1.0, 1.0] 区间…

2026/7/2 2:08:30阅读更多 →
检索增强从零落地:检索增强系统的索引、召回与评测

检索增强从零落地:检索增强系统的索引、召回与评测

检索增强从零落地&#xff1a;检索增强系统的索引、召回与评测一、RAG 不是向量库加聊天框 RAG 经常被简化成“文档切片、写入向量库、检索后塞给模型”。这个流程能做演示&#xff0c;但很难支撑生产。真实系统里&#xff0c;文档会更新&#xff0c;权限会变化&#xff0c;用户…

2026/7/2 2:08:30阅读更多 →
基于SpringBoot+Vue的日常办公用品直售推荐系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

基于SpringBoot+Vue的日常办公用品直售推荐系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

&#x1f4a1;实话实说&#xff1a;CSDN上做毕设辅导的都是专业技术服务&#xff0c;大家都要生活&#xff0c;这个很正常。我和其他人不同的是&#xff0c;我有自己的项目库存&#xff0c;不需要找别人拿货再加价。我就是个在校研究生&#xff0c;兼职赚点饭钱贴补生活费&…

2026/7/2 2:08:30阅读更多 →
单纯换同义词没用!深度语义改写原理,解锁高效降重方式

单纯换同义词没用!深度语义改写原理,解锁高效降重方式

2026 年知网、维普、万方、Turnitin 等学术检测系统已全面升级AIGC 双检测模块&#xff0c;不再只依靠字符串匹配判定重复&#xff0c;而是通过困惑度&#xff08;Perplexity&#xff09;、文本突发度&#xff08;Burstiness&#xff09;、N-gram 词频分布三大统计特征识别 AI …

2026/7/2 2:03:30阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月&#xff0c;Boris Cherny 公开宣布自己卸载了 IDE。一时间&#xff0c;Vibe Coding 成了全行业最热的话题。6个月后&#xff0c;当我们回过头来拉一份真实账本&#xff0c;发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/1 4:42:14阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言&#xff1a;审计结束三个月了&#xff0c;审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间&#xff0c;内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中&#xff0c;审计…

2026/7/1 5:19:01阅读更多 →
塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器&#xff1a;3分钟掌握海拉鲁世界自由定制技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 想在《塞尔达传说&#xff1a;旷野之息…

2026/7/2 0:03:01阅读更多 →
告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

在本地开发环境使用云厂商 CLI 时,传统的 AccessKey(AK)方式需要手动创建、下载和保管密钥,不仅繁琐,还存在泄漏风险。其实,主流云平台都已提供基于 OAuth 2.0 的免密认证方案,让开发者可以通过浏览器登录一次性完成授权,CLI 自动管理临时凭证的刷新,兼顾了便利与安全…

2026/7/2 0:03:01阅读更多 →
基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

1. 项目背景与核心价值在嵌入式系统开发领域&#xff0c;高精度定位与导航一直是极具挑战性的技术方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF&#xff08;13自由度&#xff09;传感器组合与PIC32MZ2048EFH100高性能MCU的协同工作&#xff0c;…

2026/7/2 0:03:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/2 0:33:58阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/2 1:32:11阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/2 1:50:13阅读更多 →