Andrew Huang
本文大部分参考了
我的两个学生移植工作
大部分是重做一遍.
测试环境S3C6410开发板
内核 linux 2.6.28.6
编译器 arm-linux-gcc 4.4.1
一.内核配置
高版本的Linux已经内置了fuse file sytem驱动。首先确保FUSE FS加入配置
将其做为动态模块形式,这样编译出来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.中文文件名显示与操作.
四.热插拨的改进
待续
阅读(5788) | 评论(0) | 转发(0) |