ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux下软盘格式化实战:FAT12与fdformat命令详解

Linux下软盘格式化实战:FAT12与fdformat命令详解 简介这份PDF面向Linux系统运维与开发初学者聚焦软盘格式化这一经典存储管理任务帮助读者理解Linux下块设备操作的基本流程。内容涵盖设备识别、fdformat低级格式化、mke2fs创建ext2文件系统、挂载访问以及setfdprm调整软盘参数、taper备份工具的使用等知识点适合作为操作系统课程实验或系统维护入门的参考文献。资源包共1个文件为PDF格式大小约129KB便于随身查阅与打印。目前已有112人学习下载。通过这份资料读者可掌握软盘设备文件命名规则、格式化与文件系统创建的完整命令链路并了解taper在软盘、硬盘及磁带等介质上的备份恢复思路为后续理解更复杂的存储设备管理打下基础。1. 软盘格式化在 Linux 下为什么还有人折腾从一张 3.5 寸盘说起手里攥着一张 3.5 寸软盘插进 USB 软驱dmesg能看到sdb认出来了但mount死活挂不上或者挂上之后写进去的文件在别的老设备上读不出来——这是我最近帮一个做工业控制的朋友处理的问题。他手上有一台 90 年代的数控机床程序只能通过软盘导入而他的主力工作机早就换成了 Linux。标题里的「Linux 下软盘格式化」说的就是这件事在 Linux 环境下把软盘重新格式化成正确的文件系统让它能被目标设备识别和读写。这不是怀旧是实打实的存量设备维护需求。适合谁看手上有老设备、老软驱、老软盘又不想专门留一台 Windows 98 机器的人。下面把我踩过的路子和参数一次讲清楚。2. 先搞清楚软盘在 Linux 里长什么样设备节点、容量与文件系统选型2.1 软盘设备节点与容量对照Linux 把软盘当块设备处理传统内置软驱是/dev/fd0USB 软驱通常被识别成 SCSI 设备挂载在/dev/sdX上。先确认设备名别急着动手# 查看内核是否识别到软驱 dmesg | grep -i -E fd0|floppy|sd.*removable # 列出所有块设备找到软驱对应的设备节点 lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL # 查看 USB 设备详情确认软驱型号 lsusbdmesg里如果出现fd0: 1.44M floppy之类的字样说明内置软驱驱动加载正常。USB 软驱一般会显示成sd 6:0:0:0: [sdb] Attached SCSI removable disk容量显示 1.44M 左右。lsblk的MODEL列能帮你区分是 U 盘还是软驱——软驱通常显示USB Floppy或类似字样。容量对照表如下别把 720K 的盘按 1.44M 格式化物理介质不支持就是白费功夫盘型容量磁道数每道扇区设备节点示例3.5 寸 DD720K809/dev/fd03.5 寸 HD1.44M8018/dev/fd03.5 寸 ED2.88M8036/dev/fd05.25 寸 HD1.2M8015/dev/fd02.2 文件系统选型FAT12 是默认答案但要看目标设备软盘容量小文件系统选择不多。Linux 下能用的主要是 FAT12 和 ext2。选哪个取决于目标设备FAT12兼容性最好DOS、Windows 9x、老式工控机、数控系统基本都认。软盘的标准文件系统就是 FAT121.44M 容量下簇大小 512 字节或 1K浪费少。ext2Linux 之间交换数据可以用但老设备不认。而且 ext2 的 inode 表和块组结构在 1.44M 上开销偏大实际可用空间会少几十 K。minix更古老除非目标系统明确要求否则不用考虑。我一般直接上 FAT12除非客户明确说目标设备是 Linux 且只认 ext2。mkfs.fat加-F 12参数强制 FAT12不加的话工具可能根据容量自动选 FAT12 或 FAT161.44M 通常会自动选 FAT12但显式指定更稳妥。提示格式化前先用dd把软盘内容备份成镜像万一格式化参数错了还能恢复。软盘这东西读一次少一次。3. 动手格式化从 fdformat 到 mkfs.fat 的完整命令链3.1 低层格式化fdformat 的用法与限制fdformat做的是物理层面的磁道格式化相当于给软盘重新划分磁道和扇区。这一步不是必须的如果软盘之前已经格式化过且没有坏道直接mkfs.fat就行。但如果软盘是从未知来源拿到的或者mkfs.fat报 I/O 错误先跑一遍fdformat能排除物理格式问题。# 安装 fdformat属于 util-linux 包大多数发行版自带 # Debian/Ubuntu: sudo apt install util-linux # RHEL/CentOS: sudo yum install util-linux # 对 /dev/fd0 做 1.44M 低层格式化-n 表示不校验 sudo fdformat /dev/fd0 # 如果需要校验更慢但能发现坏道 sudo fdformat /dev/fd0fdformat不带参数时默认按 1.44M 格式化。如果要格式化成 720K需要加-f 720或者用setfdprm先设置参数。USB 软驱通常不支持fdformat因为 USB 软驱的固件自己处理物理格式化Linux 这边只能做逻辑格式化。如果fdformat报Operation not supported说明你的 USB 软驱不支持低层格式化跳过这步直接mkfs.fat。3.2 逻辑格式化mkfs.fat 创建 FAT12 文件系统逻辑格式化才是真正写入文件系统结构的一步。mkfs.fat是 dosfstools 包里的工具专门处理 FAT 系列# 安装 dosfstools # Debian/Ubuntu: sudo apt install dosfstools # RHEL/CentOS: sudo yum install dosfstools # 创建 FAT12 文件系统-F 12 强制 FAT12-n 设置卷标 sudo mkfs.fat -F 12 -n FLOPPY01 /dev/sdb # 如果要格式化成 720K需要先确认设备容量 # USB 软驱一般不支持 720K内置软驱可以用 setfdprm 切换 sudo setfdprm /dev/fd0 720/720 sudo mkfs.fat -F 12 /dev/fd0-F 12是关键参数强制 FAT12。不加的话mkfs.fat会根据分区大小自动选择 FAT 类型1.44M 通常选 FAT12但有些版本可能选 FAT16导致老设备不认。-n设置卷标最长 11 个字符建议用大写字母和数字避免特殊字符。/dev/sdb要换成你实际软驱的设备节点用lsblk确认。格式化完成后用fsck.fat检查一下# 检查 FAT 文件系统完整性 sudo fsck.fat -v /dev/sdb # 查看文件系统信息 sudo fsck.fat -l /dev/sdbfsck.fat -v会输出详细的文件系统参数包括 FAT 类型、簇大小、根目录条目数等。确认FAT type显示12就对了。3.3 挂载与读写验证格式化完别急着拔挂载上去写个文件试试# 创建挂载点 sudo mkdir -p /mnt/floppy # 挂载软盘指定 FAT 类型和编码 sudo mount -t vfat -o rw,uid$(id -u),gid$(id -g),iocharsetutf8 /dev/sdb /mnt/floppy # 写入测试文件 echo test $(date) /mnt/floppy/test.txt # 查看文件列表 ls -la /mnt/floppy/ # 卸载 sudo umount /mnt/floppy-t vfat指定 FAT 文件系统iocharsetutf8让中文文件名能正常显示uid和gid让你不用 sudo 就能读写。写完之后umount再重新mount确认文件还在这一步能验证文件系统结构是否完整。如果重新挂载后文件丢失或乱码多半是 FAT 类型不对或者软盘有坏道。注意软盘写完后一定要umount再拔Linux 有写缓存直接拔可能丢数据。sync命令可以强制刷盘但umount更彻底。4. 避坑与排查软盘格式化最常见的 5 个翻车现场4.1 现象mkfs.fat 报 “No such device” 或 “Permission denied”原因设备节点写错了或者当前用户没有权限。USB 软驱的设备名不固定这次是/dev/sdb下次插可能变成/dev/sdc。另外普通用户默认没有块设备写权限。解决先用lsblk确认设备名再用sudo执行格式化命令。如果lsblk里看不到软驱检查 USB 线是否插紧或者换一个 USB 口。dmesg | tail -20能看到内核最新的设备识别日志。4.2 现象格式化成功但老设备读不出来原因FAT 类型不对或者软盘容量不匹配。老设备可能只认 FAT12而你格式化成了 FAT16。或者软盘是 720K 的你按 1.44M 格式化了磁道数对不上。解决用mkfs.fat -F 12强制 FAT12。确认软盘物理容量720K 盘不要按 1.44M 格式化。如果目标设备是 DOS 或 Windows 9x卷标用大写英文不要用中文或特殊字符。4.3 现象mount 报 “wrong fs type, bad option, bad superblock”原因文件系统没格式化成功或者设备节点指向了整盘而不是分区。软盘通常没有分区表直接格式化整盘设备如/dev/sdb不要加分区号如/dev/sdb1。解决重新跑mkfs.fat确认输出没有报错。用fsck.fat -v检查文件系统。如果fsck报大量错误可能是软盘物理损坏换一张盘试试。4.4 现象写入文件后读出来是乱码或文件名变成 “????????.???”原因编码问题。Linux 默认用 UTF-8FAT 文件系统用 UTF-16 或本地代码页。挂载时没指定iocharset中文文件名就会乱码。解决挂载时加iocharsetutf8。如果目标设备是纯 DOS 环境建议文件名用 8.3 格式8 个字符主名 3 个字符扩展名全大写避免兼容性问题。4.5 现象fdformat 报 “Operation not supported” 或 USB 软驱不响应原因USB 软驱的固件接管了物理格式化Linux 的fdformat命令无法直接操作。这是正常现象不是故障。解决跳过fdformat直接mkfs.fat。USB 软驱插入软盘后会自动做物理格式化如果软盘是预格式化的则跳过Linux 这边只需要做逻辑格式化。如果mkfs.fat也报 I/O 错误可能是软驱磁头脏了用清洁盘清理一下。5. 进阶技巧用 dd 做软盘镜像备份与批量格式化脚本5.1 用 dd 备份和恢复软盘镜像软盘寿命有限读一次少一次。拿到能正常读取的软盘第一件事是做镜像备份# 备份软盘为镜像文件bs512 是软盘扇区大小count 根据容量算 # 1.44M 2880 扇区720K 1440 扇区 sudo dd if/dev/sdb offloppy_backup.img bs512 count2880 statusprogress # 恢复镜像到软盘 sudo dd iffloppy_backup.img of/dev/sdb bs512 count2880 statusprogress # 查看镜像文件系统信息 file floppy_backup.img sudo fsck.fat -v floppy_backup.imgbs512是软盘的标准扇区大小count2880对应 1.44M 容量。statusprogress让 dd 输出进度不然等半天不知道卡住没有。备份出来的.img文件可以用mount -o loop直接挂载查看内容不用真插软盘# 挂载镜像文件查看内容 sudo mount -o loop,ro,iocharsetutf8 floppy_backup.img /mnt/floppy ls -la /mnt/floppy/ sudo umount /mnt/floppy5.2 批量格式化脚本与参数速查如果手上有几十张软盘要处理写个脚本省事#!/bin/bash # floppy_format.sh - 批量格式化软盘 # 用法: sudo ./floppy_format.sh /dev/sdb DEVICE$1 VOLUME_LABELFLOPPY if [ -z $DEVICE ]; then echo 用法: $0 设备节点 exit 1 fi # 确认设备存在且是块设备 if [ ! -b $DEVICE ]; then echo 错误: $DEVICE 不是块设备 exit 1 fi # 确认设备容量在软盘范围内小于 4M SIZE$(blockdev --getsize64 $DEVICE 2/dev/null) if [ $SIZE -gt 4194304 ]; then echo 错误: $DEVICE 容量 ${SIZE} 字节不像是软盘 exit 1 fi echo 正在格式化 $DEVICE ... sudo mkfs.fat -F 12 -n $VOLUME_LABEL $DEVICE if [ $? -eq 0 ]; then echo 格式化完成检查文件系统... sudo fsck.fat -v $DEVICE else echo 格式化失败 exit 1 fi脚本里加了容量检查防止手滑把 U 盘或硬盘给格了。blockdev --getsize64返回设备字节数软盘最大 2.88M设 4M 阈值足够安全。mkfs.fat返回 0 表示成功非 0 就报错退出。参数速查表参数作用推荐值-F 12强制 FAT12必加-n卷标大写英文≤11 字符-s每簇扇区数1默认1.44M 下-r根目录条目数224默认iocharsetutf8挂载编码中文环境必加bs512 count2880dd 镜像参数1.44M 盘5.3 验证格式化结果是否真的可用格式化完别只看命令返回码实际验证一下# 挂载后写入多个文件测试根目录条目和簇分配 sudo mount -t vfat -o rw,iocharsetutf8 /dev/sdb /mnt/floppy for i in $(seq 1 20); do echo file $i content /mnt/floppy/FILE$i.TXT done ls /mnt/floppy/ | wc -l sudo umount /mnt/floppy # 重新挂载确认文件都在 sudo mount -t vfat -o ro,iocharsetutf8 /dev/sdb /mnt/floppy ls /mnt/floppy/ | wc -l sudo umount /mnt/floppy写 20 个文件再读出来能验证 FAT 表、根目录、数据区的读写都正常。如果文件数量对不上或者内容损坏说明软盘有坏道或者格式化参数有问题。我一般还会用md5sum对比写入前后的内容确保数据一致性。最后说个血泪教训软盘这东西别囤。我见过太多人攒了一盒子软盘真要用的时候一半读不出来。格式化之前先备份格式化之后立刻验证验证通过就赶紧把数据导出来。软盘只是过渡介质别把它当长期存储。希望帮到你。本文还有配套的精品资源点击获取
返回列表