1Ubuntu14.04上搭建NFS服务

1.1、安装NFS服务

$ sudo apt-get install nfs-kernel-server    //安装NFS服务

1.2 创建Tiny4412开发板根文件系统

这部分内容参考《Busybox构建根文件系统和制作Ramdisk》部分。

假设Tiny4412开发板根文件系统路径为/home/felix/nfs

1.3. 配置NFS服务器

配置NFS主要涉及配置文件/etc/exports,它用于NFS服务器端,其中列出了NFS服务器中要导出的目录、可以访问这些目录的NFS客户机及其访问权限。

/etc/exports文件的格式如下:

dir_to_export  NFS_client (permissions)  [NFS_client (permissions)…]

例如:

/tmp       192.168.100.0/24(ro)     localhost(rw)     *(ro,sync)

[分享目录]  [第一个客户端(权限)]   [可用主机名]   [可用通配符]

因此,需要在/etc/exports文件中添加如下内容:

/home/felix/nfs  *(rw,sync,no_root_squash,no_subtree_check)

/home/felix/nfs:刚才创建的共享文件夹

*:允许所有的网段访问,也可以使用具体的IP

rw:挂接此目录的客户端对该共享目录具有读写权限

sync:资料同步写入内存和硬盘

no_subtree_check:不检查父目录的权限。

no_root_squash:root用户具有对根目录的完全管理访问权限。

1.4、启动NFS服务器。

在命令行终端输入如下命令:

$ sudo exportfs –rv                 //使exports 文件生效

$ sudo /etc/init.d/rpcbind restart          //重启rpcbind 服务

$ sudo /etc/init.d/nfs-kernel-server restart      //重启nfs服务

在Ubuntu上执行:

$ showmount -e

显示出共享的目录说明搭建成功。

2.配置tiny4412开发板内核,板子启动自动挂载NFS文件系统

2.1、配置tiny4412开发板内核支持NFS

输入 make ARCH=arm menuconfig 命令进入 linux 内核配置界面,

进入[*] Networking support  --->

Networking options  --->

选中[*]   IP: kernel level autoconfiguration

再进入File systems  --->

[*] Network File Systems  --->

选中如下选项:

<*>   NFS client support

<*>     NFS client support for NFS version 2

<*>     NFS client support for NFS version 3

[*]       NFS client support for the NFSv3 ACL protocol extension

<*>     NFS client support for NFS version 4

[*]     Provide swap over NFS support

[*]   NFS client support for NFSv4.1

[*]     NFS client support for NFSv4.2

[*]     NFSv4.1 client support for migration

[*]   Root file system on NFS

再进入General setup  --->

设置Initial RAM filesystem and RAM disk (initramfs/initrd) support项为

[ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support

配置完成后,保存退出并编译内核。

2.2、配置U-boot启动参数

    2.2.1、设置U-bootbootargs参数:

# setenv bootargs  'root=/dev/nfs  rw  nfsroot=192.168.1.102:/home/felix/nfs  ethmac=00:00:ff:ff:00:00 ip=192.168.1.103:192.168.1.102:192.168.1.1:255.255.255.0::eth0:off  console=ttySAC0,115200 init=/linuxrc'

# saveenv

其中关键是对ip参数的设置:

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>

bootargs中关于nfs的参数解释如下:

root=/dev/nfs  rw  nfsroot=192.168.1.102:/home/felix/nfs 表示挂载的 nfs 服务器 ip 是

192.168.1.102,挂载的目录是/home/felix/nfs(注意:/home/felix/nfs是前面搭建 nfs 服务器设置的);

ethmac=00:00:ff:ff:00:00表示网卡的地址是00:00:ff:ff:00:00,该地址在网卡驱动加载成功后会打印出来;

ip=192.168.1.103:192.168.1.102:192.168.1.1:255.255.255.0::eth0:off中192.168.1.103是我们开发板的ip地址,192.168.1.102是nfs服务器的ip,192.168.1.1是开发板的网关,255.255.255.0 是子网掩码,eth0是网卡设备的名称。

对bootargs的设置可以放在设备树中或者u-boot中,并且u-boot的bootargs的优先级更高,会将设备树中的bootargs覆盖了。具体请参考内核文档:

Documentation/kernel-parameters.txt

Documentation/filesystems/nfs/nfsroot.txt

2.2.2、设置U-boot的bootcmd参数:

如果用NFS启动根文件系统的话,使用bootm启动内核的时候,就不需要传递ramdisk的地址了(如:bootm 0x40000000 – 0x4200000 ),否则根文件系统还是ramdisk。U-boot的bootcmd参数设置如下:

# setenv bootcmd 'usb start; usb reset;tftp 0x40007000 uImage; tftp 0x42000000 exynos4412-tiny4412sdk.dtb;bootm 0x40007000 - 0x42000000; boot'

# saveenv

关于TFTP的设置参考《X-010 FriendlyARM tiny4412 uboot移植之 uboot移植之移植网卡驱动TFTP用起来》

2.3、配置Linux启动参数

输入 make ARCH=arm menuconfig 命令进入 linux 内核配置界面,进入Boot options  --->

在 Default kernel command 里面输入

root=/dev/nfs  rw  nfsroot=192.168.1.102:/home/felix/nfs  ethmac=00:00:ff:ff:00:00 ip=192.168.1.103:192.168.1.102:192.168.1.1:255.255.255.0::eth0:off  console=ttySAC0,115200 init=/linuxrc

这个参数和前面设置u-boot的bootargs参数一致

保存配置参数,重新编译内核。

完成上面的设置,就可以使用NFS启动Tiny4412开发板的根文件系统。

参考

嵌入式环境搭建之NFS  http://blog.csdn.net/tigerjibo/article/details/9748561

[学习嵌入式开发板]iTOP-4412实现NFS网络文件系统http://www.oschina.net/question/2371345_2158782

Ubuntu14.04和Tiny6410挂载NFS服务http://www.cnblogs.com/cxd2014/p/4178889.html

使用NFS启动Tiny4412开发板根文件系统的更多相关文章

  1. EASYARM-IMX283 nfs启动内核和根文件系统

    EASYARM-IMX283(以下简称IMX283)默认采用从nand flash启动,但是在开发过程中因为要频繁的替换内核,我们更倾向于从nfs启动. 先看看IMX283中uboot中默认采用的启动 ...

  2. 嵌入式环境:挂载开发板根NFS文件系统失败

    挂载开发板根NFS文件系统的时候,发现了下面的问题: Looking up port of RPC 100003/2 on 192.168.2.109rpcbind: server 192.168.2 ...

  3. NFS启动文件系统

    NFS启动文件系统 一.软硬件平台 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.UBOOT版本:U-Boot-2016.05,采用FDT和DM. 3.交换芯片MARVELL的88E ...

  4. 把Linux目录挂载到开发板、设置开发板从NFS启动、取消开发板从NFS启动

    声明:文中"PC虚拟机Linux"是指在PC上安装了虚拟机,然后在虚拟机中装的Linux. 关于NFS的详细介绍可参考:http://www.cnblogs.com/nufangr ...

  5. mini2440 最小根文件系统制作和nfs启动

    mini2440 内核启动后,可以用busybox制作一个简单的根文件系统并用nfs来启动该文件系统 启动mini2440, 按任意键进入uboot,按q键进入uboot命令行: 执行以下命令: se ...

  6. Exynos4412从SD卡启动的简单网络文件系统制作

    Exynos4412从SD卡启动的简单网络文件系统制作 1. 简介 嵌入式系统能够在开发板上正常运行,需要先进行系统配置,一个完整的嵌入式系统应该包含的几个部分::uboot,kernel,rootf ...

  7. mini2440 uboot使用nfs方式引导内核,文件系统

    mini2440 uboot使用nfs方式引导内核,文件系统 成于坚持,败于止步 看了一段时间的u-boot了,到今天才真正完全实现u-boot引导内核和文件系统,顺利开机,在此记录完整过程 1.首先 ...

  8. 编译 Linux 3.5 内核烧写 Android 4.2.2 到 Tiny4412 开发板

    . . . . . 昨天已经编译了 Android 4.2.2 的源码,详见<Ubuntu 14.04 编译 Android 4.2.2 for Tiny4412>一文. 今天我们继续剩下 ...

  9. TFTP启动内核、设备树,NFS启动FS

    一.软硬件平台 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.UBOOT版本:U-Boot-2016.05,采用FDT和DM. 3.交换芯片MARVELL的88E6321. 二.问题 ...

随机推荐

  1. js API

    从基础知识JS-web-API js基础知识:ECMA 262标准 js-web-API: w3c标准 W3c标准中关于js的规定有 DOM操作.BOM操作.事件绑定.ajax请求(包括http协议) ...

  2. 02 How to Write Go Code 如何编写go语言代码

    How to Write Go Code   如何编写go语言代码 Introduction   介绍 Code organization  组织代码 Overview  概述 Workspaces  ...

  3. InnoDB锁问题

    InnoDB锁问题 InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题.下面我 ...

  4. apache代理配置https

    原文:https://mp.weixin.qq.com/s/Tw4UzX73Q7MSw3GJXnpN8A 微信小程序开发https设置 2017-04-06 格里菲斯 互联网工作者 微信官方规定小程序 ...

  5. CxGrid 表格列内容居中

    首先每一列 Cxgrid 都不知道要当成什么来出来,所以每一列都有个properties 让你来设置,告诉cxgrid 这列的内容是什么,然后根据你给出的内容 再来决定用什么居中方式: 就是说 官方再 ...

  6. poj 3270(置换群+贪心)

    Cow Sorting Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6993   Accepted: 2754 Descr ...

  7. js交互

    Js和native交互的方法与问题 实现JS和Native交互有两种方式: 第一种:shouldOverrideUrlLoading(WebView view, String url) 通过给WebV ...

  8. Fedora下Eclipse/MyEclipse崩溃的解决方案

    Fedora19下使用myeclipse2013时,打开不到一分钟就异常关闭. 默认在home目录下生成一个log文件,里面显示的错误信息,说是libsoup.so文件导致出错.第一个想法是删除这个文 ...

  9. 【51nod】1531 树上的博弈

    题解 我们发现每次决策的时候,我们可以判断某个点的决策,至少小于等于几个点或者至少大于等于几个点 我们求最大值 dp[u][1 / 0] dp[u][1]表示u这个点先手,至少大于等于几个点 dp[u ...

  10. 跟我一起学WPF(2):WPF控件基础

    WPF控件简介 通过上一篇XAML语言的介绍,我们知道,XAML是一个树形结构,同样,WPF控件作为构成整个XAML树的一部分,也是一个树形结构.我们看一个简单的例子. <Button.Cont ...