如果你曾经在Linux系统上插入USB记忆棒并发现无法复制、删除或修改文件,并且它以只读方式安装,那么你绝对不是一个人,因为这是Linux用户经常遇到的问题,无论使用的是Ubuntu、Fedora、Arch还是任何其它发行版。
实际上,这个问题可能由于多种不同的原因而发生,注意归纳起来包括以下几个方面:
- USB驱动器的文件系统可能已损坏,尤其是在未安全弹出的情况下移除时。
- 有时候,当Linux检测到文件系统错误时,会将驱动器挂载为只读模式,以防止进一步损坏。
- 其它情况是,仅仅USB记忆棒上的物理写保护开关已开启(如果有的话)。
- 还有一种情况是,在Windows上不当移除USB闪存盘,使其处于Linux不愿处理的 “dirty” 状态。
好消息是,大多数情况下,你无需更换U盘,只需使用正确的工具和命令即可解决问题并恢复完全的读写访问权限。接下来将引导你完成整个故障排除过程,以便帮助你确定原因并自信地修复它。
步骤1、识别USB设备
当将USB棒插入 Linux系统会根据已连接的驱动器数量为其分配一个设备名称(例如/dev/sdb
或/dev/sdc
)。所有,在尝试修复之前,务必准确了解你的U盘的具体设备类型,如果弄错设备可能会影响你的内置硬盘或其它存储设备。
以下是使用lsblk命令正确识别你的USB记忆棒的方法,命令如下:
lsblk
lsblk是“list block devices(列出块设备)”的缩写,它以树状格式显示所有连接的存储设备。
此外,还可以使用fdisk命令来获取详细分解:
sudo fdisk -l
这会显示所有分区和设备类型,查找类似以下内容的分区就行:
步骤2、检查安装选项
当插入USB记忆棒时,Linux系统会挂载它,这意味着它将US 的文件系统附加到一个文件夹(例如/media/username/usb
),以便你可以访问其中的文件。但有时候,Linux会将其挂载为只读(你可以读取文件但不能写入、删除或修改任何内容),这通常在系统认为USB可能已损坏时保护数据的情况下出现。
所以,要检查USB设备是否以只读方式安装,请使用以下命令:
mount | grep /dev/sd
这会过滤已安装设备的列表,仅显示你的USB和类似设备。这里最重要的是ro
,它表示只读。如果一切正常,会看到rw
,它代表读写。
如果你在挂载选项中看到ro
(只读),则需要卸载USB设备来修复它。
sudo umount /dev/sdc1
步骤3、使用fsck运行文件系统检查
fsck命令是检查和修复Linux文件系统问题的首选工具 ,它类似于Windows的“ chkdsk ”。当USB记忆棒以只读方式安装时,通常是因为Linux检测到文件系统损坏并自动限制写入权限以防止进一步损坏。
运行fsck有助于检测并修复这些错误,命令如下:
sudo fsck -n /dev/sdc1
一旦fsck成功完成,请尝试手动安装驱动器:
sudo mount /dev/sdc1 /mnt
如果没有弹出错误并且你可以创建/删除文件,则表示一切恢复正常。
步骤4:重新挂载为读写模式(如果需要)
如果运行fsck后你的USB记忆棒仍然停留在只读模式,那么有一个快速技巧可能会有所帮助,那就是使用读写权限重新挂载它:
sudo mount -o remount,rw /dev/sdc1
注意:如果你的设备安装在特定文件夹下(例如如/media/yourusername/USB
),请确保该文件夹是被重新安装的文件夹。
步骤5:检查dmesg寻找线索
如果前面的步骤不起作用,那么是时候借助dmesg命令进行更深入检测了,该命令将显示系统消息,包括插入USB时发生的内核级警告和错误:
dmesg | tail -n 50
请特别注意如下几行:
[ 1234.56789] EXT4-fs error (device sdc1): ... [ 1234.56790] Remounting filesystem read-only
这些类型的消息意味着Linux内核检测到了严重问题,为了保护你的数据,它自动以只读模式重新挂载了USB。这通常是由于文件系统损坏、坏扇区或USB驱动器的物理损坏造成的。
步骤6、切换用户会话默认值
这种情况出现的可能性较小,一般Linux系统都是已经设置好的,但以防万一,建议还是试试。具体可以按照以下步骤仅需操作:
以此打开“Disks(磁盘)” > “Additional Partitition Options(附加分区选项)” > “Edit Mount Options(编辑挂载选项)”,然后切换至“User Session Defaults(用户会话默认值)”,这样再看看能否访问设备并且是否可以写入。
步骤7、重新格式化(如有必要)
如果上面步骤多做了,但是仍然无法写入U盘,重新格式化可能是最后的选择,但请注意,这将清除U盘上的所有数据,所以请确保已备份所有重要数据(如果允许的话)。
格式化之前,必须先卸载它:
sudo umount /dev/sdc1
现在可以使用所选的文件系统来格式化USB,命令如下:
sudo mkfs.vfat /dev/sdc1 #对于FAT32格式 sudo mkfs.ntfs /dev/sdc1 #对于NTFS格式 sudo mkfs.ext4 /dev/sdc1 #对于EXT4格式
格式化后,再次安装USB以验证其是否正常工作:
sudo mount /dev/sdb1 /mnt
尝试在/mnt
目录下复制或创建文件以确认写入功能已恢复。
小结
在Linux系统中修复只读USB驱动器通常需要检查文件系统错误、以正确的权限重新挂载,或者在极端情况下重新格式化驱动器。按照上述步骤,可以诊断根本原因并恢复完全访问权限,但仅限于软件层面。
如果这些方法都不起作用,那么就该考虑硬件故障的可能性,例如,在数据传输过程中,由于电压波动,USB驱动器可能会切换到只读模式来保护数据。如果是硬件故障,单靠软件修复根本无济于事,
说得对——没错,如果U盘设置了硬件锁,或者由于电涌或硬件问题进入了保护性只读模式,在这种情况下,U盘的控制器实际上会阻止任何写入操作,以防止数据丢失或损坏。如果是物理开关(某些USB有),请确保将其设置为“write”位置。但如果是故障触发的固件级锁定,则可能需要借助制造商的恢复工具(如果可用),或者重新刷新USB控制器(风险较高),当然最坏的情况是驱动器被永久锁定,那只有更换USB了。