web-dev-qa-db-ja.com

ディスクイメージファイルのパーティション化

次のコマンドでrawディスクイメージをパーティション分割したいと思います。

#creating the blank image
$ dd if=/dev/zero of=example.img bs=1M count=50

#write the partition table
$ parted example.img mktable msdos

#creating partition but not the file system
#creating fat32 primary partition 1 to 15 MB
$ parted example.img mkpart p fat32 1 15
#creating ext3 primary partition 16 to end
$ parted example.img mkpart p ext3 16 -0

これらのコマンドはファイルシステムを作成しません。どうすればそれができますか? mkfspartedコマンドを試していますが、コマンドが見つかりませんと表示されています。どうすれば外部でファイルシステムを作成できますか?

4

コマンドkpartxを使用して、フォーマット可能なループバックデバイスを作成します。

kpartx -a /path/to/imagefile.img  # Presents partitions from the image file
mkfs.vfat /dev/mapper/loop0p1   # Format partition 1
mkfs.ext3 /dev/mapper/loop0p2   # Format partition 2
kpartx -d /path/to/imagefile.img  # Unmaps the partitions from the image file

関連するkpartxの例はこちら

7
Jodie C

losetupの最近のバージョンは-Pオプションを取得しました。 man 8 losetup からの引用:

-P, --partscan
          Force the kernel to scan the partition table on a newly created loop device.

losetup -f my_partitioned.imgを実行すると、/dev/loop0が作成されるだけでなく、デバイスがパーティション分割されます。

$ ls -l /dev/loop0*
brw-rw---- 1 root disk   7, 0 Oct  5 18:43 /dev/loop0
brw-rw---- 1 root disk 259, 0 Oct  5 18:43 /dev/loop0p1
brw-rw---- 1 root disk 259, 1 Oct  5 18:43 /dev/loop0p2
3
scorpp

mkfs.ext4などの通常のmkfsコマンドを使用します。 mkfsを指す場所を確保するために、ループバックデバイスをファイルに関連付けるにはlosetupを使用する必要があります。ループデバイス上のパーティションを認識するために、partprobeを使用する必要がある場合もあります。

1
psusi