O que esse comando dd faz exatamente?

4

Eu tenho um dispositivo incorporado com este cartão 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

e estas partições:

[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

Eu tenho um arquivo de imagem do kernel de inicialização, uImage , de ~ 2 Mb. O que acontece exatamente se eu fizer o seguinte?

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

Por que estou perguntando isso? Este comando é estranho para mim porque:

  1. a imagem copiada é pequena do que a partição de destino
  2. parece que a imagem é extraída em / dev / mmcblk0p1, que é a partição raiz. Começa às 305, enquanto dd ignora 2048 blocos EDIT: veja resposta de Anthon
  3. não há uma partição de inicialização
  4. uImage é extraído; pelo contrário, eu esperava que fosse usado pelo u-boot como é

Histórico: o dispositivo é um Kobo Glo e o comando é executado por scripts de atualização para atualizar o kernel.

    
por Marco Sulla 22.04.2014 / 15:33

1 resposta

4

Eu estou supondo aqui, pois não tenho Kobo Glo (desejo que meu Bookeen HD fosse reprogramável).
Você parece ter uma memória SD de 2 Gb internamente (60352 cilindros de 32K cada)

O dd pula 2048 blocos de 512 (1048576), que é menor que o deslocamento do cilindro de 305 (9994240). Na verdade, tem que escrever mais de 8Mb para alcançar a partição /dev/mmcblk0p1 dessa maneira.

Como o dispositivo inicializa depende de seu firmware, mas é provável que exista algum bootstrap básico feito pelo primeiro 1Mb na memória SD, que por sua vez chama a imagem escrita com dd .

/dev/mmcblk0p1 é 256Mb ((8497 - 305) * 32768) e que parece estar montado como / com talvez um backup dele em /dev/mmcblk0p2 ou vv.

    
por 22.04.2014 / 16:41