Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88722
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-18 15:16
文章分类
文章存档

2015年(3)

2014年(44)

我的朋友

分类: LINUX

2014-12-15 15:38:03

我们经常会把手机或其他电子设备插入PC机来进行一些文件的互传,当把手机插入PC机时,会看到PC上出现了一个移动磁盘,但具体在Linux下如何实现,现把方法介绍如下,至于详细的原理这里就不介绍了,因为我也只是知其然不知其所以然。好了废话不多少,现介绍如下:

1、首先,想在PC机上看到Linux板卡上的磁盘,首先你的这个Linux板卡需要支持OTG且厂商已经提供好相应驱动,我这里用的是i.mx6平台,OTG驱动都已经配置好了。

2、其次,编译内核相应模块,需要的模块为:

Location:                                                                                                                                                                                                                          

│     -> Device Drivers                                                                                                                                                                                                                

│       -> USB support (USB_SUPPORT [=y])                                                                                                                                                                                              

│         -> USB Gadget Support (USB_GADGET [=y])                                                                                                                                                                                      

-> USB Gadget Drivers ( [=m])

->File-backed Storage Gadget(USB_FILE_STORAGE [=m])

3、将要使用的核心模块名为 g_file_storage.ko,使用方法如下

~#modprobe g_file_storage  file=/root/block

4、注意最好用modprobe来加载该驱动模块,因为该驱动模块会有一些关联模块,手动一个一个加载太麻烦。该模块参数为 “file=”后紧跟你希望PC机上能看到的文件名,主要该文件在PC机端看到时,会把该文件当做一个独立的移动磁盘。比如你的Linux板卡上有一个 SD卡,在Linux上的设备文件文件为/dev/mmcblk1,那希望在PC机上看到该SD卡的操作为:

~#modprobe g_file_storage  file=/dev/mmcblk1

注意,不要把/dev/mmcblk1写成/dev/mmcblk1p1,不然在PC机上会把mmcblk1p1这个SD卡的分区当做一个新的移动磁盘,重新分区格式化,这样就导致Linux一侧和PC侧两边看到的文件不一致了。

5、当然你也可以直接把一个文件挂载成PC端的一个磁盘,

先用dd创建一个空白文件:

~# dd if=/dev/zero of=/root/block  bs=1M  count=100

把该文件推送为PC端的一个可移动磁盘:

~#modprobe g_file_storagefile=/root/block

这样PC端就可以看到一个100M大小的可移动磁盘了,格式化之后就可以直接访问了,和直接挂载SD卡的方法相比的话,就是无法再Linux端 挂载该block文件后实现和PC端一样的访问,因为在Linux一侧,该block文件挂载是直接当做一个磁盘挂载,在PC一侧,该block文件 是当做一个可移动磁盘来重新分区之后挂载得到的一个新分区而已,两边有一个MBR的偏移的差距。当然如何两边都不挂载文件系统,只是当做一个设备文件来直 接读写的话,是可以实现相互通讯的。

  • 本文来自:
  • 本文链接:

阅读(1505) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~