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 ,加入参数后顺利通过

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

 

原文地址:https://www.cnblogs.com/chu-yi/p/10849798.html