フォーマットされたパーティションイメージファイルを最初から作成するにはどうすればよいですか?

フォーマットされたパーティションイメージファイルを最初から作成するにはどうすればよいですか?

最初からパーティションが1つしかないファイルシステム()を作成する必要があります/dev/zero。私は次の一連のコマンドを試しました。

dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
    n
    p 
    2048
    131072

デフォルトでは、ゼロで埋められた64 MBのイメージファイルを作成する必要があります。次に、セクタから始めて、残りのすべてのセクタを使用してfdisk新しいファイルシステム(最終的にFAT32にする必要があります)の新しいパーティションを追加します。2048

losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1

しかし、ここに問題があります。loopデバイスを設定してフォーマットを使用すると、mkfs -t vfatパーティションテーブルが上書きされ、ファイルシステム(FAT32)がディスクに配置されます。ディスク全体をFAT32としてフォーマットする必要はなく、プライマリパーティションのみをフォーマットするだけです。

フルイメージではなく、rawディスクイメージの1つのパーティションのみをフォーマットする方法を知っている人はいますか?

ベストアンサー1

loopLinuxでは、モジュールをロードするときにループデバイスが分割可能になるようにモジュールにオプションを渡す必要があります。max_part

現在の値を確認してください。

cat /sys/module/loop/parameters/max_part

0の場合:

modprobe -r loop # unload the module
modprobe loop max_part=31

この設定を永続化するには、/etc/modprobe.confファイルに次の行を追加します(/etc/modprobe.dディレクトリがシステム上にある場合)。

options loop max_part=31

modprobe -r loop「モジュールループが組み込まれているため」失敗した場合は、loop.max_part=31カーネルコマンドラインに追加して再起動する必要があります。ブートローダがGrub2の場合はそれを値GRUB_CMDLINE_LINUXに追加し/etc/default/grubますupdate-grub

これで、分割可能なループデバイスを作成できます。

truncate -s 64M file # no need to fill it with zeros, just make it sparse
fdisk file # create partitions
losetup /dev/loop0 file
mkfs.vfat /dev/loop0p1 # for the first partition.
mount /dev/loop0p1 /mnt/

使用後の循環装置の取り外しと取り外し

umount /mnt
losetup -d /dev/loop0

(比較的新しいバージョンのLinuxが必要です。)

おすすめ記事