最初からパーティションが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
loop
Linuxでは、モジュールをロードするときにループデバイスが分割可能になるようにモジュールにオプションを渡す必要があります。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が必要です。)