【问题标题】:Burn to specific sectors of flash memory刻录到闪存的​​特定扇区
【发布时间】:2012-09-20 06:27:46
【问题描述】:

是否有任何实用程序可以让我准确指定图像将被刻录到哪个扇区?

我需要根据特定的扇区映射烧录一张SD卡,

例如引导加载程序应驻留在从扇区 57 到扇区 1072(含)的 512K 区域中
内核应该驻留在从扇区 1073 到扇区 9264 的 4M 区域中

等等

【问题讨论】:

    标签: memory-management filesystems linux-kernel kernel bootloader


    【解决方案1】:
    SECTOR_SIZE=<sector size in bytes>
    FLASH_DEV=/dev/sd??
    sudo dd if=boot.bin of=$FLASH_DEV bs=$SECTOR_SIZE count=$((1072-57)) seek=57
    sudo dd if=kernel   of=$FLASH_DEV bs=$SECTOR_SIZE count=$((9264-1073)) seek=1073
    

    只需man 1 dd,而且你必须先在/dev/sd* 中确定你的闪存驱动器的名称。

    【讨论】:

    • 感谢您的回复,但是,您知道,我的 SD 卡安装为两个 ext4 分区,/dev/mmcblk0p1 和 /dev/mmcblk0p2。前者实际上位于扇区 34038-563517 并包含 android 系统文件。后者位于扇区 563518-2666309 并包含 android 数据文件。 SD卡的其他扇区是不可见的。我怎样才能访问它们?
    • @mangusta 有通用的 /dev/mmcblk0 吗?如果是,就使用它,如果不是,我会尝试调查为什么只有这两个分区是可见的。
    • 啊,实际上有 /dev/mmcblk0 :) 但我无法挂载它,因为它没有关联的文件系统。为了使用 dd,我必须安装它吗?
    • @mangusta 不,你必须卸载 /dev/mmcblk0 执行 'dd',否则你会干扰内核文件系统驱动程序,这可能会导致不可预知的结果。
    • @mangusta:实际上,您必须挂载它才能使用dd,因为 dd 是块驱动程序级别的传输,并且具有块级别的传输和文件系统级别同时在一种媒体上是灾难的根源。
    【解决方案2】:

    您可以使用 dd 实用程序并使用 'seek' 选项指定扇区偏移量

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 2022-01-03
      • 2020-07-17
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 2019-09-06
      相关资源
      最近更新 更多