mformat是Mtools工具包中的一个命令,用于在Linux系统下创建和格式化MS-DOS/FAT文件系统。与标准的mkfs命令不同,mformat专门针对DOS/Windows兼容性进行了优化,特别适合创建可在多平台间共享的存储设备。
mformat [选项] 驱动器字母:
注意:mformat使用DOS风格的驱动器字母表示法,如a:、c:等,这些映射到Linux中的设备文件。
| 选项 | 说明 |
|---|---|
-t 柱面数 |
指定柱面数 |
-h 磁头数 |
指定磁头数 |
-s 扇区数 |
指定每个磁道的扇区数 |
-l 卷标 |
设置卷标(最多11个字符) |
-F |
快速格式化(不检查坏块) |
-I |
指定文件系统ID |
-C |
创建磁盘映像文件 |
-N 序列号 |
设置磁盘序列号 |
-M 扇区大小 |
设置扇区大小(字节) |
-a |
使用Atari变种格式 |
-X |
格式化XDF磁盘 |
-v |
详细模式 |
-c |
指定簇大小 |
-S 扇区数 |
引导扇区中的扇区数 |
Mtools使用配置文件(通常为/etc/mtools.conf或~/.mtoolsrc)将DOS驱动器字母映射到Linux设备文件:
| DOS驱动器 | Linux设备 | 典型用途 |
|---|---|---|
a: |
/dev/fd0 |
第一个软盘驱动器 |
b: |
/dev/fd1 |
第二个软盘驱动器 |
c: |
/dev/hda或/dev/sda |
第一个硬盘 |
d: |
/dev/hdb或/dev/sdb |
第二个硬盘 |
e: |
/dev/sdc1 |
USB闪存盘 |
f: |
/dev/cdrom |
CD-ROM驱动器 |
# 首先配置mtools,编辑~/.mtoolsrc
echo 'drive e: file="/dev/sdb1"' >> ~/.mtoolsrc
# 格式化e:驱动器(对应/dev/sdb1)
mformat e:
# 格式化并设置卷标为"MYUSB"
mformat -l MYUSB e:
# 快速格式化(不检查坏块)
mformat -F e:
# 指定柱面、磁头、扇区数
mformat -t 80 -h 2 -s 18 e:
# 创建FAT16文件系统(适合小于2GB的分区)
mformat -F -t 1024 -h 64 -s 32 e:
# 创建FAT32文件系统
mformat -F -t 1023 -h 255 -s 63 e:
#!/bin/bash
# 完整U盘格式化脚本
DEVICE="/dev/sdb1"
DRIVE="e:"
# 1. 卸载U盘
umount $DEVICE 2>/dev/null
# 2. 添加mtools配置
echo "drive $DRIVE file=\"$DEVICE\"" > ~/.mtoolsrc
# 3. 检查设备信息
fdisk -l $DEVICE
# 4. 格式化FAT32
echo "正在格式化FAT32..."
mformat -F -t 1023 -h 255 -s 63 -l "MY_USB" $DRIVE
# 5. 验证格式化
echo "格式化完成"
mlabel -s $DRIVE
# 创建1440KB的软盘映像(1.44MB)
dd if=/dev/zero of=floppy.img bs=1024 count=1440
mformat -C -t 80 -h 2 -s 18 a:
| 文件系统 | 最大容量 | 簇大小 | 适用场景 |
|---|---|---|---|
| FAT12 | 32 MB | 0.5-4 KB | 软盘、小容量设备 |
| FAT16 | 2 GB | 2-64 KB | U盘、SD卡(老设备) |
| FAT32 | 2 TB | 4-32 KB | 大容量U盘、移动硬盘 |
| exFAT | 128 PB | 4 KB-32 MB | 超大文件(视频、镜像) |
# Mtools配置文件
# 驱动器映射
drive a: file="/dev/fd0" exclusive
drive b: file="/dev/fd1" exclusive
drive c: file="/dev/hda"
drive d: file="/dev/hdb"
drive e: file="/dev/sdb1"
drive f: file="/dev/sdc1"
drive g: file="/dev/sdd1"
# 全局设置
mtools_skip_check=1
MTOOLS_NO_VFAT=1
# 默认格式化选项
mformat_defaults="-F -t 1023 -h 255 -s 63"
# 特定驱动器的设置
drive e: {
fat_bits=32
mformat_only=1
}
# 错误:Cannot open /dev/sdb1: Permission denied
# 解决方案:
# 使用sudo运行
sudo mformat e:
# 或者将用户添加到disk组
sudo usermod -aG disk $USER
# 或者修改设备权限(临时)
sudo chmod 666 /dev/sdb1
# 错误:Drive 'e:' not defined in .mtoolsrc
# 解决方案:
# 创建或编辑~/.mtoolsrc
echo 'drive e: file="/dev/sdb1"' >> ~/.mtoolsrc
# 或者使用命令行指定
mformat -i /dev/sdb1 -t 1023 -h 255 -s 63
# 错误:Device is busy
# 解决方案:
# 卸载设备
sudo umount /dev/sdb1
# 如果无法卸载,查找占用进程
sudo lsof | grep /dev/sdb1
sudo fuser -km /dev/sdb1 # 强制终止占用进程
# 对于大于32GB的设备,Windows可能不支持FAT32
# 解决方案:
# 1. 使用exFAT(如果需要存储大于4GB的文件)
# 2. 使用NTFS(仅限Windows/Linux)
# 3. 使用mkfs.vfat代替
# 使用mkfs.vfat格式化大容量FAT32
sudo mkfs.vfat -F 32 -n "USB_DRIVE" /dev/sdb1
# Debian/Ubuntu系统
sudo apt-get install mtools
# CentOS/RHEL系统
sudo yum install mtools
# Fedora
sudo dnf install mtools
# Arch Linux
sudo pacman -S mtools
# macOS (使用Homebrew)
brew install mtools
# 编译安装最新版本
wget https://ftp.gnu.org/gnu/mtools/mtools-4.0.39.tar.gz
tar -xzf mtools-4.0.39.tar.gz
cd mtools-4.0.39
./configure
make
sudo make install
mkfs.vfat - 创建FAT文件系统(mkfs的一部分)mlabel - 设置或显示MS-DOS卷标mcopy - 复制MS-DOS文件mdir - 显示MS-DOS目录内容mtype - 显示MS-DOS文件内容mrd - 删除MS-DOS目录mmd - 创建MS-DOS目录fdisk - 磁盘分区工具parted - 高级分区编辑器