web-dev-qa-db-ja.com

mkfsdos:LinuxのUSBペンドライブ上のFAT16 | 32ファイルシステムのサイズを定義します

質問:Linuxでmkdosfsを使用してFAT16/FAT 32ファイルシステムのサイズをどのように定義しますか

たとえば、8GB以上のサイズのパーティションに2GBのFAT16 | 32ファイルシステムを作成したいですか?

これは私がどこまで得たかです:

  • fdiskでパーティションを作成しました
  • mkdosfs -F 16 /dev/sdb1は、WHOLEパーティション上にFAT16ファイルシステムを作成します–これが4 GBより大きくない限り、私は知っています
  • mkdosfs -F 32 /dev/sdb1は、WHOLEパーティション上にFAT32ファイルシステムを作成します。これがデフォルトであり、-F 32を指定する必要はないことはわかっていますが、完全性とスタイルのために…
  • man mkdosfsに従って、ファイルシステムのサイズは最後の引数として定義されます
  • どうやって?!これまでのところ、サイズを定義しようとしたすべての試みでエラーメッセージが返されました。それらのすべて。

大規模な誤解に遭遇しただけだと思っていて、このような単純な質問を自分で解決できないことに不満を感じていたので、サイズを定義する際にどこで何かを見逃したのでしょうか。

3
erch

これは私のために働いた:

# 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

もちろん、パーティションの場合は、パーティションを縮小してから再度拡大することもできます。

4
frostschutz