I.MX6ULL 开发板上挂载NTFS格式 U 盘
- 挂载失败
- 安装NTFS-3G
- 安装失败
- 成功安装
- 移植
- 挂载成功
- 卸载U盘
挂载失败
我使用的U盘的格式是NTFS格式的
插入U盘时会有信息
我使用的是闪迪的U盘,大小标称是 32G ,实际能用的只有 28G 左右
可以使用lsblk
命令查看磁盘设备,这个sda就是我的U盘,sda1是U盘的分区,也就是说只有一个分区
也可以在 /dev/ 目录下查看
首先在 /mnt/ 目录下创建一个usb文件夹,用于作为U盘的挂载点
挂载U盘
sudo mount /dev/sda1 /mnt/usb
挂载失败,显示 unknow filesystem type 'ntfs'
这是因为 Linux 系统默认不支持 NTFS 文件系统,需要安装额外的驱动程序来提供支持
NTFS(New Technology File System,新技术文件系统)是微软开发的用于Windows操作系统的文件系统。它在数据存储、管理和保护方面提供了比老旧文件系统(如FAT32)更多的功能
解决方法:
1.将U盘格式化为FAT32格式
2.安装 NTFS-3G 驱动
NTFS-3G 是一个开源的 NTFS 驱动程序,允许 Linux 系统读写 NTFS 格式的磁盘。
我选择第二种方法
安装NTFS-3G
下载源码
首先在Ubuntu的/linux/tool/目录下创建一个ntfs-3g文件夹,用于存放编译ntfs-3g时的安装目录
使用下面的命令获取压缩包,我下载的是2017.3.23
版本的
wget -O ./ntfs-3g-2017.3.23.tgz https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
下载完成查看一下
解压
tar -zxf ntfs-3g-2017.3.23.tgztar:是用于打包和解压文件的工具。
-z:表示解压时使用 gzip 压缩(.tgz 文件通常是用 gzip 压缩的)。
-x:表示解压(extract)。
-v:表示显示详细过程(verbose),列出解压的文件。
-f:后面接要解压的文件名。
我不需要显示详细过程,所以没加v
然后执行三部曲:配置、编译、安装
安装失败
安装失败的不要看,可以先看看我失败的原因,然后再结合安装成功这一节去安装
配置
首先进入到 nfst-3g 文件目录下
#设置交叉编译工具的环境
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
#对tslib源码工程进行配置
./configure --host=arm-poky-linux-gnueabi --prefix=/home/okay/linux/tool/ntfs-3g/
编译
make
安装
make install
它显示权限不够
那就使用 sudo make install
再运行一次
提示 arm-poky-linux-gnueabi-ranlib 命令没有找到
尝试:切换到root,临时配置交叉工具链环境,再重新安装:
sudo su //切换超级管理权限
source /etc/profile //重新配置工具链环境
make install //安装
还是不行
而且查看 ntfs-3g 目录下的文件,就只有include和lib两个,不太正常
成功安装
我上面用的是poky的交叉编译器,我尝试换成用linaro的试一下
删除编译的文件
make clean
卸载你之前安装的 NTFS-3G
sudo make uninstall
可以看到确实什么都没有了,删干净了
把ntfs-3g文件夹下的include和lib文件夹删除,我怕后面有影响
重新配置工程
#对tslib源码工程进行配置
./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=/home/okay/linux/tool/ntfs-3g/ --exec-prefix=/home/okay/linux/tool/ntfs-3g/
#--prefix=/home/okay/linux/tool/ntfs-3g/
#指定二进制文件、库文件、配置文件的安装路径
#(必须要填写实际安装的绝对路径)
#--exec-prefix=/home/okay/linux/tool/ntfs-3g/
#指定可执行文件的安装路径
#(必须要填写实际安装的绝对路径)
#不加上这一个路径会导致安装的文件不完整,很重要!!!
编译
make
安装
make install
过程问题:install过程提示无权限,切换超级权限后又提示找不到编译器
解决方法:临时配置交叉工具链环境,再重新安装即可:
sudo su //切换超级管理权限
source /etc/profile //重新配置工具链环境
make install //安装
终于成功安装!
检查 ntfs-3g 目录里的文件是否完整
像这样应该是完整的
移植
将ntfs-g/bin目录下的文件全部拷贝到开发板的/usr/bin目录中
当然也可以根据自己的需要去拷贝
ntfs-3g:ntfs硬盘挂载工具
ntfs-3g.probe:用于自动检测和识别 NTFS 文件系统
ntfscat:用于显示 NTFS 文件的内容
ntfscluster:用于显示 NTFS 文件系统中的集群(clusters)
ntfscmp:用于比较两个 NTFS 文件系统或磁盘镜像的内容
ntfsfix:用于修复 NTFS 文件系统上的一些常见错误
ntfsinfo:用于显示 NTFS 文件系统的详细信息
ntfsls:用于列出 NTFS 文件系统中的文件和目录结构
scp ./*ntfs* root@192.168.1.100:/usr/bin
使用scp
将ntfs依赖的动态库libntfs-3g.so.88.0.0拷到开发板 的/usr/lib/目录下
scp ./libntfs-3g.* root@192.168.1.100:/usr/lib
在开发板检查是否拷贝成功
在开发板创建软链接libntfs-3g.so.88 和 libntfs-3g.so
必须要有这一步,不然检查 ntfs-3g版本 会报错,如下图
ln -s libntfs-3g.so.88.0.0 libntfs-3g.so.88
ln -s libntfs-3g.so.88.0.0 libntfs-3g.so
再次检查ntfs-3g版本号就能成功打印版本号了,证明我们安装成功
挂载成功
再次尝试挂载U盘
但是不是用mount
命令
而是用ntfs-3g
命令
ntfs-3g /dev/sda1 /mnt/usb/
挂载成功!
卸载U盘
使用 umount
命令卸载U盘
sudo umount /mnt/usb
这里卸载的时候报错了,表示有进程正在使用 U 盘中的文件或目录
这是因为我在U盘的目录下卸载U盘,我现在就在U盘的目录下,所以卸载不了
回到用户目录下就卸载成功了,此时再拔出U盘,避免U盘数据损坏