Linux软盘格式化全攻略:从fdformat到mtools的完整实践
2026/9/17 17:57:29 网站建设 项目流程

简介:这份PDF资料聚焦Linux下软盘格式化的系统操作,面向正在学习操作系统存储管理、需要处理老式软盘设备或希望了解Linux底层设备命令的开发者与运维人员,属于一份参考文献型专业指导。内容先梳理软盘设备在/dev/fd0、/dev/fd1下的映射方式,再依次说明设备识别、fdformat低级格式化、mke2fs创建ext2文件系统、mount挂载以及taper备份恢复等常用流程,并结合setfdprm调整不同容量软盘参数,帮助读者从零完成一张1.44MB软盘的完整格式化与数据管理。包内包含1个pdf文件,压缩包总大小129KB,轻量便于随时查阅。资料对设备文件、命令参数和典型输出都有示例说明,适合作为课程实验、系统维护培训或备考Linux基础操作的补充材料。目前已有111人学习浏览,说明该主题对理解存储设备管理仍有参考价值;读者按步骤操作即可掌握这套传统却完整的软盘管理方法。

1. 一张软盘的格式化,藏着 Linux 设备管理的半套基本功

现在很少有人手里还留着 3.5 英寸软盘,但如果你翻出压箱底的老机器,或者在做嵌入式、教育场景里的 Linux 维护,依然会撞上/dev/fd0这类设备。格式化软盘这件事看似简单,其实和格式化一块 NVMe 固态完全不是一个套路——软盘要先做低级格式化(划分磁道和扇区),再建立文件系统,两步缺一不可。今天大部分开发者只认识mkfs.ext4,却不知道fdformat这一步,而这个被遗忘的命令恰恰是理解 Linux 块设备分层的最佳入口。

这篇文章要拆的是 Linux 下四种典型的软盘格式化路径:fdformatmke2fs的手工流程、setfdprm对非常规格式的适配、mtools工具集对 DOS 软盘的无挂载操作,以及taper的备份恢复方案。对做系统维护的人来说,这套东西不只是考古,它涉及设备文件、文件系统元数据、坏块检测和介质参数协商,这些概念换到 U 盘、SD 卡上依然成立。

2. 设备识别与低级格式化:从/dev/fd0fdformat

2.1 软盘设备文件的结构与命名规则

Linux 把软盘驱动器当作块设备暴露在/dev目录下,命名规律很直接:/dev/fd0是第一个软驱(对应 PC 的 A 盘),/dev/fd1是第二个(B 盘)。在较新的内核里,这些设备节点由udev在检测到软驱控制器时自动创建,但老系统上如果没加载floppy模块,/dev/fd0根本不会出现,需要手动modprobe floppy或者用mknod创建。

这里有个细节值得注意:/dev/fd0本身并不绑定某种固定的容量格式。一个 3.5 英寸软驱可以读取 720KB、1.2MB、1.44MB 甚至 2.88MB 的介质,具体按哪种参数访问,取决于你用什么方式打开设备文件。内核维护着一张软盘格式表——在老版本系统里是/etc/fdprm,在 util-linux 较新的版本中则是编译进fdutils包里的内置表。这张表记录着每种格式的磁道数、磁头数、每道扇区数和扇区大小。

格式名称容量磁道数磁头数每道扇区数典型用途
360/360360KB40295.25 英寸双密度
720/720720KB80293.5 英寸双密度
1440/14401.44MB802183.5 英寸高密度主流
2880/28802.88MB80236极少数高端软驱

2.2 用setfdprm协商非常规格式

正常情况下,格式化 1.44MB 软盘直接用缺省参数就行。但如果你手里是 360KB 的老盘,或者软驱本身不支持自动识别介质密度,内核按默认参数读写就会报I/O error。这时候先查一下格式表,再用setfdprm告诉内核你希望用哪一套参数访问这个设备:

# 查看当前格式表 setfdprm /dev/fd0 -p # 把 /dev/fd0 协商为 360/360 格式 setfdprm /dev/fd0 360/360

第一条-p参数打印当前设备的几何参数,用于确认内核现在的状态。第二条把设备协商到 360KB 的几何参数——磁道数从 80 降为 40,每道扇区数从 18 变为 9。这一步的本质是修改内核中floppy驱动为该设备维护的struct floppy_struct参数块,不改变软盘上的物理数据。

注意setfdprm的效果是临时的,重启或重新加载floppy模块后失效。如果你经常要处理这种老盘,可以把setfdprm /dev/fd0 360/360写进/etc/rc.local或 systemd service 里,做成开机自动执行。

2.3 低级格式化:fdformat 与两个常见写法

参数协商好之后,才能做真正意义上的低级格式化。fdformat是软盘专用的低格工具,位于fdutils软件包中。它会把软盘上所有磁道重新划分扇区,擦除全部数据,然后做一次写入后读回的校验:

# 低格并校验 /dev/fd0 fdformat /dev/fd0 # 将设备明确指定为高密度 1.44MB 格式 fdformat /dev/fd0 -n 1440

第二种写法里的1440不是扇区数,而是设备类型代码。fdformat支持的常见类型有72014402880,分别对应 720KB、1.44MB 和 2.88MB 介质。省略时fdformat使用内核当前为该设备设定的几何参数,这要求前一步的setfdprm已经正确执行。

提示:fdformat没有确认提示,执行后磁盘数据立刻不可读。更关键的是,如果设备号指定错误——比如把/dev/sda当成/dev/fd0——后果是灾难性的。老文档里反复强调"一定要指定正确的设备",这个警告放到今天依然成立,只不过现在的风险对象换成了 U 盘。

执行成功后输出大致如下:

Double-sided, 80 tracks, 18 sec/track Total capacity 1440 kB Formatting...done Verifying...done

其中Verifying是低格的写后校验环节:刚写完的扇区会被重新读出比对,发现坏块就用备用扇区替换(如果控制器支持)或做坏块标记。校验失败时会报bad sector和具体扇区号,这个信息在后面用mke2fs建文件系统时还有参考价值。

3. 建立文件系统并挂载:mke2fs 的参数细节与容量规划

3.1 为什么选 ext2 而不是 ext4

低格之后的软盘只是一个扇区集合,没有目录树、没有 inode,必须建立文件系统才能存储文件。针对软盘这类小容量介质,历史上最常用的是ext2,也就是 Linux 第二扩展文件系统。原因很朴素:ext2 无日志(journal),不会为了记录日志产生额外的写放大。一个 1.44MB 的盘总共只有 1440 个块(块大小 1KB),ext3/ext4 的日志在这么小的空间上既占容量又增加磨损,得不偿失。

mke2fs是 e2fsprogs 软件包中的建盘工具,针对软盘这个场景,常用的参数组合是:

# 建立 ext2 文件系统,检查坏块,设置卷标,显示过程 /sbin/mke2fs -c -v -L LINUX_BACKUP /dev/fd0

执行时输出大致如下:

mke2fs 1.10.24 (Ape 97) for EXT2 FS 0.5b 95/08/09 Filesystem label LINUX_BACKUP 360 inodes, 1440 blocks 72 blocks (5.00%) reserved for the super user First data block=1 Block size=1024 (log=0) Fragment size=1024 (log=0) 1 block group 8192 blocks per group, 8192 fragments per group 360 inodes per group Running command: badblocks /dev/fd0 1440 Checking for bad blocks (read-only test): done Writing inode tables: done Writing superblocks and filesystem accounting information: done

3.2 逐参数拆解-c -v -L的含义

-c表示建文件系统前先跑一遍badblocks只读扫描,把坏块记录到文件系统的坏块清单里。对软盘这种磁介质,扇区老化、氧化导致坏块很常见,加这个参数相当于把低格时发现的问题区块在文件系统层面再确认一遍。

-v输出整个过程,方便观察卡在哪一步。格式化软盘虽然快,但如果介质老化严重,badblocks阶段可能跑几十秒,看到done才能确认完成。

-L指定卷标。卷标本质是超级块里的一个字符串,最大 16 字节,作用相当于给这张盘起名字。配合e2label /dev/fd0 NEW_LABEL可以事后修改,但格式化时设好是最省事的。

还有一个容易被忽视的参数是-m,控制保留给 root 的块数百分比:

# 不保留 root 独占块,尽量扩大可用容量 mke2fs -m 0 /dev/fd0 1440

ext2 默认预留 5% 的块给特权进程,防止磁盘写满后系统无法写入关键文件。在 1.44MB 的小盘上 5% 意味着损失 72KB,对数据盘来说有点可惜。用-m 0取消保留后可用空间会明显多出来,代价是 root 进程在盘满时也无法写入——软盘本来就是临时数据交换介质,这个取舍通常是划算的。

3.3 挂载、容量验证与自动挂载配置

文件系统建好之后的最后一步是挂载。老系统上最常见的挂载命令是:

# 创建挂载点 mkdir -p /mnt/floppy # 以 ext2 类型挂载 mount -t ext2 /dev/fd0 /mnt/floppy # 验证容量 df /dev/fd0

df输出里要注意Mounted on一列,确认挂载点是/mnt/floppy。容量列显示的值大约 1390KB(排除文件系统元数据开销),如果明显偏小,多半是低格时用了错误的几何参数,或者建文件系统时指定的块数超过了介质实际容量。

如果软驱设备已经在/etc/fstab中注册,可以简化为mount /mnt/floppy。fstab 里的典型写法是:

/dev/fd0 /mnt/floppy auto noauto,user 0 0

noauto表示开机不自动挂载,user允许普通用户挂载,auto让内核自动探测文件系统类型。每次插入软盘后手动mount /mnt/floppy即可,省去敲-t ext2的麻烦。

提示:挂载中的软盘不能被弹出或格式化,操作前必须umount /mnt/floppy。如果提示device is busy,先用lsof /mnt/floppy找出占用进程再处理。

4. mtools:无挂载操作 DOS 软盘的完整命令矩阵

4.1 为什么存在 mtools 这类工具

软盘在 DOS/Windows 生态里用了十年以上,DOS 格式(FAT12)的软盘交接需求极大。Linux 虽然可以直接mount -t vfat /dev/fd0 /mnt/floppy,但挂载这个动作本身有额外成本:需要 root 权限、占用挂载点、操作不当还会留下未卸载的脏状态。mtools提供了一整套不需要挂载就能读写 FAT 软盘的程序,直接以A:B:这样的盘符访问设备,对习惯 DOS 操作的用户更顺手。

这套工具的底层原理是通过mtools的配置文件/etc/mtools.conf把盘符映射到设备文件。缺省配置通常有一行A /dev/fd0,所以mcopy会把参数里的A:翻译成/dev/fd0,绕过挂载直接调用系统的read/write访问设备文件。正因为绕过了内核的 VFS 层,mtools命令可以随意读写软盘,不需要umount,盘片随时可换。

4.2 常用命令对照表与典型操作

mtools 命令对应 DOS 命令功能说明
mformatformat格式化软盘为 FAT12
mcopycopy文件拷入拷出
mdeldel删除文件
mdirdir列目录
mlabellabel设置卷标
mmdmkdir建子目录
mrenren重命名
mtypetype查看文本文件内容
mbadblocks-坏块检测
mdu-查看目录占用空间

格式化和文件拷贝的组合操作如下:

# 格式化 A 盘为 FAT12 mformat A: # 拷贝当前目录下所有 txt 文件到软盘 mcopy *.txt A: # 查看软盘内容 mdir A:

mformat的名堂比看起来多一些。它不只是做低格,也不只是建 FAT 表——它同时做了这两件事:以默认几何参数低格整张盘,然后写入引导扇区、FAT 表和根目录区。如果软盘之前被fdformat低格过,mformat能直接复用现有扇区布局,执行速度会非常快。

卷标设置的两种写法也值得一提:

# 交互式输入卷标 mlabel A: # 命令行直接指定,支持空格 mlabel A:"USER BACKUP"

第二种写法用引号把带空格的卷标括起来,格式化成 DOS 格式后,Windows 系统插入软盘可以直接看到这个卷标。这个细节在配合老设备交换数据时经常用到。

4.3 文件交换场景的完整流程

假设你要把一台嵌入式设备的日志文件拷贝到 Windows 旧机器上,实操作法是:

# 1. 格式化一张新盘 mformat A: # 2. 批量拷入日志 mcopy /var/log/app/*.log A: # 3. 校验文件完整性 mdir A: | grep log # 4. 从软盘拷出到当前目录 mcopy A:*.log .

第 4 步把参数顺序颠倒,实现了从软盘取文件的效果。如果只想取部分文件,把通配符换成具体文件名即可。mcopy对通配符的解释由mtools自己完成,不经过 shell 的路径展开,所以*.log会正确匹配软盘上的文件,而不是当前目录里的文件。

mtools目录里还有几个冷门但有用的工具:mdu可以快速查看某个目录树占用了多少磁盘空间,mbadblocks可以像badblocks一样扫描软盘坏块但输出更简洁。这些命令对排查软盘读写老报I/O error的情况很有帮助——先跑mbadblocks,确认是不是介质物理损坏,再决定要不要换盘。

5. 用 taper 做软盘级的备份与恢复闭环

5.1 为什么备份要选 taper 而不是 tar

tar当然可以备份到软盘,tar cvf /dev/fd0 /home/user就能把目录打包写到软盘上。但软盘容量只有 1.44MB,一旦写满tar直接报错退出,你得手工换盘、重新组织命令。taper是专门为这种顺序介质设计的备份程序,由 Yusaf Nagree 编写,自带介质管理、交互式选单和错误重试机制,更适合需要多张软盘的备份任务。

taper启动时用-T指定介质类型,-lo指定备份源:

# 以可移动介质模式启动,备份指定目录 taper -T removable -lo /home/user/documents

这个命令执行后进入文本交互界面。初次启动时,先选择Change Preferences,在Tape Drive Preferences(磁带驱动器偏好)里把默认介质从磁带改为可移动介质(软盘),保存后返回主菜单。接着程序会扫描备份源目录,显示文件清单,用光标键上下移动选择要备份的对象,按空格或对应字母键标记/取消标记。选择完成后按F键开始备份,taper会按顺序写入文件,软盘满了会提示换盘。

taper支持的介质类型参数如下:

参数值含义
tape老式软盘接口磁带机
zftape新一代软盘接口磁带驱动
scsiSCSI 接口磁带机
ideIDE 接口磁带机
removable软盘、Zip 盘等可移动块设备

5.2 备份完整性与恢复验证

备份完成后,恢复操作同样在taper界面里进行,选择Restore模式并指定目标目录。每次备份结束做一次验证是值得的——把软盘重新插上,用mdir A:mount查看备份文件是否完整:

# 验证备份软盘的文件列表 mdir A: # 抽样比对单个文件 mcopy A:documents.tar.gz /tmp/verify_backup.tar.gz sha256sum /tmp/verify_backup.tar.gz

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询