A solução óbvia é montar a imagem diretamente no Linux e fazer as mudanças, mas há um pequeno problema. Essas mídias são particionadas de maneira semelhante a um disco rígido. A solução é montar a partição correta da imagem.
Verifique se a imagem está realmente particionada:
$ file -k OpenELEC-RPi.arm-4.95.1.img
OpenELEC-RPi.arm-4.95.1.img: x86 boot sector; partition 1: ID=0xc, active, starthead 32, startsector 2048, 262145 sectors; partition 2: ID=0x83, starthead 146, startsector 266240, 65537 sectors
Trabalhando com a imagem
Mapeie as partições da imagem para dispositivos de loop:
$ sudo kpartx -av OpenELEC-RPi.arm-4.95.1.img
add map loop0p1 (252:3): 0 262145 linear /dev/loop0 2048
add map loop0p2 (252:4): 0 65537 linear /dev/loop0 266240
No Ubuntu kpartx
não está instalado por padrão. Do sudo apt-get install kpartx
.
Monte a partição:
$ sudo mount /dev/mapper/loop0p1 /mnt/tmp1
Agora faça suas alterações no diretório /mnt/tmp1
.
Umount da partição e exclua o mapeamento:
$ sudo umount /dev/mapper/loop0p1
$ sudo kpartx -dv OpenELEC-RPi.arm-4.95.1.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
Outras opções
Se kpartx
não estiver disponível, você poderá determinar o deslocamento da partição usando por exemplo fdisk
(ele também funciona nas imagens para que você possa criar a imagem sem ter uma unidade física) e mapeá-las usando losetup
ou mount -o loop,offset=x
ou até mesmo a nova versão de losetup
(do util-linux 2.21) pode mapear as partições diretamente usando a opção --partscan
.
Há descrições em outras perguntas: