開啓Digilent提供的Linux內核的NFS支持

  ZEDBoard上出廠的SD卡中自帶了一個較完整的linux系統,雖然是精簡版,但是對於開發來說已經足夠了,在嵌入式linux開發中,掛載NFS協助調試非常常見,但是Digilent給出的內核中並沒有開啓NFS的支持,具體可以通過/proc/filesystems中有沒有nfs相關的內容,執行cat /proc/filesystems | grep nfs,沒有找到nfs相關的內容證明內核沒有開啓對nfs的支持,接下來我們就需要手動配置一下內核,開啓nfs支持:(內核源碼可以在書的光盤中找到,也可以從github上克隆下來:https://github.com/Digilent/linux-3.3-digilent.git)

$ make ARCH=arm digilent_zed_defconfig



$ make ARCH=arm menuconfig

進入File systems  --->Network File Systems  --->可以看到默認並沒有開啓nfs的支持,現在我們開啓nfs,相關的選項如下: 注意這裏我們是要把nfs驅動編譯在內核中,所以選擇built-in,然後保存配置,不過現在還不能開始編譯,如果現在編譯根本通不過去,具體原因可能是因爲保存的配置又多了額外的很多東西,所以我們只能去找根目錄下的.config文件,找到nfs對應的那幾行,這裏主要是: CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V2=y CONFIG_NFS_V3=y # CONFIG_NFS_V3_ACL is not set # CONFIG_NFS_V4 is not set # CONFIG_NFS_SWAP is not set CONFIG_ROOT_NFS=y # CONFIG_NFSD is not set CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y # CONFIG_SUNRPC_DEBUG is not set # CONFIG_CEPH_FS is not set # CONFIG_CIFS is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set 將上面的內替換到arch/arm/configs/digilent_zed_defconfig中,不過這裏先要刪除掉 # CONFIG_NETWORK_FILESYSTEMS is not set這一行,並在該位置加上上面的配置內容,這樣才能保證內核能夠順利編譯通過 接下來執行:

$ make ARCH=arm digilent_zed_defconfig

$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-

編譯通過之後,內核即arch/arm/boot目錄下的zImage,使用新內核啓動以後,執行cat /proc/filesystems | grep nfs,可以找到nfs的設備,說明開啓了nfs的支持,掛載指令:

# mount -t nfs SERVERIP:SERVER_PATH LOCAL_PATH -o proto=tcp -o nolock

對於pc機上開啓nfs服務,請參考這篇帖子:【參賽手記】NFS掛載加速程序開發,請注意,這裏pc機是nfs服務的提供者,zedboard上的nfs是客戶端,所以是把pc機上的目錄掛載到zedboard上的linux文件系統中的目錄, 其中:SERVERIP是電腦的ip,SERVER_PATH是電腦nfs的提供的掛載路徑,LOCAL_PATH是zedboard上的linux文件系統中的路徑 舉個例子來說,比如電腦的ip是192.168.1.100 提供的掛載路徑是/rootfs,我們需要把電腦上的路徑掛載到板子上的/mnt目錄下,(請確保兩者能夠ping通)那麼可以在usb轉串口的終端中輸入:

# mount -t nfs 192.168.1.100:/rootfs /mnt -o proto=tcp -o nolock

解掛載的時候輸入

# umount /mnt

即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章