Backup de um sistema de arquivos ubi com dd?

5

Tenha um sistema de arquivos raiz (sistema de arquivos - imagem contendo estrutura e conteúdo da pasta) em uma unidade flash. A unidade flash usa o UBI como o sistema de arquivos subjacente do sistema de arquivos - a maneira como os blocos de dados são mapeados nos arquivos, como quando você diz que está usando o ext4).

rootfs on / type rootfs (rw)
ubi0:root on / type ubifs (rw,sync)

Eu sei como fazer um backup com o dd quando há uma unidade física como o primeiro parâmetro (exemplo. em vez de rootfs haveria um /dev/sda ), no entanto aqui não sei como endereçar o dirigir no cenário atual (qual é o caminho para rootfs ).

Como faço para detectar a qual arquivo footfs ou ubi0:root corresponde?

    
por TheMeaningfulEngineer 14.04.2014 / 13:33

2 respostas

3

rootfs montado em / é um sistema de arquivos na memória que normalmente contém apenas as ferramentas necessárias para montar o sistema de arquivos raiz “real” e é esvaziado depois que isso é feito. O conteúdo inicial dos rootfs é carregado a partir de uma imagem initramfs armazenada dentro ou seguinte ao binário do kernel e carregado pelo bootloader.

O sistema de arquivos raiz no flash é ubi0:root . Este é um sistema de três camadas:

  • No topo, o sistema de arquivos UBIFS .
  • No meio, o volume UBI , que fornece nivelamento de desgaste além do flash bruto.
  • Na parte inferior, a interface flash bruta (MTD).

(Tome o resto desta resposta com cuidado, eu nunca trabalhei com o UBI.)

O volume ubi0:root é criado pelos argumentos para o módulo ubi ou o ubiattach utility . Este não é um dispositivo de bloco, porque a interface entre o nível UBI e o sistema de arquivos sobre ele é mais complexa do que “escrever este byte neste local”. Você pode criar um dispositivo de bloco somente leitura em cima do UBI com o ubiblock comando, em seguida, de volta - algo como

ubiblock --create /dev/ubi0_0
cat /dev/ubi0_0 >backup
ubiblock --remove /dev/ubi0_0
    
por 15.04.2014 / 19:58
2

Se você deseja fazer o backup / restauração da partição UBIFS, faça uma imagem UBI com o dd da montagem UBI e depois restaure usando o programa ubiupdatevol do mtd-util.

Exemplo -

Faça a imagem:

dd if=/dev/ubi0_0 of=/save_loc/rfs1.ubi

Desmontar a partição de destino:

umount /.rfs2

Restaure a imagem para a partição de destino:

ubiupdatevol /dev/ubi1_0 /save_loc/rfs1.ubi

Remontar a partição re-flashed:

mount -t ubifs -o compr=zlib,ro ubi1:rootfs /.rfs2

Editar: Para esclarecer sobre como encontrar o ubi # para o nome, execute o mtd-util 'ubinfo':

ubi0
Volumes count:                           1
Logical eraseblock size:                 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks:     960 (121896960 bytes, 116.2 MiB)
Amount of available logical eraseblocks: 0 (0 bytes)
Maximum count of volumes                 128
Count of bad physical eraseblocks:       0
Count of reserved physical eraseblocks:  80
Current maximum erase counter value:     288
Minimum input/output unit size:          2048 bytes
Character device major/minor:            250:0
Present volumes:                         0

Volume ID:   0 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        874 LEBs (110977024 bytes, 105.8 MiB)
State:       OK
Name:        rootfs
Character device major/minor: 250:1
    
por 11.08.2017 / 19:55