Linux
mkfsdos:在 Linux 中定義 USB pendrive 上 FAT16|32 文件系統的大小
問題:如何
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
當然,如果是分區,你也可以把分區縮小,然後再放大。