このddコマンドは正確に何をしますか?

このddコマンドは正確に何をしますか?

このSDカードを内蔵したデバイスがあります。

[root@(none) ~]# busybox fdisk -l
Disk /dev/mmcblk0: 3965 MB, 3965190144 bytes
4 heads, 16 sectors/track, 121008 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk0p1             305        8497      262144+ 83 Linux
/dev/mmcblk0p2            8497       16689      262144+ 83 Linux
/dev/mmcblk0p3           16689       60352     1397247   b Win95 FAT32

そして次のパーティションは:

[root@(none) ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root               253871    140291    113580  55% /
none                     16384         4     16380   0% /tmp
none                    127016         4    127012   0% /dev
none                        16         4        12  25% /var/lib
none                        16         0        16   0% /var/log
none                       128        16       112  13% /var/run
/dev/mmcblk0p3         1394520    118036   1276484   8% /mnt/onboard

uImage約2MBのサイズのu-bootカーネルイメージファイルがあります。次のことを行うと正確にどうなりますか?

dd if=uImage of=/dev/mmcblk0 bs=512 seek=2048

私がこれを尋ねるのはなぜですか?このコマンドは、次の理由で奇妙に見えます。

  1. コピーされたイメージはターゲットパーティションよりも小さいです。
  2. ルートパーティション/dev/mmcblk0p1にイメージが抽出されたようです。 305で始まり、ddはブロック2048をスキップする。編集:参照アントンの答え
  3. ブートパーティションなし
  4. u-画像が抽出されました。代わりにu-bootでそのまま使用すると予想しました。

背景:デバイスはKobo Gloであり、更新スクリプトを介してこのコマンドを実行してカーネルを更新します。

答え1

コボグロがないからここにいると思います。 (私のBookeen HDが再プログラミング可能であればと思います。)
内部に2Gb SDメモリがあるようです(60352本のシリンダ、シリンダあたり32K)。

実際、dd512ブロックのうち2048(1048576)はスキップされていますが、これは305シリンダーオフセット(9994240)よりも少ないです。実際、/dev/mmcblk0p1この方法でパーティションに到達するには、8 Mb以上を作成する必要があります。

デバイスの起動方法はファームウェアによって異なりますが、最初の1 MbのSDメモリを介して基本的な起動を実行してからdd

/dev/mmcblk0p1256Mb((8497 - 305)* 32768)で、/vvまたはvvのバックアップを介してインストールされているようです/dev/mmcblk0p2

関連情報