Linux

mkfsdos:在 Linux 中定義 USB pendrive 上 FAT16|32 文件系統的大小

  • February 15, 2014

問題:如何mkdosfs在 Linux中定義 FAT16 / FAT 32 文件系統的大小

我想在 8 GB 或更大的分區上創建一個 2 GB 的 FAT16|32 文件系統?

這是我走了多遠:

  • 創建了一個分區fdisk
  • mkdosfs -F 16 /dev/sdb1在整個分區上創建一個 FAT16 文件系統——只要不大於 4 GB,我知道
  • mkdosfs -F 32 /dev/sdb1在整個分區上創建一個 FAT32 文件系統。我知道這是預設設置,我不需要指定-F 32,但為了完整性和風格……
  • 根據man mkdosfs文件系統的大小被定義為最後一個參數
  • 如何?!到目前為止,我所有定義大小的嘗試都返回了錯誤消息。他們都是。

猜想我只是遇到了一個大規模的誤解,並且對自己無法解決這麼簡單的問題感到沮喪,我真的想知道我在定義尺寸時到底錯過了什麼?!

這對我有用:

# 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

當然,如果是分區,你也可以把分區縮小,然後再放大。

引用自:https://unix.stackexchange.com/questions/115327