Это работало на меня:
# truncate -s 8G foobar
# losetup -f --show foobar
/dev/loop0
# mkdosfs -F 32 /dev/loop0 $((2*1024*1024))
mkfs.fat 3.0.25 (2014-01-17)
Warning: block count mismatch: found 8388608 but assuming 2097152.
Loop device does not match a floppy size, using default hd params
# mount /dev/loop0 /mnt/tmp
# df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 2.0G 4.0K 2.0G 1% /mnt/tmp
Альтернативный подход, в случае, если mkfs
не имеет опции ограничить размер, должен создать циклическое устройство с пределом:
# losetup -f --show --sizelimit $((2*1024*1024*1024)) /dev/loop0
/dev/loop1
# mkdosfs -F 32 /dev/loop1
mkfs.fat 3.0.25 (2014-01-17)
Loop device does not match a floppy size, using default hd params
# mount /dev/loop0 /mnt/tmp
# df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 2.0G 4.0K 2.0G 1% /mnt/tmp
Конечно, если это - раздел, Вы могли бы также уменьшить раздел, затем увеличить его снова.