一、開啟NFS服務
使用如下命令安裝 NFS 服務:
sudo apt-get install nfs-kernel-server rpcbind
等待安裝完成,安裝完成以后在用戶根目錄下創建一個名為“nfs”的文件夾,創建的 nfs 文件夾供 nfs 服務器使用,以后我們可以在開發板上通過網絡文件系
統來訪問 nfs 文件夾,要先配置 nfs,使用如下命令打開 nfs 配置文件/etc/exports:
sudo vi /etc/exports
打開/etc/exports 以后在后面添加如下所示內容:
/home/topeet/nfs *(rw,sync,no_root_squash)
添加完成以后的/etc/exports 如圖所示:
重啟 NFS 服務,使用命令如下:
sudo /etc/init.d/nfs-kernel-server restart
二、掛載NFS目錄
如果虛擬機IP地址是192.168.0.2,則開發板可以通過下面命令掛載目標系統:
mount -t nfs 192.168.0.2:/home/topeet/nfs /mnt -o nolock
如果掛載失敗,可能是nfs版本不統一,需要用以下命令掛載:
mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.0.2:/home/topeet/nfs /mnt
三、NFS根文件系統
Linux內核支持從網絡加載根文件系統。使用NFS根文件系統,首先需要內核中網卡驅動已經正常工作,並且在內核已經支持網絡並配置了NFS根文件系統支持,同時將內核參數設置為通過NFS啟動。
設置內核NFS啟動的參數一般格式為:
root = /dev/nfs rw console=$(consolecfg) nfsroot=$(serverip):$(rootpath) ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname):$(device):$(autoconf)
各參數的意義如下:
root=/dev/nfs: 使用網絡文件系統
consolecfg: 調試串口配置
serverip: NFS服務器IP
rootpath: 主機NFS根文件系統路徑
ipaddr: 本機IP(目標系統IP)
gateway: 網關
netmask: 子網掩碼
hostname: 目標板的主機名
device: 網卡設備,默認一個網卡就填eth0
autoconf: 自動連接,填off不自動連接
如“使用調試串口屏ttyS0,NFS服務器IP為192.168.0.2,NFS根文件系統路徑為/home/topeet/nfs,目標板IP為192.168.0.3”的啟動參數配置為:
root=/dev/nfs rw console=ttyS0,115200 nfsroot=192.168.0.2:/home/topeet/nfs ip=192.168.0.3:192.168.0.2:192.168.0.1:255.255.255.0::eth0:off
把文件系統rootfs.tar.bz2復制Linux主機上的/home/topeet/nfs目錄,然后解壓該包: $ tar -xjvf rootfs.tar.bz2 解壓完成后,將得到/home/topeet/nfs/rootfs目錄,這個目錄將用作NFS根文件系統的目錄。
在uboot里設置的方法是:
=> setenv root "/dev/nfs rw console=ttyS0,115200 nfsroot=192.168.0.2:/home/topeet/nfs ip=192.168.0.3:192.168.0.2:192.168.0.1:255.255.255.0::eth0:off"
=> setenv ipaddr "192.168.0.3"
=> setenv serverip "192.168.0.2"
=> saveenv