zoukankan      html  css  js  c++  java
  • linux-kernel-4.4 移植 (4) 设置NFS网络文件系统

    开发环境:win10 64位 + VMware12 + Ubuntu14.04 32位

    工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi

    要移植的kernel版本:linux-4.4

    Tiny4412开发板硬件版本为

      底板:  Tiny4412SDK 1312B

      核心板:Tiny4412 - 1306

    ——————————————————————————————————————————————————————————

    1,安装服务

    主机端:

      tftp:

      1,安装tftp-hpa、tftpd-hpa和xinetd:

       sudo  apt-get  install tftp-hpa  tftpd-hpa  xinetd

        tftp-hpa是客户端,tftpd-hpa是服务程序。

      2,配置tftp服务

        第1步: 修改/etc/default/tftpd-hpa配置文件。 /etc/default/tftpd-hpa内容修改为:

     

    # /etc/default/tftpd-hpa

    TFTP_USERNAME="tftp"

    TFTP_DIRECTORY="/tftpboot "  ///tftpboot改成你自己建立的tftpboot文件夹路径,我使用的是/home/arm/tftpboot这个路径

    TFTP_ADDRESS="0.0.0.0:69"

    TFTP_OPTIONS="-l -c -s"    //这里是选项

     

       第2步:新建/修改/etc/xinetd.d/tftp配置文件.

           进入/etc/xinetd.d/文件夹,查看该目录下是否有一个tftp文件,如果没有就新建一个,如果有的话就查看内容是否与下面的一致,不一致则修改/etc/xinetd.d/tftp内容为:

    service tftp

    {

         disable = no

         socket_type = dgram

         protocol = udp

         wait = yes

         user = root    //修改为你登录系统的用户名

         server = /usr/sbin/in.tftpd

         server_args = -s  /tftpboot  -c   // /tftpboot为你存放TFTP的文件目录,我使用的是/home/xxx/Learning/tftpboot这个路径

         per_source = 11

         cps = 100 2

    }

     

    注意:

         server_args  =  -s  /tftpboot  –c 

         -c参数是允许上传用的,参数/tftpboot则是你的tftp目录,修改成你的目录即可。第一个是disabled选项,如果是yes,TFTP服务器是关闭的,修改为no启动TFTP服务器;

    第3步:创建用户下载的文件存放目录

    $ sudo  mkdir  /home/xxx/Learning/tftpboot

    $ sudo  chmod  777  -R  /home/xxx/Learning/tftpboot

     

    重启TFTP服务[重要]

     

    每次修改完配置文件后,都需要重新启动一下服务。

    执行次序:

    $ sudo  service  tftpd-hpa  restart  //重启服务器

    $ sudo /etc/init.d/xinetd  reload 

    $ sudo  /etc/init.d/xinetd  restart  //重启xinetdtftp的一个脚本

     

    测试TFTP服务

    使用TFTP服务器的前提:

    a、Linux系统与window系统能相互Ping通

    b、关闭Linux、Window的防火墙。运行 sudo ufw  disable 命令关闭Linux防火墙(防火墙在系统启动时自动禁用)。

        4.1、测试服务tftp是否启动

    执行命令:netstat  -a|grep  tftp;当结果显示 : udp  0 0 *:tftp *:* 则启动tftp服务了。

        4.2、测试tftp

        在/tftpboot目录文件夹路径/home/xxx/Learning/tftpboot下新建一个文件:

        $ touch test

          $ echo “tftp test” > test

    然后在另外一个目录下执行如下命令(192.168.1.102为本机IP地址):

         $ tftp 192.168.1.102

              $ tftp> get test

              $ tftp> q

    如果在当前目录下多出了一个test文件,并且test文件的内容跟/tftpboot目录下test文件的内容一致,则tftp可以正常使用。

     

    ——————————————————————————————————————————————————————————————————————————

      NFS服务:

    1、安装NFS服务

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

    创建共享文件夹

        $ sudo mkdir /home/arm/tftpboot  //创建一个共享文件夹

    3. 配置NFS服务器

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

    exports文件中添加如下内容:     

        /home/arm/tftpboot  *(rw,sync,no_root_squash,no_subtree_check)

        /home/arm/tftpboot:刚才创建的共享文件夹

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

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

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

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

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

    4、启动NFS服务器。

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

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

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

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

    在Ubuntu上执行:

        $ showmount -e    

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

     ——————————————————————————————————————————————————————————————————

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

    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

     

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

     —————————————————————————————————————————————————————————————————————

    3,挂载文件系统

     

    挂载命令为:  #mount -o nolock 192.168.1.115:/home/arm/tftpboot /mnt/

    解释一下:
    mount :挂载命令
    nfs :使用的协议
    nolock :不阻塞
    vers : 使用的NFS版本号
    IP : NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
    /work/nfs: 要挂载的目录(Ubuntu的目录)
    /mnt : 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)

    韦东山给出挂载命令如下:

    ———————————————————————————————————————————————————————————— 

     问题:

    1,/et c/init.d/nfs-kernel-server   restart 时出现以下错误:

      exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/source/rootfs/".
      Assuming default behaviour ('no_subtree_check').

    新版本的nfs-kernel-server 中,在填写/etc/exports 文件时需要填写一个重要参数  no_subtree_check ,加入参数后顺利通过

    中间不能加空格,不能改变顺序。

     

  • 相关阅读:
    面试题19:包含min函数的栈
    编程之美 计算字符串的相似度
    android 数据持久化——I/O操作
    SSD磁盘,CPU居高不下,高并发的情况下,是不是mysql解析器耗费的cpu资源高?
    Eclipse、MyEclipse优化,提高运行速度
    Sonar入门学习
    Oracle 生成指定范围内随机日期
    ios中的GCD
    如何使用Win8系统自带杀毒软件
    安装Ubuntu版本linux过程中没有提示设置root用户密码问题的解决办法
  • 原文地址:https://www.cnblogs.com/chu-yi/p/10849798.html
Copyright © 2011-2022 走看看