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

——————————————————————————————————————————————————————————linux

1,安裝服務

主機端:

  tftp:

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

   sudo  apt-get  install tftp-hpa  tftpd-hpa  xinetd服務器

    tftp-hpa是客戶端,tftpd-hpa是服務程序。socket

  2,配置tftp服務

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

 

# /etc/default/tftpd-hpaide

TFTP_USERNAME="tftp"工具

TFTP_DIRECTORY="/tftpboot "  ///tftpboot改爲你本身創建的tftpboot文件夾路徑,我使用的是/home/arm/tftpboot這個路徑post

TFTP_ADDRESS="0.0.0.0:69"測試

TFTP_OPTIONS="-l -c -s"    //這裏是選項spa

 

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

       進入/etc/xinetd.d/文件夾,查看該目錄下是否有一個tftp文件,若是沒有就新建一個,若是有的話就查看內容是否與下面的一致,不一致則修改/etc/xinetd.d/tftp內容爲:rest

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 ,加入參數後順利經過

中間不能加空格,不能改變順序。

相關文章
相關標籤/搜索