在网上他人博客中方法都大同小异,但是却无法解决我遇到的问题。

我随意挑选一个网友的方法http://blog.csdn.net/zjg555543/article/details/7792984

当然我的虚拟机的NFS是配置好的,Linux挂载没有问题。

这里我就不详细说明网上存在的相同的东西了,主要是要注意Android的nfs文件系统与Linux不一样,构建Android的文件系统需要Android编译源码out板级目录下的三个文件夹的文件(/out/target/product/***/),即root、data、system。

看下面三条命令

$cp -rf $OUTPUTDIR/root/* /nfsroot

$cp -rf $OUTPUTDIR/system /nfsroot

$cp -rf $OUTPUTDIR/data /nfsroot

由上面三条命令拷贝文件到nfsroot目录下即可,这里一定要注意第一条的拷贝,并非拷贝root文件夹,而是拷贝root目录下的所有文件。

可以确定我的nfs服务器,目录的构建都没有问题,可是死活起不来。网上还有说修改init.rc文件的,可是修改还需要对Android源码做操作,就没干。

虽然说网上说修改init.rc的方法我没用,但是给我提供了思路。Linux内核起来后会加载ramdisk文件,把该文件下的所有文件拷贝到文件系统中,而init.rc就在里面,内核会去加载它,做一些初始化的工作,其中就有对系统目录的操作,进而决定使用的根文件系统位置。

存在加载ramdisk.img时的情况如下:

[    2.704625] dm9000 dm9000: eth0: link down
[    2.707371] ADDRCONF(NETDEV_UP): eth0: link is not ready
[    2.889699] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    2.904730] IP-Config: Complete:
[    2.906471]      device=eth0, addr=192.168.1.21
[    2.910836] dm9000 dm9000: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[    2.917844] , mask=255.255.255.0, gw=192.168.1.1,
[    2.922244]      host=192.168.1.21, domain=, nis-domain=(none),
[    2.928158]      bootserver=192.168.1.22, rootserver=192.168.1.22, rootpath=
[    2.935580] Freeing init memory: 192K
[    2.950182] init: could not import file /system/etc/init.local.rc
[    2.955826] init: /init.smdkv210.rc: 93: invalid command 'rmmod'

由上分析发现,在内核加载完init.rc对于nfs的挂载设置就给忽略了,这可以说明,在init.rc文件中对根文件系统做了设置,而且覆盖传递给内核的nfs的设置参数,进而虽然nfs设置正确也无法挂载。

既然加载ramdisk.img会影响nfs的挂载,那么把它删了就好了。可以把之前存放该文件的空间擦除即可,这么做之后成功挂载了。成功挂载后打印的应该是下面的信息:

[    2.684659] dm9000 dm9000: eth0: link down
[    2.687409] ADDRCONF(NETDEV_UP): eth0: link is not ready
[    2.889733] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    2.904765] IP-Config: Complete:
[    2.906504]      device=eth0, addr=192.168.1.21
[    2.910869] dm9000 dm9000: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[    2.917878] , mask=255.255.255.0, gw=192.168.1.1,
[    2.922277]      host=192.168.1.21, domain=, nis-domain=(none),
[    2.928317]      bootserver=192.168.1.22, rootserver=192.168.1.22, rootpath=
[    2.945327] VFS: Mounted root (nfs filesystem) on device 0:11.

由此延伸,发现这个ramdisk的加载与u-boot有关,我的板子是realarm210的EMMC版本。默认的加载内核环境变量是:

setenv bootcmd "movi read kernel 30008000;movi read rootfs 40800000 180000;bootm 30008000 40800000"

可以看到会有rootfs的加载,这时如果把rootfs给删掉呢,是不是ramdisk.img在emmc中就不用删除了,该成的命令如下:

setenv bootcmd "movi read kernel 30008000;bootm 30008000"

回头试试。

已测试了,修改u-boot参数也是可行的。这里记录一下,网友遇到这类问题时可参考一下。

修正上面的一个问题,关于init.rc的。

看来还是需要修改该文件的,不同开发板,不同的Flash恐怕都要修改该文件。

具体如下:

主要是下图所示的位置:

下面红框是Android默认的,上面的红框是开发板添加,由于要使用nfs,所以都要给注释掉。

原因是:系统默认是挂载的是emmc的ext4分区,如果不注释掉,那么访问的system目录并非构建的根文件系统下的system文件。

不注释上图的代码是情况如下:

开发板的system信息如下:

而nfs文件系统的system信息如下:

明显不一样,这就说明了问题,当然注释掉之后就没问题了。

到此,该问题已经解决了。

Android NFS文件系统挂载遇到的问题解决方法相关推荐

  1. Android开发环境搭建及常见问题解决方法

    Android开发环境搭建及常见问题解决方法 参考文章: (1)Android开发环境搭建及常见问题解决方法 (2)https://www.cnblogs.com/rwxwsblog/p/476978 ...

  2. Android加载图片内存溢出问题解决方法

    这篇文章主要介绍了Android加载图片内存溢出问题解决方法,本文讲解使用BitmapFactory.Options解决内存溢出问题,需要的朋友可以参考下 1. 在Android软件开发过程中,图片处 ...

  3. 微博只显示来自android,新浪微博手机版五大常见问题解决方法

    新浪微博是目前主流的互动交流社交平台,目前使用手机版新浪微博的用户也日渐增加.今天当下小编从网上收集了一些关于在日常使用新浪微博所出现的小问题以及解决方法,希望对广大网民朋友有所帮助! 类别:聊天社交 ...

  4. Linux NFS文件系统挂载

    一般情况下,都是虚拟机Linux系统挂载开发板方便进行应用程序的调试,或者反过来进行挂载.但是我们需要开发板之间相互挂载进行数据传输. 虚拟机之间挂载 环境:Ubuntu 18.04与CentOS 7 ...

  5. 嵌入式Linux/Android根文件系统制作的几种方法(未完)

    梳理一下制作根文件系统的多种方法,有些参考了网上的做法,如有侵权,请联系博主删除,以下博文仅供学习和记录. 1.打包成xxx.img的方法 ep:  make_ext4fs -s -l 512M -a ...

  6. Eclipse搭建android环境及Genymotion模拟器安装问题解决方法

    最近实验室新买了台式电脑,又要重新搭建android环境了,话说自从google被封了之后eclipse搭建android真是不容易了,虽然现在官方推荐使用studio了,但是还是不太习惯studio ...

  7. NFS方式挂载rootfs的设置方法

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 1.什么是nfs? (1)nfs(网络文件系统)是一种网络通讯协议,由服务器和客户端构成. (2)nfs的作用 利用nfs协议可以做出很多直 ...

  8. Android模拟器PANIC: Could not open:问题解决方法

    最主要的就是环境变量没有配置或者我们使用的是绝对路径配置环境变量.这时我们只需要修改一下Android的环境变量就可以了. 具体解决方法如下: ①在环境变量中创建变量名:ANDROID_SDK_HOM ...

  9. ANDROID 11 文件系统挂载

    源码:http://aospxref.com/ 系统启动过程可以参看 Android Init 进程启动流程研究 第一阶段启动  First stage init init 的main函数: //sy ...

最新文章

  1. 「人工智能训练师」国家职业技能标准发布:共有五级,您是第几级?
  2. 提高抗打击能力_如果提高心理抗打击能力?
  3. html ajax请求jsp,JSP+jquery使用ajax方式调用json的实现方法
  4. 如何掌握java API的方法
  5. 孵化业务快速落地与优化
  6. python使用复合语句def创建函数对象_Python 纯函数
  7. 基于实数编码的参数自适应遗传算法(matlab代码)
  8. oracle or 运算,Oracle Or子句
  9. NfcA/NfcB/NfcF/NfcV/IsoDep/Ndef/Mifare/Felica/Pboc/ISOxxxx 标签格式及标准
  10. Altuim Designer 21学习笔记
  11. python压缩包怎么打开-详解python解压压缩包的五种方法
  12. 数据挖掘-朴素贝叶斯算法的R实现
  13. 白苹果修复_苹果手机突然屏幕变白怎么办
  14. android listview仿iphone通讯录ios 3dTouch
  15. 一只喵的西行记-8 魔法猫堡
  16. 软件配置管理(一)配置管理概念与目标
  17. Python3 通过 suds 访问 webservice
  18. lightoj1219Mafia
  19. perl mysql 数据推拉_用perl 从mysql取出数据做统计分析代码
  20. 关于2021/12/17国内bing不能正常访问的解决方法。

热门文章

  1. 割线法求解过程_潮流方程的割线法求解
  2. mysql多字段修改update_MySQL ------ 触发器(TRIGGER)(二十七)
  3. 限定概率抽奖_圣诞节LOL紫色宝箱30连抽,限定全是冰雪,节日气氛很浓
  4. comparator比较器用法_Python学习:好像很少人知道 Python iter() 的另外一个用法?...
  5. before css 旋转_CSS 巧用 :before和:after
  6. 苹果手机怎么编辑word文档_原创首发:编辑和修改PDF文档,将PDF转换为WORD技巧...
  7. 超全!Python获取某一日期是“星期几”的6种方法!
  8. 用 python 制作高逼格的数学动画
  9. 不飘了,让图像识别算法快速产业落地 别再实验了,让你的图像识别算法赶紧上线!...
  10. 肝!分享 2 本高质量算法书籍!