zoukankan      html  css  js  c++  java
  • 嵌入式开发环境搭建:NFS客户端与服务器搭建

    (注:本文参考资料:朱有鹏嵌入式课程。本文为个人学习记录,如有错误,欢迎指正。)

    0. NFS的作用
    NFS(Network File System),网络文件系统。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

    本文的目的是实现开发板远程挂载NFS服务器中的根文件系统(文件夹形式)。具体实现步骤如下:

      1)设置开发板与Ubuntu主机的网络通信;

      2)配置开发板(客户端)的NFS功能;

      3)在Ubuntu主机下,搭建NFS服务器。

    1. 网络设置
    搭建NFS服务器之前,必须确保开发板与Ubuntu主机可以实现网络通信。具体步骤详见:《嵌入式开发环境搭建:开发板tftp下载环境搭建》->网络设置。

    2. NFS客户端的配置
    (1)配置uboot的环境变量bootargs,指定需要挂载的网络文件系统的路径。配置bootargs的值为:

    bootargs root=/dev/nfs nfsroot=192.168.1.100:/home/sai/rootfs-test/rootfs ip=192.168.1.200:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200

    配置分析:

    • root=/dev/nfs,表示内核通过NFS服务器挂载根文件系统;
    • nfsroot=<server-ip>:<root-dir>,描述NFS服务器的路径。<server-ip>,指定网络文件系统服务端的IP地址;<root-dir>,指定网络文件系统的路径。
    • nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>,设定网络通信所需的各种网络接口地址。

        <my-ip>,指定客户端的IP地址

        <serv-ip>,网络文件系统服务端的IP地址

        <gw-ip>,网关(gateway)的IP地址

        <netmask>,本地网络的网络掩码

        <name>,客户端的名称。如果空白,则使用客户端IP地址的ASCII标记值

        <dev>,网络设备名称

        <off>,关闭DHCP服务

    • init=/linuxrc,指定init进程的路径。
    • console=ttySAC2,115200,指定控制台串口设备号及其波特率参数。

    (2)配置内核的NFS功能
    进入内核图形配置界面menuconfig界面下,配置内核的NFS功能。

    1)配置网络部分。

    Networking support ---> 
    Networking options ---> 
    [*]TCP/IP networking
    [*]IP: kernel level autoconfiguration
    [*] IP: DHCP support
    [*] IP: BOOTP support


    2)配置开启NFS服务

    File systems --->
    [*]Network File Systems --->
    <*> NFS client support 
    [*] NFS client support for NFS version 3 
    [*] NFS client support for the NFSv3 ACL protocol extension 
    [*] NFS client support for NFS version 4 (EXPERIMENTAL) 
    [*] NFS client support for NFSv4.1 (DEVELOPER ONLY) 
    [*] Root file system on NFS 


    配置完成后,重新编译内核。
    3. 搭建NFS服务器
    (1)安装NFS相关软件

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


    (2)配置/etc/exports

    • sudo vi /etc/exports,在etc/exports末尾添加如下内容:

    #“/home/sai/rootfs-test/rootfs”指定NFS服务器所在路径,可以根据需要修改。

    /home/sai/rootfs-test/rootfs *(rw,sync,no_root_squash,no_subtree_check)

    • chmod 777 -R /root/rootfs,更改文件夹权限。
    • sudo showmount -e,执行成功后显示“clnt-create : RPC : Program not registered”。
    • sudo exportfs -r
    • sudo showmount localhost -e,执行成功显示“Export list for 192.168.1.116 /home/sai/rootfs-test/rootfs *”

    (3)重启NFS服务

    重启NFS服务,上述配置即可生效。

    sudo /etc/init.d/nfs-kernel-server restart ,重启 nfs 服务。
    配置成功,显示如下信息:

    * Stopping NFS kernel daemon [ OK ]
    * Unexporting directories for NFS kernel daemon... [ OK ]
    * Exporting directories for NFS kernel daemon... [ OK ]
    * Starting NFS kernel daemon 


    4. 挂载测试
    (1)本地测试NFS

    在Ubuntu主机下,将配置的/home/sai/rootfs-test/rootfs文件夹挂载至Ubuntu下的某一目录,若在该目录下可以看到该文件夹中的内容,则说明NFS服务器搭建成功。

    挂载命令:

    mount -t nfs -o nolock localhost:/root/rootfs /opt
    (2)开发板挂载测试

    完成上述配置后,启动内核。若在控制台中打印出如下信息,则说明开发板远程挂载NFS服务器中的根文件系统成功。

    VFS: Mounted root (nfs filesystem) on device 0:12.
  • 相关阅读:
    Chrome Extension 扩展程序 小白入门
    gulp 打包报错:ReferenceError: internalBinding is not defined
    error in static/js/xxx.js from UglifyJs Unpected token: punc() [static/js/xxx.js]
    ES6-
    浏览器的渲染原理(转载)
    nodeType、nodeName和nodeValue
    浏览器 HTTP 协议缓存机制详解
    JS函数的上下文环境
    ready和onload的区别
    自定义事件
  • 原文地址:https://www.cnblogs.com/linfeng-learning/p/9284584.html
Copyright © 2011-2022 走看看