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. unity 优秀开源项目

    ihaiu.GUIDRef (查看项目资源使用情况) http://blog.ihaiu.com/unity-GUIDRef Ihaiu.PoolManager (对象池) http://github ...

  2. 美国部分科技公司创始及IPO信息

    作者:Ben.Z 时间:2018-04-19 做这份统计表格的目的是为了更好地了解当下美国的IT发展,搞清楚那些耳熟能详的名词的来源. 原文是用WPS统计的,本文仅展示截图. 创始人年龄分析: 1.上 ...

  3. mysqlbinlog的日志类型

    一.mysqlbinlog简介 binlog又叫二进制日志文件,它会将mysql中所有修改数据库数据的Query以二进制的形式记录到日志文件中,如:create,insert,drop,update等 ...

  4. python基础-类的起源

    Python中一切事物都是对象. class Foo(object): def __init__(self,name): self.name = name f = Foo("alex&quo ...

  5. 决策树和adaboost

    前面:好老的东西啊,啊啊啊啊啊啊啊啊啊 来源于统计学习方法: 信息增益: 其中 信息增益率: 基尼指数: 取gini最小的 先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造. 后 ...

  6. 洛谷P2822组合数问题

    传送门啦 15分暴力,但看题解说暴力分有30分. 就是找到公式,然后套公式.. #include <iostream> #include <cstdio> #include & ...

  7. 怎么区分MSSQL中nvarchar和varchar的区别?

    怎么区分MSSQL中nvarchar和varchar的区别呢?下面两段代码可以帮你看到他们的区别. declare @s Nvarchar(10) set @s='那么相当于abcd可以存储多少个汉字 ...

  8. 开源框架:SDWebImage

    http://blog.csdn.net/uxyheaven/article/details/7909373 SDWebImage是我搞iOS以来少数佩服的框架,膜拜一下作者.真的写的非常棒! 这套开 ...

  9. 下载Eclipse

    工欲善其事必先利其器,我们学习Java首先要学会下载开发工具,Eclipse就是一个很好的Java语言开发工具,那么我们首先要知道怎么下载Eclipse.相信很多Java书籍都有下载Eclipse的教 ...

  10. javascript输入验证数字方法,适合充值时输入正整数验证

    说明:用于验证正整数的输入,不允许输入其他字符. html: <input type="text" id="sell_jobNum" name=" ...