热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

U盘和移动硬盘挂载系列问题解决

U盘和移动硬盘挂载系列问题解决--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
  by tmsonhust

  前几天已经把U盘成功挂载到板子上了,今天测试一下移动硬盘。

  为了心里对硬盘的情况有个底,我先把移动硬盘插在我的电脑上试了一下,看了一下大小,分区情况,文件系统格式以及硬盘的VID和PID。然后打开板子电源,linux自启动,手动加载了gpio的驱动之后,板子就可以支持USB存储设备了,因为我已经把对USB storage的支持编译进内核了,连之前还要加载ohci-hcd.ko现在也可以省了。我把移动硬盘的一根线接到了一个USB口上,超级终端没反应,拔了再插,还是一样,移动硬盘倒是有点反应,灯亮了,但也改变不了它没被识别的事实,一点转动的迹象都没有。我取下硬盘,左看右看,看起来不像是不知名厂商生产的啊,怎么会识别不了呢,难道要修改unusual_devs.h这个usb产品登记表不成,不管先打开这个文件看看,结果我傻眼了,要填那么多信息我哪知道哦,而且MS里面的信息包罗万象,我所知道的一些厂商都被列了出来。看来这条路有点行不通,应该不可能没被包括的,我看好这个移动硬盘厂家的实力。突然不知道怎么来了灵感,我把移动硬盘的另一根线也插了上去,天啊,感动得要哭,超级终端立马有反应了,打印出了一行行识别硬盘的信息,这表示驱动程序很正常的工作了,也不存在我之前关于产品登记表中没有其信息的猜想。虽然这样被识别了,但是还是有点气氛,居然是这种问题,于是我去查了一下关于这两根线的作用:一根是数据线,一根是辅助供电线,很显然,当它插在我们板子上的时候,单使用数据线供电不足,显然不能工作,必须插上另外一根线进行辅助供电。

  好了,解决了识别的问题,接下来就要挂载了。挂载的方法很简单,mount一下就行了,结合识别时打印出的信息,我使用了如下命令:mount -t ntfs /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/usb,看来真是好事多磨,问题又来了,说是找不到该设备文件,我就奇怪了,设备文件明明就在这个目录下怎么就找不到呢,突然想到linux2.6内核默认是不支持ntfs的文件格式的,我打开.config文件看了一下,果然#CONFIG_NTFS_FS is not set,修改为CONFIG_NTFS_FS=y,重新编译内核,挂载,ok,搞定。可以看见硬盘里的资料了,不过还是有问题,由于不能支持中文,硬盘里的不少以中文命名的文件显示不出来,记得之前在我的电脑上识别移动硬盘时也出现过这个问题,解决的办法很简单,只需要在mount时加上参数-o iocharset=cp936就可以了。可是今天就像见鬼了似的,又说参数不正确,不能识别cp936,iocharset cp936找不到什么的,具体错误信息如下:

  Unable to load NLS Charset cp936
  FAT:IO charset cp936 not found

  有了之前那个ntfs的经验后,结合网上搜的一些资料,猜想可能是内核里也有对应的一个选项是用来支持cp936的,打开.config文件,果然不出所料,赫然写着#CONFIG_NLS_CODEPAGE_936 is not set,将其改为#CONFIG_NLS_CODEPAGE_936 = y,再次重新编译内核,然后mount带-o参数时就不会报错了。这样,中文不被支持的问题也得到了解决。

  到目前为止,U盘和移动硬盘都已经可以很好地挂载到板子上了。不过有一点不够完美的是,每次挂载的时候,对于设备文件都有一个那么长的路径,很麻烦,完全不像在电脑上的时候,mount一下/dev/sda就可以了,而且奇怪的是在dev目录下根本找不到sda以及sdb这些设备文件,很奇怪,我以为是海思对内核进行了修改,将生成设备文件的代码改了,后来通过比较海思的代码和标准2.6的代码,证实了我这个想法的错误,/dev/scsi/host0/bus0/target0/lun0这种表示方法是从2.6开始采用的,是一种统一的表示方法,可以层次分明地表示出usb挂载的top关系。现在该怎么办呢,百度+google吧,网上有资料说在制作文件系统的时候对设备文件的建立可以自由选择,那么我们的/dev目录下不存在sda以及sdb设备结点,估计就是文件系统为了保持简单没有包含吧,该怎么添加呢,难不成要重做个文件系统不成,显然不用,那样就显然有点杀鸡用牛刀了,一个命令mknod就可以搞定嘛,建立sda结点mknod sda 8 0 1,建立sdb以及sda1结点等同理,建立之后马上去/dev下看了看,果然多出了一个sda,然后挂载/dev/sda,居然没出错,意思就是挂载成功了,为了不至于每次都要敲mknod命令,我将他们写入了一个初始化的脚本/etc/init.d/rcS里,这样每次系统启动时就会自动建立这些设备结点了。今天在网上搜资料的时候也发现了一个现象,对于嵌入式开发板来说,好像大家都是在使用这种比较长的路径下的设备文件在挂载设备,我想出现这种现象的原因很可能是大家的文件系统没有把sda以及sdb这些设备结点建立起来吧,这样即使USB驱动升序识别到了你的U盘为sda或者sdb,它也找不到sda以及sdb设备文件来与之对应。

  调试过程中的一点点小发现都是那么令人兴奋,感觉真好,以此记今天的调试过程。
推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
author-avatar
爱智孝的蛋清汤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有