奇怪的BUG:U盘插入打印机后文件目录为空,可读可写,写入内容无法在电脑端查看

本文主要是介绍奇怪的BUG:U盘插入打印机后文件目录为空,可读可写,写入内容无法在电脑端查看,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述

现象描述:从打印机扫描到U盘时,发现U盘目录为空(实际有在U盘中保存文件),扫描生成文件后,U盘插入电脑,文件目录正常显示,但找不到扫描件。再次将U盘插入打印机,可读取到前期扫描的文件并进行打印,打印内容和扫描内容完全一样。

现象总结:疑似打印机在访问U盘时使用了新的空间,与在电脑端识别到的空间不同。

软硬件环境:

  • 打印机:KONICA MINOLTA bizhub C3350i (支持从U盘打印、扫描到U盘)
  • U盘:Kingston DataTraveler 2.0 (7.25 GiB,比较老的一款,正常读写没问题,无故障历史)

排查过程:

  • 测试发现Windows电脑、MAC电脑和Linux电脑中,插入U盘均进入正常存储空间。
  • 测试发现插入U盘后打印机对新空间可读可写,由于打印机操作系统限制无法查看到U盘的属性,包括文件空间大小等信息。
  • 前期为了能在打印机上使用,专门将U盘格式化为FAT格式(打印机只能识别FAT格式,其他格式插入后不显示),其他FAT格式在打印机上测试未发现相同问题。

 

问题解决 

故障原因:采用分区编辑器(其他磁盘工具,例如分区助手、diskgenius也可以)查看U盘,发现被分为两个区,均为FAT格式,按存储单元顺序存在的第一分区,标识为EFI+BIOS,空间为200MB,在电脑设备中会被默认视为存放引导文件的空间,不可见,第二分区为可见的数据区,标识为msfdata,空间为7G左右。打印机默认读取了第一分区,并在其中进行读写操作,并且只能挂载一个分区,忽略了第二分区。

因为U盘前期用于做了启动盘,后期使用后直接格式化了,导致第一分区为空,格式化时未注意到这一点,从而看起来像打印机使用了全新的分区空间。

故障截图:

 我的电脑里的磁盘只有第二个分区可以被读取,第一个分区默认是不可见的。

 分区顺序应该是按照sda1->2->3->...的顺序来的。

解决方法:(后两个方法会丢弃原来扫描到不可见分区的文件)

  • 方法一:将第二分区分出来一部分空间,创建第三分区,将第一分区的内容拷贝进第三分区。执行后重新插入U盘,此时电脑将分配两个盘符,并在存储中显示两个磁盘,可以在第二个磁盘中找到想要的文件。
  • 方法二:删除第一分区和第二分区(需提前将数据拷出备份),重新分区U盘,将U盘分为一个分区,并重新使用打印机扫描。
  • 有问题待进一步解决的方法:将第一分区删除后,将第二分区扩容至全部空间,然后重新扫描。(此方法会产生新问题:U盘插入打印机后无法被识别,即使分区为FAT格式也无法识别,但在电脑端均可以正常读写,疑似分区路径未修改,仍然为/dev/sda2造成的【之前删掉的第一分区为/dev/sda1】)

删除第一分区后,分区号不变,仍然为sda2:

 即使将分区sda2的空间起始点移动到最起始的位置,也仍然无法在打印机上识别,刷新后分区仍然为/dev/sda2:

据此猜测,打印机只支持读取首个分区,即/dev/sda2

最终将U盘整成以下这个样子就可以正常在打印机和电脑之间使用了(方法2):

  

学习资料

EFI系统分区(英语:EFI system partition,简写为ESP),是一个FAT格式的磁盘分割,但是其分区标识是EF (十六进制) 而非常规的0E或0C,因此,该分区在Windows操作系统下一般是不可见的。UEFI固件可从ESP加载EFI启动程式或者EFI应用程式。

EFI分区通常大小约为100-200MB,用于系统启动,引导硬件设备加载操作系统。

efi是如何引导系统启动的?

EFI分区简单来说相当于一块固定在存储空间开头位置的区域,安装系统时会将程序的入口文件放在这个位置,硬件(主板)将从这个入口文件开始加载启动,并由此进入系统。(有点类似于点击微信的exe文件启动后,微信才会正常打开,硬件固定到这个区域去找这样的启动文件,操作系统厂商只需要把引导文件放在这里即可)。由于之前用U盘重装系统,需要从U盘启动微PE,首个分区被设置为EFI,并被隐藏,以保证不受破坏或不被格式化(这个引导文件很重要)。

EFI分区内通常包含哪些内容?

Boot是计算机默认引导文件所在的目录,Microsoft是微软Windows系统引导所在的目录。
Boot目录:


Microsoft目录:


Microsoft\Boot目录:


上图中红框内的bootmgfw.efi就是windows默认的系统引导文件。

更多资料:

EFI系统引导的一些零碎知识点:https://www.bbsmax.com/A/KE5QK81ZzL/
更高级的UEFI引导过程:https://blog.csdn.net/qq_42584874/article/details/123702759

这篇关于奇怪的BUG:U盘插入打印机后文件目录为空,可读可写,写入内容无法在电脑端查看的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/275999

相关文章

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

python写个唤醒睡眠电脑的脚本

《python写个唤醒睡眠电脑的脚本》这篇文章主要为大家详细介绍了如何使用python写个唤醒睡眠电脑的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 环境:win10python3.12问题描述:怎么用python写个唤醒睡眠电脑的脚本?解决方案:1.唤醒处于睡眠状