我正在使用嵌入式设备,并希望能够通过

Linux调整其MTD分区大小而无需重新启动.

问题是我的Linux映像大小已经增加,它所在的当前MTD分区(mtd0)现在太小了.但是,它之后的分区(mtd1)是用于存储配置信息的JFFS2部分,因此重新调整大小不是一个选项,因为配置可能会丢失.

我的目标是:

1. Copy contents of JFFS2 into /tmp/

2. Unmount JFFS2 from mtd1

3. Increase the starting offset + reduce size of mtd1 by X bytes (or delete mtd1 and create new mtd of proper size and offset)

4. Mount JFFS2 on new mtd1 and restore contents from /tmp/

5. Increase the size of mtd0 by X bytes

6. Burn new (larger) Linux image into mtd0 (the new image will contain a device tree with an updated partition structure)

7. Reboot

几年前我找到了“mtd-utils”的补丁:

http://article.gmane.org/gmane.linux.drivers.mtd/30949

http://article.gmane.org/gmane.linux.drivers.mtd/30950

http://article.gmane.org/gmane.linux.drivers.mtd/30951

以此为指导,我能够编写内核和用户空间代码来创建一个新的MTD分区,我可以在其上安装JFFS2.但是,此代码无法正确删除分区.即使从mtd1卸载JFFS2并调用put_mtd_device,当调用del_mtd_device时,内核会抱怨:

user.notice kernel: Removing MTD device #1 (jffs2) with use count 1

我想知道的是:

1. How to fix the patch to allow deleting my old mtd1

2. How to change the starting offset of mtd1 instead of creating/deleting partitions

我尝试联系该补丁的作者,但他们的电子邮件不再有效,所以我将不胜感激任何建议!

更新:

似乎mtdchar.c中的mtd_open()触发了get_mtd_device(),这可能会占用额外的usecount增量.但我的用户空间应用程序需要调用分区上的open()来发送一个ioctl()来删除分区:/ catch 22?有没有更正确的方法呢?

linux内核mtd分区,linux-kernel – 在运行时调整MTD分区大小相关推荐

  1. 编译Linux内核没有zImage,Linux 编译系统的简单介绍与内核编译安装

    这里不只是讲怎样编译.安装Linux内核的,更主要的是介绍内核的编译系统和各个重要的文件.最后还利用学到的编译.安装Linux内核去修改Linux的01调度变成随机调度.如果你只是需要编译.安装内核的 ...

  2. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...

  3. 武汉linux内核好找吗,Linux内核入门

    Linux内核入门 收藏 如何获取Linux内核源代码 下载Linux内核当然要去http://www.kernel.org/了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补 ...

  4. 低温linux内核启动readl,Linux内核启动流程分析(一)

    很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) 1.依据arch/ar ...

  5. Linux 内核及 GNU/Linux 操作系统的基本体系结构

    1. Linux 内核简介 内核:在计算机科学中是一个用来管理软件发出的数据 I/O(输入与输出)要求的计算机程序,将这些要求转 译为数据处理的指令并交由中央处理器(CPU)及计算机中其他电子组件进行 ...

  6. 手机linux内核版本了解,Linux内核版本介绍与查询

    Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...

  7. 【Linux 内核】编译 Linux 内核 ⑤ ( 查看 .config 编译配置文件 | 正式编译内核 )

    文章目录 一.查看 .config 编译配置文件 二.正式编译内核 一.查看 .config 编译配置文件 在上一篇博客 [Linux 内核]编译 Linux 内核 ④ ( 打开 Linux 内核编译 ...

  8. 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )

    文章目录 一.下载 Linux 内核 1.下载最新版本 Linux 内核 2.下载指定版本 Linux 内核 二.Linux 内核版本号含义 一.下载 Linux 内核 1.下载最新版本 Linux ...

  9. linux内核err实现,Linux中IS_ERR()函数的理解

    在Linux源码中的fs部分,经常会碰到这样的函数(位于kernel/include/linux/fs.h): /* * Kernel pointers have redundant informat ...

最新文章

  1. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
  2. Mysql学习(三)之数据库管理工具Navicat
  3. C语言内存管理之结构体
  4. 修改yapf中的列宽限制值
  5. 大数据统计学之概率论(三)
  6. YouTube将关闭原创节目部门
  7. Centos0S7手动安装OpenStack Pike版--(Evironment)
  8. 巧妙检查WinXP系统漏洞
  9. Nginx安装负载均衡配置 fair check扩展
  10. 谈论高并发(三)锁的一些基本概念
  11. eda技术试卷_EDA技术试题库
  12. [Pytorch系列-33]:数据集 - torchvision与CIFAR10/CIFAR100详解
  13. iOS开发者账户注册/添加调试设备
  14. 地图学的基础知识_天文坐标系_大地坐标系_地心坐标系及其相关概念
  15. 小米无线显示电脑连接到服务器,小米手机无线连接电脑_小米手机无线显示电脑...
  16. 虚拟服务器伪静态怎么设置,虚拟主机如何设置伪静态
  17. 笔记本计算机屏幕亮度暗,笔记本屏幕暗,教您怎么解决
  18. PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。
  19. Cookie | Cookie的理论基础、Cookie中常用的方法
  20. 产品经理三大领域的技术

热门文章

  1. java占位符填充_Java使用freemark生成word
  2. ORA-01861: 文字与格式字符串不匹配
  3. 滑动关机代码bat_BAT面试算法进阶--(2) 无重复字符的最长子串(滑动法优化+ASCII码法)...
  4. FYFG的完整形式是什么?
  5. 不稳定学习器适合做基分类器_分类稳定性
  6. cd-rom门锁定什么意思_CD-ROM XA的完整格式是什么?
  7. Java Scanner next()方法与示例
  8. 大数据数据可视化设计原则_数据可视化设计的8顶帽子
  9. java reverse_Java Integer类reverse()方法与示例
  10. 我们在使用计算机时,不能做什么?,11秋季学期计算机应用技术基础学习周期_01任务-在线作业[1]1...