標籤:style io 使用 sp on 檔案 bs ad linux
我們經常會把手機或其他電子裝置插入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 (<choice> [=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_storage file=/root/block
這樣PC端就可以看到一個100M大小的可移動磁碟了,格式化之後就可以直接存取了,和直接掛載SD卡的方法相比的話,就是無法再Linux端掛載該block檔案後實現和PC端一樣的訪問,因為在Linux一側,該block檔案掛載是直接當做一個磁碟分割掛載,在PC一側,該block檔案是當做一個可移動磁碟來重新分區之後掛載得到的一個新分區而已,兩邊有一個MBR的位移的差距。當然如何兩邊都不掛載檔案系統,只是當做一個裝置檔案來直接讀寫的話,是可以實現相互連訊的。
Linux下通過OTG把板卡上的一個磁碟或檔案對應成PC機上的一個移動磁碟