用NFS啟動rootfs的淺度總結

2021-06-16 09:24:38 字數 2233 閱讀 5847

平台:海思hi3716c

linux kernel:3.0.8

rootfs: mer-core based on release 20121018.1

使用下面的bootargs:

setenv bootargs 'mem=764m vmalloc=600mconsole=ttyama0,115200 mmz=ddr,0,0xb3c00000,100m mtdparts=hi_sfc:448k(fastboot),64k(bootargs),3520k(recovery),64k(deviceinfo);hinand:6m(baseparam),8m(logo),10m(fastplay),30m(cache),10m(misc),10m(kernel),300m(system),134m(userdata),4m(blackbox),1536m(sdcard)root=/dev/nfs rw nfsroot=192.168.188.141:/home/zhanghui/nfs/rootfs/mer-hybris ip=dhcp'

問題1:

原因是:kernel中的nfs支援沒設定好。

解決辦法:

理論上說,要用nfs啟動rootfs,需要有兩個支援:

(1)nfsv3 client support

(2)root file system on nfs

但是,在hi3716c的kernel目錄下,'make menuconfig'時死活沒有看到"root file system on nfs"這個選項。

網上查到"root file system on nfs"對應的是"config_root_nfs",於是

#vim arch/arm/configs/godbox_icsmer_defconfig

在上面的檔案加入"config_root_nfs=y"。

然後執行:

#make godbox_icsmer_defconfig

檢視.config檔案,發現並沒有「config_root_nfs」這個東東。表明沒有生效。

the configuration item config_root_nfs:

原來依賴了config_ip_pnp。

於是,#vim arch/arm/configs/godbox_icsmer_defconfig

設定"config_ip_png=y"

#make godbox_icsmer_defconfig

檢查生成的.config檔案,發現config_root_nfs=y已經在裡面了。

#make -j 8 uimage

將生成的核心arch/arm/boot/uimage燒寫入flash,重啟系統。

問題2在問題1解決後,碰到錯誤資訊:

ip-config: incomplete network configurationinformation.

vfs: unable to mount root fs via nfs,trying floppy.

檢視kernel/net/ipv4/ipconfig.c,發現有幾行**:

/** if none of dhcp/bootp/rarp was selected, return with an error.

* this routine gets only called when some pieces of information

* are missing, and without dhcp/bootp/rarp we are unable to get it.

*/if (!ic_proto_enabled)

從這裡看,應該至少使能dhcp/bootp/rarp中的乙個;檢查godbox_icsmer_defconfig發現,這三個東東沒有。

因此,#vim arch/arm/configs/godbox_icsmer_defconfig

在其中新增三行:

config_ip_pnp_dhcp=y

config_ip_pnp_bootp=y

config_ip_pnp_rarp=y

然後,#make godbox_icsmer_defconfig

#make -j 8 uimage

將生成的核心arch/arm/boot/uimage燒寫入flash,重啟系統。

問題3:

還有乙個沒有搞明白的問題。雖然現在用dhcp獲取ip可以通過nfs掛載rootfs了,但如果在bootargs中改用靜態ip,怎麼也不行,總是列印"sending dhcp request"。不知為什麼。

關於Linux啟動時掛載rootfs的幾種方式

一直對linux啟動時掛載根檔案系統的過程存在著很多疑問,今天在水木精華區找到了有用的資料,摘錄如下 1 linux啟動時,經過一系列初始化之後,需要mount 根檔案系統,為最後執行init程序等做準備,mount 根檔案系統有這麼幾種方式 1 檔案系統已經存在於硬碟 或者類似的裝置 的某個分割槽...

NFS的配置與啟動

這裡插進一段用nfs啟動的實做。在安裝配置的步驟之前,這些都是nfs的一些介紹,下面才是安裝配置的步驟!在centos系統中檢視是否有nfs的命令是 rpm qa 在嵌入式開發階段,通常我們會操作乙個掛載在nfs上的系統,這樣更加方便,快捷,無需每次都燒寫nand或nor檔案。sudo mkdir ...

NFS服務的配置及啟動

nfs服務的配置及啟動 nfs 就是network file system的縮寫,它的最大的功能就是可以通過網路讓不同的機器,不同的作業系統可以彼此共享檔案 share files 所以也可以簡單的將它看作乙個檔案伺服器 file server nfs是通過網路進行資料傳輸,那麼nfs使用哪些埠呢,...