是否可以在运行时调整 MTD 分区的大小?

是否可以在运行时调整 MTD 分区的大小?

我有一个非常具体的需求:部分替换 Flash 的内容移动 MTD 分区边界。

当前地图是:

  • u-boot 0x000000 0x040000
  • u-boot-env 0x040000 0x010000
  • kernel 0x050000 0x230000
  • initrd 0x280000 0x170000
  • scripts 0x3f0000 0x010000
  • filesystem 0x400000 0xbf0000
  • firmware 0xff0000 0x010000

虽然期望的输出是:

  • u-boot 0x000000 0x040000
  • u-boot-env 0x040000 0x010000
  • kernel 0x050000 0x230000
  • filesystem 0x280000 0xd70000
  • firmware 0xff0000 0x010000

这意味着崩溃initrd并进入一个区域scriptsfilesystem而留下其他区域。

问题是这应该从正在运行的系统中实现(使用“旧”配置启动”)我应该在重新启动之前重写内核和“新”文件系统。

该系统是嵌入式的,所以我的操作空间很小(不过我有一张SD卡)。

当然,重写后的内核将在其 DTB 中写入“新”配置。

问题是过渡。

注:我见过这个问题,但它非常旧,并且有需要内核补丁的缺点,我想避免这种情况。

相关内容