Eu preciso criar um sistema de arquivos com apenas uma partição do nada ( /dev/zero
). Eu tentei esta sequência de comandos:
dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
n
p
2048
131072
Basicamente, preciso criar um arquivo de imagem de 64 MB preenchido com zeros. Então eu uso fdisk
para adicionar uma nova partição para o novo sistema de arquivos (que finalmente deve ser o FAT32), iniciando no setor 2048
e usando todos os demais setores.
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
Mas aqui estou atingindo problemas. Se eu configurar um loop
dispositivo e formatá-lo usando mkfs -t vfat
, a tabela de partição será substituída e o sistema de arquivos (FAT32) será colocado no disco. Não preciso de um disco inteiro formatado com o FAT32, apenas da minha partição primária.
Alguém sabe como posso formatar apenas uma partição da imagem de disco bruto, não a imagem inteira?
fonte
mkfs
chamada. Eu tive que ler sua postagem três vezes para entender seu problema. Embora eu não possa ajudá-lo, estou interessado em saber por que você cria um arquivo de imagem (!), Mas ainda assim quero deixar os primeiros n "setores" sem uso.loop
é um módulo ou incorporado ao kernel), então eu acho que é útil para cada site ter sua versão da pergunta e votei para reabrir.Respostas:
Se no Linux, ao carregar o
loop
módulo, certifique-se de passar ummax_part
opção ao módulo para que os dispositivos de loop sejam particionáveis.Verifique o valor atual:
Se for 0:
Para tornar essa configuração persistente, adicione a seguinte linha a
/etc/modprobe.conf
ou a um arquivo,/etc/modprobe.d
se esse diretório existir em seu sistema:Se
modprobe -r loop
falhar porque “O loop do módulo está embutido”, você precisará adicionarloop.max_part=31
à sua linha de comando do kernel e reiniciar. Se o seu bootloader é Grub2, adicionar a ele para o valor deGRUB_CMDLINE_LINUX
noetc/default/grub
.Agora, você pode criar um dispositivo de loop particionável:
(observe que você precisa de uma versão relativamente recente do Linux).
fonte
loop.max_part=31
para a linha de comando do kernelloop.maxpart=31
ou estáloop.max_part=31
na linha de comando do kernel?losetup /dev/loop0 file -o 1048576 --sizelimit limit
O deslocamento especificado deve estar em bytes (1048576 = 2048 setores * 512 bytes por setor).
mount -o loop,offset=1048576,sizelimit=limit
Para mais informações, consulte losetup and mount .
fonte
Os procedimentos a seguir permitem montar as partições da imagem para modificá-las.
opção losetup 2,21 -P
Cria um
/dev/loopXpY
por partição.Vantagem: executável pré-instalado em muitas distros (pacote util-linux).
Desvantagem: opção bastante recente, não presente no Ubuntu 14.04.
losetup -P
automaçãoUso:
Fonte:
kpartx
Resultado:
Onde
loop0p1
está a primeira partição, para que possamos fazer:Vantagem deste método: funciona no Ubuntu 14.04 sem reiniciar.
fonte