nfs方式啟動rootfs配置過程
前提:宿主機配置好了nfs服務
這裡使用nfs主要是做rootfs掛載。開發板中執行kernel做nfs客戶端,宿主機中執行nfs服務。在宿主機的nfs伺服器中匯出資料夾形式的rootfs目錄,在客戶端中去掛載這個資料夾形式的rootfs進而去啟動系統。
步驟1:設定nfs啟動方式的bootargs
在uboot命令列修改bootargs的引數:setenv bootargs root=/dev/nfs nfsroot=192.168.1.141:/work/rootfs/rootfs ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
其中:
root=/dev/nfs並非真的裝置,而是一個告訴核心要通過網路取得根檔案系統。
nfsroot=<server-ip>:<root-dir>
引數nfsroot這個引數告訴核心以哪一臺機器的哪個目錄以及哪個網路檔案系統選項作為根檔案系統使用。
<server-ip> 指定網路檔案系統服務端的IP地址。如果沒有指定定,則使用nfsaddrs變數指定的值。
<root-dir> 服務端上要作為根檔案系統要掛載的目錄名稱。
nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>
引數nfsaddrs設定網路通訊所需的各種網路介面地址。
如果沒有給定這個引數,則核心核會試著使用反向地址解析協議或是啟動協議(BOOTP)以找出這些引數。
<my-ip> 客戶端的IP地址。
<serv-ip> 網路檔案系統服務端的IP地址。
<gw-ip> 閘道器(gateway)的IP地址。
<netmask> 本地網路的網路掩碼。如果為空白,則掩碼由客戶端的IP地址匯出。
<name> 客戶端的名稱。如果空白,則使用客戶端IP地址的ASCII標記值。
<dev> 要使用的網路裝置名稱。如果你只有一個裝置,那麼你可以不管它。
<auto> 用以作為自動配置的方法。
init=/linuxrc 指定初始化檔案
console=ttySAC2,115200 控制檯選擇
步驟2:設定核心支援nfs啟動rootfs
在menuconfig中配置以下選項: 1、配置網路部分,主要是使能CONFIG_IP_PNP以在2中能夠看到Root file system on NFS選項Networking support
Networking options
[*]TCP/IP networking
[*]IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support
2、配置開啟nfs服務
File systems --->
Network File Systems --->
<*> NFS client support
[*] NFS client support for NFS version 3
[*] NFS client support for the NFSv3 ACL protocol extension
[*] NFS client support for NFS version 4 (EXPERIMENTAL)
[*] NFS client support for NFSv4.1 (DEVELOPER ONLY)
[*] Root file system on NFS