parted create .img pronto para trabalhar

1

Em questão "Linha de comando parcial não obtém o mesmo resultado ", a resposta foi selecionada como correta (para criar sistemas de arquivos IMG e partições com" parted ") é:

# parted MyDrive.img \
    mklabel msdos \
    mkpart primary NTFS 1 1024 \
    set 1 lba on \
    align-check optimal 1 \
    print

Model:  (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
  1      1049kB  1074MB  1073MB  primary  ntfs         lba

O mesmo para fat32 / ext4. No entanto, quando eu montei a imagem em / dev / loop ( sudo losetup loop1 MyDrive.img ), não funciona ( unknown partition ).

Portanto, a secuência está incompleta.

Alguém pode me ajudar a completar a segurança para criar o .img para o ext4 / ntfs / fat32 ( GPT e MSDOS ) reconhecer ao montá-lo em um loop (pronto para funcionar)

Obrigado!

    
por ajcg 25.03.2018 / 19:49

1 resposta

0

Eu fornecerei o método que você pediu e também um método muito mais simples se as partições não forem necessárias. Eu também só farei exemplos ext4, deveria ser possível derivar o resto:

Arquivo de imagem com partições:

#!/bin/sh

FILE=MyDrive.img

# create new 2Gb image file, will overwrite $FILE if it already exists
dd if=/dev/zero of=$FILE bs=1M count=2048

# make two 1Gb partitions and record the offsets
offset1=$(parted $FILE \
    mklabel msdos \
    mkpart primary ext2 1 1024 \
    unit B \
    print | awk '$1 == 1 {gsub("B","",$2); print $2}')
offset2=$(parted $FILE \
    mkpart primary ext2 1024 2048 \
    unit B \
    print | awk '$1 == 2 {gsub("B","",$2); print $2}')

# loop mount the partitions and record the device
loop1=$(losetup -o $offset1 -f $FILE --show)
loop2=$(losetup -o $offset2 -f $FILE --show)

# create and mount the filesystems
mkdir -p /tmp/mnt{1,2}
mkfs.ext4 $loop1
mount $loop1 /tmp/mnt1
mkfs.ext4 $loop2
mount $loop2 /tmp/mnt2

# file write test
touch /tmp/mnt1/file_on_partition_1
touch /tmp/mnt2/file_on_partition_2

# cleanup
umount /tmp/mnt1 /tmp/mnt2
losetup -d $loop1 $loop2

Arquivo de imagem sem partições:

#!/bin/sh

FILE=MyDrive.img

# create new 2Gb image file, will overwrite $FILE if it already exists
dd if=/dev/zero of=$FILE bs=1M count=2048

# create and mount filesystem
mkfs.ext4 -F $FILE
mount $FILE /mnt

# file write test
touch /tmp/mnt/file_in_imagefile

# cleanup
umount /mnt

Espero que seja autoexplicativo, foi mais fácil expressar essa resposta em um script de shell.

    
por 25.03.2018 / 23:35

Tags