Android端挂载NFS

原创CSDN博客链接:原文链接 https://blog.csdn.net/nigaoshang/article/details/107931027
如果该文章对你有帮助,欢迎点赞
最近在做汽车娱乐域控制器的项目,有用到hypervisor虚拟机,在娱乐域控上跑QNX和Android两个系统,在实际运行时会遇到两个系统之间共享一些文件,如log,媒体文件等。所以打算用NFS来实现两个系统之间文件的共享。上篇文章记录了一下我在QNX端配置NFS服务端的步骤和遇到的问题,这篇文章记录一下在Android端的配置

目标简述

通过对Android进行NFS客户端配置,获取到QNX的NFS服务端共享的目录或文件。

硬件软件环境

高通8155平台;Hypervisor;QNX 7.0;Android p;
安卓端需要内核配置中使能NFS的功能;

配置步骤

  1. 使用showmount查看一下NFS服务端的配置信息,看能否正常输出服务端信息,如使用showmount -e 192.168.1.1查看NFS服务器输出目录列表,注:192.168.1.1为我测试时配置的NFS服务端的ip地址。
  2. 使用命令mount命令进行挂载NFS服务端的共享目录,如下:busybox mount -t nfs 192.168.1.1:/usr/test /mnt/nfs
    注:192.168.1.1 是我测试时的NFS服务端的ip地址,/usr/test为测试时我配置的NFS服务端共享的目录,/mnt/nfs为Android本地的挂载点,在使用的时候可以根据需要修改为自己配置的ip地址和共享目录,以及挂载点,但需要注意的是挂载点需要是空目录
  3. 如果上述mount执行成功,则现在在挂载的目录下就会看到服务端共享的目录内的文件。
    **注:**如果NFS服务端共享的目录内的文件比较大,挂载时间可能会长点。

还有另外一种方式,虽然也是mount,但不需要那么多参数。方式如下:
在/etc目录下创建fstab配置文件,具体fstab的配置内容可参考linux的fstab配置说明,可以将要使用mount挂载NFS系统的信息写入该配置表中,然后运行busybox mount -a即可。
以下为我测试的fstab的内容:

# cat /etc/fstab
192.168.1.1:/usr/test  /mnt/nfs/mount   nfs   rw,nolock

上述信息中192.168.1.1为NFS服务端ip地址,/usr/test为服务端共享的目录,/mnt/nfs/mount为Android客户端的挂载点,nfs为系统类型,rw,nolock为挂载的配置参数。
运行busybox mount -a 命令,系统会自动到/etc/目录下寻找并解析fstab文件,并逐个挂载。

我将上述内容运行的命令写入了shell脚本,请参考。该脚本仅为个人写的简单的测试脚本,如下:

# cat nfs_mount.sh
#!/bin/sh

#Create /mnt/nfs/log directory
if [ -d /mnt/nfs/log ];then
    log -p v -t "NFS_MOUNT" "The /mnt/nfs/log directory is exist..."
else
    #echo "The /mnt/nfs/log directory is not exist, so create it..."
    mkdir -p /mnt/nfs/log
    if [ $? -eq 0 ];then
       log -p v -t "NFS_MOUNT"  "Create the /mnt/nfs/log directory successe..."
    else
        log -p v -t "NFS_MOUNT"  "Create the /mnt/nfs/log directory failed..."
    fi
fi


if [ -d /mnt/nfs/mount ];then
    log -p v -t "NFS_MOUNT" "The /mnt/nfs/mount directory is exist..."
else
    log -p v -t "NFS_MOUNT"  "The /mnt/nfs/mount directory is not exist, so create it..."
    mkdir -p /mnt/nfs/mount
    if [ $? -eq 0 ];then
        log -p v -t "NFS_MOUNT"  "Create the /mnt/nfs/mount directory successe..."
    else
        log -p v -t "NFS_MOUNT"  "Create the /mnt/nfs/mount directory failed..."
    fi
fi

touch /mnt/nfs/log/nfs-mount.log
echo "192.168.1.1:/usr/test  /mnt/nfs/mount   nfs   rw,nolock" > /etc/fstab

echo "Starting to mount nfs ..."  > /mnt/nfs/log/nfs-mount.log
i=1
busybox mount -a
while [[ $? -ne 0 ]]
do
    let i++
    echo "Retry $i times mount..." >> /mnt/nfs/log/nfs-mount.log
    sleep 1
    busybox mount -a
done
echo "Mount to /mnt/nfs/mount success ..."  >>  /mnt/nfs/log/nfs-mount.log

上述脚本中使用了log命令,该命令主要是将log输出到logcat中。由于Android在开机启动时可能因为权限原因无法创建目录或文件,导致mount失败。通过将该log输出到logcat可在开机时通过adb logcat进行查看。具体log命令以及adb logcat请参考网上说明,此处不做详细讲解。

如果有问题,欢迎留言讨论。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

去你妹起个名字真难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值