我有一个非常具体的需求:部分替换 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
并进入一个区域scripts
,filesystem
而留下其他区域。
问题是这应该从正在运行的系统中实现(使用“旧”配置启动”)和我应该在重新启动之前重写内核和“新”文件系统。
该系统是嵌入式的,所以我的操作空间很小(不过我有一张SD卡)。
当然,重写后的内核将在其 DTB 中写入“新”配置。
问题是过渡。
注:我见过这个问题,但它非常旧,并且有需要内核补丁的缺点,我想避免这种情况。