注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

linux 学习

 
 
 

日志

 
 

[转] 嵌入式Linux 的NTFS移动硬盘支持  

2011-05-04 17:38:19|  分类: 软件使用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
ndrew Huang bluedrum@163.com
 
本文大部分参考了
 我的两个学生移植工作
 
大部分是重做一遍.
   测试环境S3C6410开发板
   内核 linux 2.6.28.6
   编译器 arm-linux-gcc 4.4.1
  
一.内核配置 
  高版本的Linux已经内置了fuse file sytem驱动。首先确保FUSE FS加入配置
  
[转] 嵌入式Linux 的NTFS移动硬盘支持 - ququ - linux 学习
 
将其做为动态模块形式,这样编译出来fuse.ko待用
    fs/fuse/fuse.ko
    fs/isofs/isofs.ko
    fs/ntfs/ntfs.ko
 
二.应用程序移植
   主要是 ntfs-3g的模块的移植.
 
    解压 tar xvzf ntfs-3g-2010.8.8.tgz
         cd ntfs-3g-2010.8.8
    生成Makefile
         ./configure  --host=arm-linux  --prefix=$PWD/../../output/arm-linux --exec-prefix=$PWD/../../output/arm-linux
   这里要 注意--exec-prefix必须要加(一般的configure的中,--exec-prefix是自动等于--prefix,便这个 configure 脚本有一个小bug,必须要再次指定,否则ntfs-3g会被安装到/bin目录下。ntfs-3g的动态库会被安装到/lib目录。这个相当危险,等于 冲掉桌面的X86的版本了。
 
三.在ARM-Linux的测试
   0 安装fuse.ko模块
       insmod /huisen/modules/fuse.ko
        fuse init (API version 7.10)
   1.首先插USB移动硬盘。在我的开发板上提示
       
usb 1-1: new full speed USB device using s3c2410-ohci an
d address 2
usb 1-1: configuration #1 chosen from 1 choice
scsi0 : SCSI emulation for USB Mass Storage devices
usb 1-1: New USB device found, idVendor=067b, idProduct=2571
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: Mass Storage Device
usb 1-1: Manufacturer: Prolific Technology Inc.
usb 1-1: SerialNumber: 00
scsi 0:0:0:0: Direct-Access     SAMSUNG  HM160HI          HH10 PQ: 0 ANSI: 0
sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors: (160 GB/149 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors: (160 GB/149 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Assuming drive cache: write through
 sda: sda1 sda2 sda3 sda4
sd 0:0:0:0: [sda] Attached SCSI disk
sd 0:0:0:0: Attached scsi generic sg0 type 0
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
       
表示硬件挂在 /dev/sda上,有四个分区 sda1/sda2/sda3/sda4
 
2.检查硬盘分区
 
   查看硬盘的分区
   fdisk -l /dev/sda #如果busybox没编译此命令可以如下命令
   cat /proc/partitions
有如下提示
  

 cat /proc/partitions
major minor  #blocks  name

  31        0        512 mtdblock0
  31        1       5120 mtdblock1
  31        2     256512 mtdblock2
   8        0  156290904 sda
   8        1   39319056 sda1
   8        2   39319087 sda2
   8        3   39319087 sda3
   8        4   38331090 sda4

 
3.挂载相应分区
    mkdir -p /media/mdisk
   这里无法采用mount来挂载,只能使用ntfs-3g来挂载。
 
  假设libntfs-3g.so库在 /mnt/nfs/output/arm-linux/lib 之下.用ntfs-3g命令执行
 
    export LD_LIBRARY_PATH=/mnt/nfs/output/arm-linux/lib
    ./ntfs-3g /dev/sda2 /media/mdisk
 
  为了与桌面版的命令兼容,可以使用ln将ntfs-3g链接成桌面版的mount.ntfs命令
   ln -s ntfs-3g mount.ntfs-3g
   
如果出现如下提示,表示fuse.ko未安装
 

modprobe: module 'fuse' not found
Did not find any restart pages in $LogFile and it was not empty.
The file system wasn't safely closed on Windows. Fixing.
ntfs-3g-mount: fuse device is missing, try 'modprobe fuse' as root

 
4.中文文件名显示与操作.
   
 
四.热插拨的改进
待续


  评论这张
 
阅读(3634)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018