安卓手机挂载Linux,android 挂载NFS教程

0,在Ubuntu新建nfs目录:

#mkdir /home/shuimu/arm_project/rootfs

将FORLINX_6410_yaffs2_v1.0.tgz复制到rootfs中,

解压当前文件夹#tar–zxf FORLINX_6410_yaffs2_v1.0.tgz

1.烧写mmc,uboot,zImage到开发板。

2,在ubuntu上安装nfs-server-kernal。编辑/etc/export文件,设置输出路径。启动nfs服务。

安装:

#sudo apt-get install portmap

#sudo apt-get install nfs-kernel-server

#sudo gedit /etc/exports

在弹出的文本编辑器中编辑exports文件,在最后一行添加:

/forlinx *(rw,sync,no_root_squash)

启动相关服务:

#sudo /etc/init.d/portmap restart

#sudo /etc/init.d/nfs-kernel-server restart

3,在uboot启动后,输入:

#setenv bootargs "root=/dev/nfs nfsroot=192.168.1.1:/home/shuimu/arm_project/rootfs ip=192.168.1.200:192.168.1.1:192.168.1.1:255.255.255.0:witech.com.cn:eth0:off console=ttySAC0,115200"

#saveenv

#printenv

#reset

NOTE:

192.168.1.1 PC 端Ubuntu的IP

192.168.1.200 开发板IP

192.168.1.1 网关

255.255.255.0 子网掩码

saveenv(保存)

printenv查看设置是否正确

恢复nand flash启动:setenv bootargs“root=/dev/mtdblock3 consle=/dev/ttySAC0,115200”

#saveenv

#reset

Android 使用NFS喝Linux还是有点不同的,需要我们注意。

这里有一篇如何使用nfs作为根文件系统的文章,写的不错, 转载到这里了,看了这篇文章以后,根据自己的使用心得,把自己的使用方法也写了下来,供大家参考

[First written by Steve Guo, please keep the mark if forwarding.]Usually the Android uses YAFFS as rootfs and uses the mtd device as storage media, the bad blocks in the mtd device seldom cause YAFFS file system to work abnormally. if the Android

uses NFS as the rootfs, there will not exist such problem. So here is the solution to use NFS as the rootfs of Android.

1.       Setup host machine as NFS server (I will use ubuntu 8.0.4 as an example.).

$ sudo apt-get install nfs-kernel-server portmap

$ sudo mkdir /nfsroot

$ sudo vim /etc/exports

Add one line in /etc/exports,

/nfsroot  192.168.1.101(rw,no_root_squash,sync)

Then restart NFS server.

$ sudo /etc/init.d/nfs-kernel-server restart Here setups an NFS server which exports /nfsroot directory only to 192.168.1.101(Which is the default IP address of Android eth0).

2.       Build a Linux kernel image to use NFS as rootfs.

$make menuconfig

Modify the default setup. In "general setup" section, uncheck the "initial RAM filesystem and RAM disk(initramfs/initrd) support". In "file systems" section, check the "Network File Systems" and mark it as kernel built-in. In "boot options" section,

add the kernel parameter "root=/dev/nfs nfsroot=192.168.1.100:/nfsroot init=/init". 192.168.1.100 is the IP address of host machine running NFS server.

3.       Modify init program.

To make log system work, in the device/system/init modify the device.c by change the statement '!strncmp(uevent->path,"/class/misc/",12) && !strncmp(name, "log_", 4) to '!strncmp(name, "log_", 4)'.

4.       Modify init.rc config file.

Comment out below statements

mount rootfs rootfs /ro remount

mount yaffs mtd@system /system

mount yaffs2 mtd@system /system ro remout

mount yaffs2 mtd@userdata /data nosuid nodev

mount yaffs2 mtd@cache /cache nosuid nodev

5.    Add the user id and group id used by android on the NFS server.

Android does not use /ect/passwd file to record the user name and user id, it uses a fixed method to map the user name to user id through the head file device/include/private/android_filesystem_config.h, e.g. the user "system" has the user

id of 1000.

So to correctly set the file ownership(owner and group), the NFS server should have these users with correct user IDs. Such as system(1000). For ubuntu, you can call like this.

$sudo userdd -u 1000 android_system

This step is not necessary. It only allows you to display a user name in the develop machine.

6.       Prepare the rootfs.

Assume the built output of device lies in device/out/target/product/***/, which is called $OUTPUTDIR later. Do the follwings:

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

$cp -rf $OUTPUTDIR/system /nfsroot

$cp -rf $OUTPUTDIR/data /nfsroot

使用心得:

我在使用NFS过程中第二步骤与作者的不同,我是设置的Uboot的启动参数,没有像作者那样在linux内核 中固定参数,我在Uboot中设置的参数是这样的:

setenv bootargs "root=/dev/nfs nfsroot=192.168.0.232:/forlinux/root ip=192.168.0.231:192.168.0.232:192.168.0.201:255.255.255.0:witech.com.cn:eth0

shocked.gifff

init=/linuxrc console=ttySAC0,115200 "

saveenv

其中 192.168.0.232是主机IP(运行Ubuntu系统的PC),192.168.0.231是Android嵌入式设备的IP地址,在这里设定。192.168.0.201是我的网络的网关,当然这三个IP地址可以跟据你的当前网络情况来设置,不一定跟我的相同。

:/forlinux/root  是NFS开放的目录,里面存放着Android的文件系统,跟作者第一步骤中 /nfsroot  192.16 8.1.101(rw,no_root_squash,sync) 雷同,他开放的是 /nfsroot目录,我开放的是 /forlinux/root目录。

设定好参数后就可以顺利的挂载NFS文件系统了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux apache jk,Linux下Apache+Tomcat+JK实现负载均衡和群集的完整过程

感谢chaijunkun的精彩大作,真的辛苦了。最近在开发的项目需要承受很高的并发量。综合各种情况,决定使用ApacheTomcatJK的方式实现负载均衡,并且作为一个统一的服务还要实现群集(同步Session)。在网上找了很多资料,都是零零散散的&…

第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移

一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库;一旦model发生变化,抛异常,提示走数据迁移 2. DropCreateDatabaseIfModelCha…

linux笔记本不关机直接合上,笔记本电脑不关机直接合上行吗

可以。笔记本电脑将盖子合住,对电脑是没有损害,系统的默认设置是合上盖子后电脑处于待机状态。这时电脑的大部分硬件都已经关闭,只有个别硬件为了唤醒计算机仍在运行,但都是低功耗,不浪费电,也不会加快计算…

第十九节: 结合【表达式目录树】来封装EF的BaseDal层的方法

一. 简介 该章节,可以说是一个简单轻松的章节,只要你对Expression表达式树、EF的基本使用、泛型有所了解,那么本章节实质上就是一个非常简单的封装章节,便于我们快捷开发。 PS:在该章节对于EF的上下文怎么处理&#xf…

115网盘linux 下载速度慢,linux vps 上 下载115网盘 的方法

大多数童鞋买的vps都是只支持linux系统的,因为版权的问题,windows系统的vps价格上面要贵一些。但是,遇到要下载网盘文件时,没有装桌面只有shell的linux vps就表示压力大了,幸好LV发现一个Linux vps下载115网盘的方法&a…

第二十节: 深入理解并发机制以及解决方案(锁机制、EF自有机制、队列模式等)

一. 理解并发机制 1. 什么是并发,并发与多线程有什么关系? ①. 先从广义上来说,或者从实际场景上来说. 高并发通常是海量用户同时访问(比如:12306买票、淘宝的双十一抢购),如果把一个用户看做一个线程的话那么并发可…

第二十一节:ADO层次上的海量数据处理方案(SqlBulkCopy类插入和更新)

一. 简介 1. 背景: 虽然前面EF的扩展插件Z.EntityFramework.Extensions,性能很快,而且也很方便,但是该插件要收费,使用免费版本的话,需要定期更新,如果不更新,将失效,非…

第二十二节: 以SQLServer为例介绍数据库自有的锁机制(共享锁、更新锁、排它锁等)和事务隔离级别 :

一. 基本概念 1.共享锁:(holdlock) (1). select的时候会自动加上共享锁,该条语句执行完,共享锁立即释放,与事务是否提交没有关系。 (2). 显式通过添加(holdlock)来显式添加共享锁(比如给select语句显式添加共享锁&…

r语言中1c0怎么表示什么,r语言表示或者用什么符号?

犯罪嫌疑人X1、对象名称中的句点(.)没有特殊意义。但美元符号($)却有着和其他语言中的句点类似的含义,即指定一个对象中的某些部分例如:(1)A$x是指数据框A中的变量x。(2)lm.x 指一个变量,lm$x则指对象lm的一个属性。2、 R不提供多行注释或块注…

第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题

一. 开篇说明 EF的性能问题一直以来经常被人所吐槽,究其原因在于“复杂的操作在生成SQL阶段耗时长,且执行效率不高”,但并不是没有办法解决,从EF本身举几个简单的优化例子: ①:如果仅是查询数据&#xff0c…

c语言怎样计算栈的长度,数据结构与算法:栈 C语言实现

栈是仅在表尾进行插入、删除操作的线性表。即栈 S (a1, a2, a3, ………,an-1, an),其中表尾称为栈顶 /top,表头称为栈底/base。由于只能在表尾进行操作,因此栈的运算规则就是“后进先出”(LIFO)和线性表类似,栈也有两种存储结构—…

WebApi系列(从.Net 到 .Net Core)【更新】

一. 简介 1. 什么是WebApi? WebApi是一个很广泛的概念,在这里我们特指.Net平台下的Asp.Net WebApi框架,它是针对各种客户端(浏览器、APP等)来构建Http服务的一个框架,它是一种RestFul风格的开发接口的技术,它比WebServ…

第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍

一. 原生态接口 1. 从默认路由开始分析 在WebApiConfig.cs类中的Register方法中,我们可以看到默认路由如下: 分析:请求地址在 controller 前面需要加上 api/,controller后面没有action,最后有一个参数{id}&#xff0c…

第二节:如何正确使用WebApi和使用过程中的一些坑

一. 基本调用规则 1. 前提 WebApi的默认路由规则为:routeTemplate: "api/{controller}/{id}", 下面为我们统一将它改为 routeTemplate: "api/{controller}/{action}/{id}",这样我们在调用的时候,还是通过拼接方法名来识别&#xff0…

第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)

一. 前言 前端调用有Form表单提交,ajax提交,ajax一般是用Jquery的简化写法,在这里不再过多介绍; 后端调用大约有这些:WebCient、WebRequest、Httpclient、WebapiClient,重点探讨Get和Post请求,P…

android 传感器ceshi,Android代码-传感器-测试手机支持那几种传感

Android代码----传感器-----测试手机支持那几种传感一个小小Demo检测手机支持那几种传感:具体代码如下:[Java代码]DemoSensorActivity.javapackage com.example.testsensor;import java.util.List;import android.app.Activity;import android.content.C…

第四节:跨域请求的解决方案和WebApi特有的处理方式

一. 简介 前言: 跨域问题发生在Javascript发起Ajax调用,其根本原因是因为浏览器对于这种请求,所给予的权限是较低的,通常只允许调用本域中的资源, 除非目标服务器明确地告知它允许跨域调用。假设我们页面或者应用已在 …

手机存储android文件怎么打开,安卓手机如何打开.jio文件?

01安卓手机无法打开.jio文件,需要在电脑上安装久其通用数据管理平台软件打开。进入软件首页,点击菜单栏“装入”按钮,弹出“数据装入向然后导”,单击文件夹图标,在弹出“打开”窗口中选择装入数据的路径,单…

第五节:WebApi的三大过滤器

一. 基本说明 1. 简介: WebApi下的过滤器和MVC下的过滤器有一些区别,首先我们要注意的是通常建WebApi项目时,会自动把MVC的程序集也引入进来,所以我们在使用WebApi下的过滤器的时候,要引入“ System.Web.Http”这个程序集&#x…

android动态贴纸实现原理,人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现...

原标题:人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现泛娱乐行业在互联网领域中发展趋势逐渐增强,而直播、短视频、视频社交等作为头部产品受到了众多用户的关注和喜爱。为了能够更好的满足用户体验,众多APP纷纷开始接入人脸…