何もないところから1つのパーティションだけでファイルシステムを作成する必要があります(/dev/zero
)。
次の一連のコマンドを試しました:
dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
n
p
2048
131072
基本的に、ゼロで埋められた64MBの画像ファイルを作成する必要があります。次に、fdisk
を使用します セクター2048
から開始して、新しいファイルシステム(最終的にはFAT32になるはずです)用の新しいパーティションを追加します。 残りのすべてのセクターを使用します。
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
しかし、ここで私は問題にぶつかっています。 loop
を設定した場合 デバイスを作成し、mkfs -t vfat
を使用してフォーマットします 、パーティションテーブルが上書きされ、ファイルシステム(FAT32)がディスクに配置されます。 FAT32でフォーマットされたディスク全体は必要ありません。必要なのは、プライマリパーティションだけです。
イメージ全体ではなく、rawディスクイメージの1つのパーティションのみをフォーマットする方法を知っている人はいますか?
承認された回答:
Linuxの場合、loop
をロードするとき モジュールの場合は、必ず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
内 。
これで、パーティション化可能なループデバイスを作成できます。
truncate -s64M 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/
(Linuxの比較的新しいバージョンが必要であることに注意してください。)