我是靠谱客的博主 奋斗红牛,最近开发中收集的这篇文章主要介绍arm linux 识别新硬盘_嵌入式Linux 的NTFS移动硬盘支持,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文大部分参考了

我的两个学生移植工作

大部分是重做一遍.

测试环境S3C6410开发板

内核 linux 2.6.28.6

编译器 arm-linux-gcc 4.4.1

一.内核配置

高版本的Linux已经内置了fuse file sytem驱动。首先确保FUSE FS加入配置

101104012748.jpg

将其做为动态模块形式,这样编译出来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 sda4sd 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.中文文件名显示与操作.

四.热插拨的改进

待续

最后

以上就是奋斗红牛为你收集整理的arm linux 识别新硬盘_嵌入式Linux 的NTFS移动硬盘支持的全部内容,希望文章能够帮你解决arm linux 识别新硬盘_嵌入式Linux 的NTFS移动硬盘支持所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部