이 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

나는 Kobo Glo가 없기 때문에 여기에 있다고 추측합니다. (내 Bookeen HD가 재프로그래밍 가능했으면 좋겠습니다.)
내부에 2Gb SD 메모리가 있는 것 같습니다(60352개의 실린더, 실린더당 32K).

실제로 dd512개 블록 중 2048개(1048576)가 건너뛰었는데 이는 305개 실린더 오프셋(9994240)보다 적습니다. 실제로 /dev/mmcblk0p1이 방법으로 파티션에 도달하려면 8Mb 이상이 작성되어야 합니다.

장치가 부팅되는 방법은 펌웨어에 따라 다르지만 처음 1Mb의 SD 메모리를 통해 기본적인 부팅을 수행한 다음 dd.

/dev/mmcblk0p1256Mb((8497 - 305)*32768)이며 /vv 또는 vv 의 백업을 통해 설치된 것으로 보입니다 /dev/mmcblk0p2.

관련 정보