根本原因是FAT32 U盘以GBK编码写入中文名,而麒麟内核默认UTF-8挂载导致解码失败并自动降级为只读。解决:一、卸载U盘;二、dosfsck修复后以iocharset=gbk参数重新挂载;三、配置fstab永久生效,并关闭安全中心USB只读拦截。

银河麒麟系统中U盘文件名显示乱码、同时无法新建或修改任何内容,本质是文件系统编码与挂载参数不匹配叠加只读挂载双重故障——中文文件名在FAT32格式下默认用GBK编码写入,而麒麟内核以UTF-8挂载时会解码失败导致乱码,此时若文件系统又存在错误,内核自动降级为ro挂载,彻底锁死写入能力。
先确认乱码+只读是否由挂载编码引发
打开终端,执行:lsblk -f -o NAME,FSTYPE,LABEL,MOUNTPOINT,RO。找到U盘分区行(如sdb1),重点看RO列是否为1、FSTYPE是否为vfat/fat32。若RO=1且FSTYPE=vfat,大概率是编码错配触发了只读保护——因为内核发现UTF-8解码GBK文件名失败后,为防数据损坏强制ro挂载。
立即验证:运行mount | grep "$(lsblk -no MOUNTPOINT /dev/sdb1 2>/dev/null)",若输出中含iocharset=utf8但U盘实际是Windows下用GBK写的,就坐实了问题根源。
分三步解除乱码与只读锁定
第一步:卸载U盘
执行sudo umount "/media/用户名/MyUSB"(替换为你实际的挂载点)。若提示“device is busy”,加-l参数懒卸载:sudo umount -l "/media/用户名/MyUSB"——【必须卸载成功,否则后续修复命令直接报错退出】。
第二步:按文件系统类型修复并指定编码
先查清类型:lsblk -f | grep sdb1。
• 若FSTYPE为vfat/fat32 → 执行:sudo dosfsck -a -v /dev/sdb1,修复后手动挂载指定GBK编码:sudo mount -t vfat -o rw,uid=1000,gid=1000,iocharset=gbk,shortname=mixed /dev/sdb1 "/media/用户名/MyUSB";
• 若为ntfs → 先执行sudo ntfsfix /dev/sdb1,再挂载:sudo mount -t ntfs -o rw,uid=1000,gid=1000,utf8 /dev/sdb1 "/media/用户名/MyUSB";
• 若为exfat → 安装工具:sudo apt install exfat-utils,再执行:sudo exfatfsck -v /dev/sdb1,最后挂载:sudo mount -t exfat -o rw,uid=1000,gid=1000 /dev/sdb1 "/media/用户名/MyUSB"。
第三步:永久生效挂载参数
编辑fstab:sudo nano /etc/fstab,在末尾新增一行:/dev/sdb1 /media/用户名/MyUSB vfat rw,uid=1000,gid=1000,iocharset=gbk,shortname=mixed 0 0(NTFS/exFAT对应调整类型和参数)。保存后执行sudo systemctl restart udisks2,拔插U盘即可自动按新参数挂载。
同步关闭安全中心外设拦截
方法一:图形界面操作
点击【开始菜单】→搜索“安全中心”→进入【设备安全】→【高级配置】→找到【USB移动存储】→将权限从“只读”改为“读写”→点击【应用】→重新插拔U盘。
方法二:命令行临时禁用
执行sudo kysec_set -d,立即停用kysec模块,解除外设拦截与只读强制策略——【此操作重启后失效,无需担心长期安全风险】。

















