ARTICLE DETAIL

资讯详情

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

Linux下软盘格式化实战:从设备节点到mkfs的完整避坑指南

Linux下软盘格式化实战:从设备节点到mkfs的完整避坑指南 简介这份PDF面向Linux系统运维初学者与需要了解传统存储介质管理的开发者聚焦Linux环境下软盘格式化的完整流程。内容涵盖设备识别、fdformat低级格式化、mke2fs创建ext2文件系统、挂载访问以及setfdprm调整软盘参数等关键操作并延伸介绍taper备份工具在软盘、硬盘与磁带介质上的档案管理用法。资源包共1个文件为PDF格式大小约129KB篇幅精炼适合作为命令行实操的速查参考。已有112人学习下载说明其在Linux基础存储管理领域仍具参考价值。读者可借此掌握软盘设备文件命名规则、格式化与文件系统创建的命令组合理解备份与恢复工具的基本用法为后续学习更复杂的存储设备管理打下基础尤其适合需要查阅传统Linux操作细节的系统维护人员。1. 软盘格式化在 Linux 下为什么还有人折腾从一张 3.5 寸盘说起手里攥着一张 3.5 寸软盘插进 USB 软驱dmesg里能看到sdb冒出来可mount就是报错——这种场景在工控设备维护、老机床参数备份、复古计算玩家圈子里并不罕见。Linux 下软盘格式化这件事说小很小说坑也真不少设备节点认不对、fdformat找不到、mkfs报「不是块设备」、写保护没拨、USB 软驱固件抽风任何一个环节都能让你卡半小时。这篇笔记面向三类人手里有软盘和 USB 软驱需要把盘重新整一遍的运维、要给老设备做启动盘或数据盘的嵌入式工程师、以及想搞明白 Linux 块设备底层逻辑的折腾党。核心链路就三步确认设备节点、低级格式化、建文件系统。听起来简单但每一步都有玄学下面按实操顺序拆开讲。2. 先搞清楚设备节点和软盘容量别对着错误的 /dev 下手2.1 软盘在 Linux 里的设备命名规则传统内置软驱走/dev/fd0、/dev/fd1这是内核floppy模块提供的。但现在绝大多数人是通过 USB 外置软驱操作它会被识别成 SCSI 磁盘通常是/dev/sdb或/dev/sdc具体看系统里已有几块盘。判断方法很直接# 插入 USB 软驱前后各跑一次对比差异 lsblk -o NAME,SIZE,TYPE,TRAN,MODEL # 或者看内核日志 dmesg | tail -30lsblk输出里如果出现一个SIZE为1.4M或1.44M、TRAN为usb的设备那就是它。注意软盘容量标称 1.44MB实际是 1440 KiBlsblk可能显示1.4M别以为是坏盘。提示有些 USB 软驱只在插入介质后才暴露块设备节点空驱时lsblk看不到先把盘插进去再查。2.2 容量、磁道、扇区这些参数到底怎么对应3.5 寸高密盘的标准几何参数是固定的理解这几个数字对后面fdformat和mkfs很关键参数数值说明柱面数Cylinders80磁道数磁头数Heads2双面每道扇区Sectors/Track18高密标准扇区大小512 字节固定总容量80×2×18×512 1474560 字节约 1.44MB低密盘是 9 扇区/道容量 720KB。如果你拿一张老的低密盘当高密盘格式化大概率会得到一堆坏道。反过来高密盘按低密格式化通常没问题只是浪费容量。2.3 确认设备节点的三条命令在动手格式化之前务必确认三件事设备节点名、是否只读、有没有被挂载。# 1. 确认节点名假设是 /dev/sdb ls -l /dev/sdb # 2. 检查是否已被挂载有输出就先 umount mount | grep sdb # 3. 检查写保护状态软盘侧面的滑块 # 物理检查滑块露出小孔 写保护开启此时任何写操作都会失败如果mount | grep sdb有输出先sudo umount /dev/sdb。如果 umount 报「target is busy」用lsof /dev/sdb或fuser -m /dev/sdb找出占用进程。写保护这个坑后面避坑章节还会细说因为它报的错特别有迷惑性。3. 低级格式化与建文件系统fdformat 和 mkfs 的完整链路3.1 低级格式化到底做了什么低级格式化low-level format是在盘片上重新划分磁道和扇区写入扇区头、地址标记和校验信息。这一步由软驱控制器完成fdformat只是发指令。对已经用过的旧盘低级格式化能刷新磁介质、标记坏道对新盘出厂一般已经做过但重新做一遍更保险。关键点fdformat只对/dev/fd*这类传统软驱设备节点有效。USB 软驱被识别成 SCSI 磁盘后fdformat /dev/sdb通常会报ioctl(FDFMTTRK): Inappropriate ioctl for device。这是最常见的翻车点。3.2 传统软驱的 fdformat 操作如果你用的是主板上的内置软驱接口设备是/dev/fd0流程如下# 安装工具Debian/Ubuntu 系 sudo apt install fdutils # 低级格式化-n 表示不校验速度快但建议首次不加 -n sudo fdformat /dev/fd0 # 输出会逐道显示最后出现 Format completed # 建 FAT12 文件系统 sudo mkfs.msdos -F 12 /dev/fd0 # 或者建 ext2老 Linux 软盘常用 sudo mkfs.ext2 /dev/fd0fdformat不加-n时会边格式化边校验坏道会直接报出来。-n跳过校验快但可能漏掉坏道。我一般首次格式化不加-n确认盘没问题后再批量操作才加。3.3 USB 软驱没有 fdformat 怎么办USB 软驱走 SCSI 子系统低级格式化这一步通常由固件自动完成你插盘进去它就已经是格式化状态。你要做的是直接建文件系统# 假设设备是 /dev/sdb # 先确认没有挂载 sudo umount /dev/sdb 2/dev/null # 建 FAT12 文件系统软盘标准 sudo mkfs.msdos -F 12 -n MYFLOPPY /dev/sdb # 验证 sudo fsck.msdos -v /dev/sdb-F 12强制 FAT12这是软盘的标准文件系统兼容性最好Windows、老设备、DOS 都能读。-n是卷标最长 11 字符。如果你不指定-F 12mkfs.msdos可能根据容量自动选 FAT12但显式指定更稳。3.4 挂载验证与读写测试格式化完必须挂载验证否则你不知道到底成没成# 创建挂载点 sudo mkdir -p /mnt/floppy # 挂载 sudo mount -t vfat /dev/sdb /mnt/floppy # 写入测试文件 echo hello floppy | sudo tee /mnt/floppy/test.txt # 读回验证 cat /mnt/floppy/test.txt # 卸载 sudo umount /mnt/floppy如果挂载报wrong fs type, bad option, bad superblock说明文件系统没建成功回到上一步重来。如果写入报Read-only file system检查写保护滑块和dmesg里的 I/O 错误。3.5 参数速查mkfs.msdos 常用选项选项含义建议值-FFAT 位数软盘用 12-n卷标任意≤11 字符-I强制格式化整盘盘有分区表时用-v详细输出排错时加-c检查坏块旧盘建议加-c会在格式化前扫描坏块旧盘强烈建议加上多花几十秒但能避免后面数据写丢。4. 避坑与排查软盘格式化最常见的五个翻车现场4.1 现象fdformat 报 Inappropriate ioctl for device原因你对 USB 软驱的/dev/sdX节点用了fdformat而fdformat只认/dev/fd*的传统软驱接口。USB 软驱走 SCSI 子系统不支持这个 ioctl。解决USB 软驱跳过fdformat直接mkfs.msdos -F 12。如果一定要低级格式化只能找带传统软驱接口的老机器或者用软驱厂商自带的 Windows 工具。4.2 现象mkfs 报「不是块设备」或 Permission denied原因设备节点写错或者没用 sudo。还有一种情况是设备节点存在但实际没插盘内核创建了节点但底层无介质。解决先用lsblk确认节点和容量再sudo执行。如果lsblk里容量显示为 0 或节点不存在重新插拔软盘检查dmesg有没有medium not present之类的提示。4.3 现象写入时报 Read-only file system原因软盘侧面的写保护滑块拨到了保护位置或者 USB 软驱的写保护开关被触发。这个坑最迷惑人的地方在于mount能成功读也正常只有写才报错。解决把软盘侧面滑块拨到关闭位置露出的小孔被挡住。USB 软驱如果有写保护开关也检查一下。改完重新 mount。4.4 现象格式化成功但挂载报 bad superblock原因mkfs过程中断或者盘有物理坏道导致文件系统元数据写坏。旧盘尤其常见。解决重新格式化这次加-c让 mkfs 先扫坏块。如果反复失败换一张盘这张基本可以扔了。也可以用badblocks -w /dev/sdb做破坏性坏道扫描确认。4.5 现象dmesg 里大量 I/O error 或 sense key原因USB 软驱固件兼容性问题或者软驱磁头脏了。有些廉价 USB 软驱在 Linux 下驱动支持不完整表现为间歇性读写失败。解决换一个 USB 口优先 USB 2.0 口USB 3.0 有时兼容性更差换一根线清理磁头。如果还不行换一个品牌的 USB 软驱。这个属于硬件玄学软件层面无解。5. 批量处理与镜像制作把软盘玩出花的两招5.1 用 dd 做整盘镜像和回写软盘容量固定 1474560 字节做镜像非常方便这也是老软件归档的常用手法# 读成镜像文件 sudo dd if/dev/sdb offloppy.img bs512 count2880 statusprogress # 回写到另一张盘 sudo dd iffloppy.img of/dev/sdb bs512 count2880 statusprogress # 校验一致性 md5sum floppy.img sudo dd if/dev/sdb bs512 count2880 | md5sumbs512 count2880正好覆盖 1.44MB 全部扇区。statusprogress让你看到进度不然 dd 静默跑完你心里没底。回写时如果目标盘容量一致直接整盘覆盖连格式化都省了。5.2 批量格式化脚本如果你有一堆盘要处理写个循环省事#!/bin/bash # 批量格式化 USB 软驱设备节点作为参数传入 DEV${1:-/dev/sdb} LOGfloppy_format_$(date %Y%m%d_%H%M%S).log echo 目标设备: $DEV | tee -a $LOG read -p 确认要格式化 $DEV 吗(yes/no) confirm [ $confirm ! yes ] echo 已取消 exit 1 while true; do read -p 插入软盘后按回车输入 q 退出: input [ $input q ] break sudo umount $DEV 2/dev/null if sudo mkfs.msdos -F 12 -c -v $DEV $LOG 21; then echo $(date): 格式化成功 | tee -a $LOG else echo $(date): 格式化失败检查盘或写保护 | tee -a $LOG fi done脚本里-c做坏块检查-v输出详情日志留档方便追溯哪张盘有问题。read -p做人工确认避免误操作。这个脚本我用了几年处理几十张老盘没出过岔子。5.3 验证镜像可引导性的技巧如果软盘是做启动盘用的格式化完还要验证引导扇区# 查看引导扇区前 512 字节 sudo dd if/dev/sdb bs512 count1 | xxd | head -20 # 正常引导盘结尾应有 0x55AA 标志 # 偏移 510 处应为 55 aa如果 510 偏移不是55 aa说明引导扇区没写对这张盘不能引导。做 DOS 启动盘的话还需要用sys命令或 dd 写入引导代码单纯mkfs是不够的。5.4 一个我踩过的坑早年我图省事对一批旧盘直接mkfs.msdos不加-c结果有三张盘表面看着格式化成功写文件到一半报 I/O error数据丢了一半。后来养成习惯旧盘一律加-c新盘才跳过。这个习惯帮我省了不少后悔药。软盘这东西物理介质老化是常态软件层面再小心也不为过。希望帮到你。本文还有配套的精品资源点击获取
返回列表