Ubuntu16.04下NFS调试rootfs

1. 检查内核是否开启NFS

1)进入内核源码目录make menuconfig,进入菜单Networking support->Networking options-> TCP/IP networking。确保nfs的功能已经被打开

IP:BOOTP support

2)进入File systems->Network File Systems 确保nfs加载可以被使用

Root file system on NFS

2. 搭建NFS服务器

1)安装NFS

apt-get install nfs-kernel-server
apt-get install nfs-common

2) 创建共享目录,我在home/lz下创建了一个/nfs/rootfs,将其作为共享目录。并修改权限

chmod 777 -R /home/lz/nfs/rootfs

3) 配置NFS,打开配置文件并在最后一行添加

sudo gedit etc/exports

在最后一行添加
/home/lz/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)

其中
/home/lz/nfs/rootfs:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!
*:允许所有的网段访问,也可以使用具体的IP

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

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

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

no_subtree_check:不检查父目录的权限

4)重启NFS服务

执行命令:sudo /etc/init.d/portmap restart

sudo /etc/init.d/portmap restart

重启portmap服务。nfs是一个RPC程序,使用它前,需要映射好端口,通过portmap设定。

注意:Ubuntu 14.04以后,要使用sudo /etc/init.d/rpcbind restart 重启rpcbind 服务。所以执行

sudo /etc/init.d/rpcbind restart

然后执行命令:

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

重启nfs服务。并执行

showmount localhost -e

查询是否成功。

3. nfs用作嵌入式linux的文件系统

1) 设置u-boot启动参数

在U-Boot中设置启动参数

U-Boot>setenv bootargs root=/dev/nfs nfsroot=192.168.1.2:/home/lz/nfs/rootfs ip=192.168.1.3:192.168.1.2:192.168.1.10:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200

其中:
root=/dev/nfs 并非真的设备,而是一个告诉内核要通过网络取得根文件系统。
nfsroot=你的主机IP:根文件系统路径
ip=你的开发板ip地址,注意开发板的ip地址只要和主机ip地址在一个网段内就可。
/home/lz/nfs/rootfs是主机的共享目录(即rootfs),192.168.1.2代表的是主机ip,192.168.1.3代表开发板ip,192.168.1.10是网关,eth0是主机和开发板相接的网卡。注意这是一整行没有换行,改完save一下。

U-Boot>sa

保存后,用boot启动linux

U-Boot>boot

2)挂载nfs文件系统

在linux系统里也可以挂载nfs文件

sudo mount -t nfs  192.168.1.2:/home/lz/nfs/rootfs /nfs/test
### Ubuntu 16.04 IMX6ULL 网络配置教程 #### 配置根文件系统 为了在 i.MX6ULL 平台上运行基于 Ubuntu 的操作系统,首先需要下载并解压适合 ARM 架构的根文件系统。可以通过以下命令完成此操作: ```bash tar xzf ubuntu-base-16.04.6-base-armhf.tar.gz -C ./ubuntu_rootfs/ ``` 这一步会创建一个名为 `./ubuntu_rootfs` 的目录,其中包含了完整的根文件系统结构[^3]。 #### 安装高级网络工具 由于基础的 Ubuntu 根文件系统可能不包含某些高级网络管理工具,因此建议安装 `ifupdown` 工具包来简化网络配置流程。通过执行以下命令即可实现这一目标: ```bash apt-get update && apt-get install ifupdown ``` 安装完成后,可以在 `/etc/network/interfaces` 文件中定义静态 IP 地址或其他网络参数[^2]。 #### 虚拟机网络模式调整 当使用 VMware 或 VirtualBox 运行虚拟机时,默认情况下其网络模式通常设置为 NAT 模式。这种模式可能导致开发板与虚拟机之间的通信中断。为了避免此类问题,应将虚拟机的网络模式更改为桥接模式。这样可以确保虚拟机、宿主机 Windows 系统以及 i.MX6ULL 开发板之间能够互相 ping 通[^4]。 需要注意的是,在桥接模式下虽然设备间可以直接通信,但可能会失去对外部互联网的访问能力。如果希望保留外部网络连接功能,则可以选择 NAT 模式作为补充方案[^5]。 #### NFS 挂载调试 对于 i.MX6ULL 板卡而言,利用 NFS 协议远程加载根文件系统是一种常见做法。要成功实施这项技术,除了正确配置服务器端共享路径之外,还需要确认客户端(即开发板)所在子网内的所有节点均处于同一广播域内。只有这样才能保障双方顺利建立 TCP/IP 层面的数据交换关系。 --- ### 故障排查指南 1. **无法 Ping 通** 如果发现任何两台设备之间不能正常响应 ICMP 请求报文,请依次检查物理链路状态、IP 地址分配情况以及防火墙策略是否存在冲突等问题。 2. **网络速度异常缓慢** 当观察到数据传输速率远低于预期水平时,可能是由 MTU 参数设定不当引起。尝试降低最大传输单元大小至合理范围之内再重新测试性能表现如何变化。 3. **DNS 解析失败** 若应用程序报告域名解析错误消息,则需核实 `/etc/resolv.conf` 中是否有合法权威名称服务器记录项存在;或者考虑切换 DNS 提供商服务地址试试看效果怎样改善。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值