首先声明的是,我使用的u-boot是自己移植的u-boot2013.01.01而非天嵌官方的那个,至于使用官方的u-boot如何去实现nfs挂载rootfs我没怎么研究过,不过原理方法都是一致的.

主要分三步:

1:修改u-boot的环境变量bootargs

1.1进入u-boot命令行,执行



#setenv   bootargs    noinitrd     console=ttySAC0,115200    init=/init    root=/dev/nfs rw nfsroot=192.168.1.243:/zsy/bootloader/zsynfs,rsize=1024,wsize=1024   rw    ip=192.168.1.8:192.168.1.243:192.168.1.253:255.255.255.0:linux_by_zsy:eth0:off

其中

noinitrd:

当没有使用ramdisk启动系统的时候,需要使用noinitrd这个参数,但是如果使用了的话,就需要指定initrd=r_addr,size, r_addr表示initrd在内存中的位置,size表示initrd的大小。

console=ttySAC0,115200:

console=tty  意思是使用虚拟串口终端设备 。

console=ttyS[,options] 使用特定的串口,options=bbbbpnx,这里bbbb是指串口的波特率,p是奇偶位,n是指的bits,一般来说直接指定波特率就可以了,其他采用默认设置。console=ttySAC[,options] 和console=ttyS[,options]形式一样。

init:

init指的是内核启起来后,进入系统中运行的第一个脚本,一般init=/linuxrc, 或者init=/etc/preinit,preinit的内容一般是创建console,null设备节点,运行init程序,挂载一些文件系统等等操作。不过注意了,很多初学者以为init=/linuxrc是固定写法,其实不是,/linuxrc指的是/目录下面的linuxrc脚本,一般是一个连接罢了。在这里是
init=/init。

root=/dev/nfs:

使用nfs文件系统时指定root为/dev/nfs,指定root=/dev/nfs之后,还需要指定nfsroot=serverip:nfs_dir,即指明文件系统存在哪个ip的主机的哪个目录下面。在这里是:root=/dev/nfs   rw  nfsroot=192.168.1.243:/zsy/bootloader/zsynfs,rsize=1024,wsize=1024。

而rw是指定可读可写,关于rsize和wsize,读出(rsize)与写入(wsize)的区块大小 (block size)。这个设定值可以影响客户端与服务器端传输数据的缓冲记忆容量。一般来说,如果在局域网络内 (LAN) ,并且客户端与服务器端都具有足够的内存,那这个值可以设定大一点,比如说 32768 (bytes) 等,提升缓冲记忆区块将可提升 NFS 文件系统的传输能力!但要注意设定的值也不要太大,最好是达到网络能够传输的最大值为限。

ip:

指定系统启动之后网卡的ip地址,如果你使用基于nfs的文件系统,那么必须要有这个参数,格式如下:

ip=ip addr:server ip addr:gateway:netmask:local name:which netcard:off

which netcard 是指开发板上的网卡,不是主机上的网卡。我这里是 :

rw ip=192.168.1.8:192.168.1.243:192.168.1.253:255.255.255.0:linux_by_zsy:eth0:off

1.2 保存设置好的bootargs变量,直接写入nand中,执行命令:

#saveenv

2.修改内核为nfs挂载rootfs

2.1   找到File systems并进入

2.2 找到 Network File Systems并进入

2.3 把 NFSclient support 和 NFS sever support勾上,还有最重要的Root Filesystem on NFS勾选上

2.4 然后重新编译内核,执行make -j4,我的cpu是4核心的所以用-j4。

2.5   把内核重新烧写到开发板中吧,我用的是tftp的方法

#  tftp 0x20008000 zImage.bin

#  nand erase 500000   500000

#  nand write.jffs2 0x20008000  0x500000   0x500000

3.启动ubuntu的nfs服务

3.1 ubuntu的nfs配置

(1)nfs 安装

apt-getinstall nfs-kernel-server

apt-get install portmapnfs-common

(2)编辑/etc/exports,

增加     /zsy/bootloader/zsynfs   192.168.1.*(rw,sync,no_root_squash)

其中:192.168.1.*意思是以192.168.1.开头的地址都能访问该目录

括号中的选项为exports规定的选项,下面解释一下Exports文件中一些选项的含义

选项                                                 说明

Ro                        该主机对该共享目录有只读权限

Rw                       该主机对该共享目录有读写权限

Root_squash          客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

No_root_squash     客户机用root访问该共享文件夹时,不映射root用户

All_squash             客户机上的任何用户访问该共享目录时都映射成匿名用户

Anonuid                将客户机上的用户映射成指定的本地用户ID的用户

Anongid                将客户机上的用户映射成属于指定的本地用户组ID

Sync                     资料同步写入到内存与硬盘中

Async                   资料会先暂存于内存中,而非直接写入硬盘

Insecure                允许从这台机器过来的非授权访

(3)修改挂载点的属性

#chmod  777  /zsy/bootloader/zsynfs

(4)重启nfs

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

#sudo /etc/init.d/portmap      restart

这个时候使用 showmount -e  即可察看刚才设置的挂载点是否出现在挂载列表中

3.2 一些注意事项

使用NFS的时候如果不关心系统安全问题可以直接关闭防火墙,如果希望防火墙开着,那么就把对应端口放行就可以使用NFS了,具体方法参考这位仁兄的做法,我就不罗嗦了:http://blog.csdn.net/armeasy/article/details/6005703

4. 验证

确保以上3步都奏效后,那么就重启开发板,如果看到挂载到nfs上了那就成功了,初次挂载需要比较长的一段时间才能进入android系统,耐心等吧。

TQ210开发板NFS挂载android4.0.4的rootfs的方法的更多相关文章

  1. 嵌入式开发板nfs挂载

    板子要开始调试了,第一个头大的问题就是调试过程中更新的文件怎么更新到板子上,以前用sd卡拷贝来来回回太浪费时间了,adb也需要接线各种连接操作. 现在板子有wifi可用,是时候把nfs共享搭起来了. ...

  2. IMX6Q开发板Linux-QT挂载U盘及TF卡

    本文基于:迅为-iMX6开发板Linux-QT挂载U盘及TF卡 如下图所示,qt 启动之后,在超级终端中使用命令“mknod /dev/sda1 b 8 1”创建 U盘的设备节点,如下图所示. 插入 ...

  3. 使用Arduino开发板连接干簧管(Reed Switch)的方法

    在现实生活中,干簧管(Reed Switch)有许多重要的应用,如磁性门开关.笔记本电脑.智能手机等.在本篇文章中,我们将了解一些干簧管的知识,并介绍如何使用Arduino开发板连接干簧管. 干簧管( ...

  4. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

  5. iTOP-i.MX6Q开发板支持安卓Android6.0系统

    迅为IMX6开发板: Android4.4/6.0系统  Linux + Qt5.7系统  Ubuntu12.04系统 部分案例:HMI:3D打印机:医疗设备:工控机:触控一体机:车载终端 核心板兼容 ...

  6. 迅为IMX6Q PLUS开发板烧写Android6.0系统方法

    平台:迅为IMX6Q PLUS开发板工具:MfgTool2 工具 镜像文件在光盘目录“03 镜像_android 6.0.1 文件系统”下.其中商业级核心板为 2G内存镜像,工业级核心板为 1G 内存 ...

  7. 在TQ2440开发板上ping 127.0.0.1不通

    问题:在TQ2440上ping 127.0.0.1,提示错误 ping: sendto: Network is unreachable   解决方法:ifconfig lo 127.0.0.1 up ...

  8. android4.0访问不能网络解决方法

    @SuppressLint("NewApi")protected void onCreate(Bundle savedInstanceState) {StrictMode.setT ...

  9. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

随机推荐

  1. Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (离线树状数组+前缀xor)

    题目链接:http://codeforces.com/contest/703/problem/D 给你n个数,m次查询,每次查询问你l到r之间出现偶数次的数字xor和是多少. 我们可以先预处理前缀和X ...

  2. mahout算法源码分析之Itembased Collaborative Filtering(四)共生矩阵乘法

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 经过了SimilarityJob的计算共生矩阵后,就可以开始下面一个过程了,这个过程主要是共生矩阵的乘法 ...

  3. 学习C++的一些问题总结

    C++ 问题 (一) int main() { int i,j,m,n; i=8; j=10; m=++i+j++;  //++i是先递加再使用,j++是先使用再递加,故:9+10=19 n=++i+ ...

  4. 为什么无法发起qq临时会话,必须添加好友?如何设置才能临时会话?

    (从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-06-03) 一. QQ等级低于10级不能进行临时会话 按照腾讯的设置,QQ等级如果低于10级(2个月亮+2颗星星),无法发起 ...

  5. apache2 添加perl支持

    官方文档,很详细了. https://httpd.apache.org/docs/2.0/howto/cgi.html#configuring   我修改了/etc/apache2/sites-ava ...

  6. RFID开发利器 proxmark3

    Proxmark3 介绍 Proxmark3是由Jonathan Westhues设计并且开发的开源硬件,其主要用RFID的嗅探.读取以及克隆等的操作.其官方网站为:Jonathan Westhues ...

  7. C#窗体钉在桌面、置底、嵌入桌面的办法

    想做一个桌面时钟,钉在桌面上不影响正常使用,只在看桌面的时候显示. 从网上多方寻找找到这么个代码,但是还是有不方便的地方,大家探讨一下. 这个程序在使用“显示桌面”的时候还可以显示,将程序的Form1 ...

  8. 搭建Spring + SpringMVC + Mybatis框架之一(创建项目)

    创建项目 用maven管理项目很方便,不用手动下载jar包,直接在pom.xml配置文件中,maven可以帮助我们自动下载,非常方便 新建一个web project,添加maven支持就可以了,这样创 ...

  9. linux C(hello world)

    1.使用vi/vim进行编写代码并保存为hello_world.c.如下: /* This is my first C program*/ #include <stdio.h> int m ...

  10. POJ 2970 The lazy programmer(优先队列+贪心)

    Language: Default The lazy programmer Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1 ...