通過NFS啓動自制的網絡文件系統遇到的問題總結

在此要特別感謝技術上的發燒友們提供的帖子給我的幫助,搞了整整一天終於搞定了。
    搭建好開發環境後,內核鏡像燒寫,flash的分區全部都弄好了,ubi文件系統備好了,準備通過NFS方式啓動,它妹的出現瞭如下的問題。
 
    Looking up port of RPC 100003/2 on 192.168.0.199
    rpcbind: server 192.168.0.199 not responding, timed out
    Root-NFS: Unable to get nfsd port number from server, using default
    當時我想怎麼回事,以前NFS相當順利,今天就重新準備了個環境就出現這個問題,沒關係,搞掉他,
我看到錯誤信息說“從服務器端獲取端口出現問題”。
    好,馬上回去看一下,啓動portmap服務,用命令 “sudo /etc/init.d/portmap start”這下應該可以了吧,又重啓了一下我的nfs服務端,“sudo /etc/init.d/nfs-kernel-server start”,FUCK 還不行,又出現上面的問題,我看看剛纔端口服務啓動的輸出信息
“Rather than invoking init scripts through /etc/init.d, use the service(8)
  utility, e.g. service portmap start
  Since the script you are attempting to invoke has been converted to an
  Upstart job, you may also use the start(8) utility, e.g. start portmap
尼瑪啊,我英文還算過的去,看了一下沒明白到底起沒起啊。FUCK
  啓用終極途徑,上網搜搜,有靈感,“rpcinfo -p” 查看當前所有的portmap的信息。
  我又運行了一下 "sudo /etc/init.d/nfs-kernel-server restart",
  "Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service portmap restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the restart(8) utility, e.g. restart portmap
portmap start/running, process 708"
  看到了沒,有portmap的進程在起着,說明啓動成功,在復位一次。
尼瑪啊,還不行,看來問題不是在這,在上網看看,格老子的,原來出現這個問題的人這麼多啊,
仔細蒐羅,比較受大家認同的是關掉防火牆,我很詫異,真的麼。。真的麼。。管他孃的先試試。
  關啊,我用的是ubuntu 先查看一下防火牆的狀態"sudo ufw status" 你妹啊,根本就沒開啓過,一直是"inactive",尼瑪啊,還不行
  再看看,說nfs配置有問題,我靠不是吧,有這麼山炮麼,還是查一遍吧,我在自的虛擬你(vmware)家目錄下掛載mount文件系統,靠,很成功啊。
  然後我用showmount -e 你妹啊,出問題了
  報了個這個"clnt_create: RPC: Program not registered"(我在這又去查rpc查閱好久,坑爹啊) 
  尼瑪啊,之前從沒遇見過。
  在看一下,試試這個,"showmount 192.168.0.199 -e"
  沒問題,顯示出掛載文件系統目錄。
  到現在還沒找到問題
  我先把啓動參數 和 exports文件的內容曬一下吧
  upkernel=tftp $(loadaddr) $(bootfile);nand erase clean $(kerneladdr) $(filesize);nand write.jffs2 $(loadaddr) $(kerneladdr) $(filesize);setenv kernelsize $(filesize); saveenv
upsafefs=mtdparts default;nand erase safefs;ubi part safefs;ubi create  safefs;tftp $(loadaddr) $(safefs);ubi write $(loadaddr) safefs $(filesize)
uprootfs=mtdparts default;nand erase rootfs;ubi part rootfs;ubi create  rootfs;tftp $(loadaddr) $(rootfs);ubi write $(loadaddr) rootfs $(filesize)
yboot=nand read.jffs2 $(bootmaddr) $(kerneladdr) $(kernelsize);bootm $(bootmaddr)
safemode=setenv bootargs ubi.mtd=3 root=ubi0:safefs console=ttyS0,115200 mem=64M rootfstype=ubifs rw;run yboot
zhiyuan=run upsafefs; run upkernel; run set
set=setenv bootargs ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs console=ttyS0,115200 mem=64M, monitor=$(monitor), $(opt); saveenv
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:1536k(bootloder),512k(params),4m(kernel),16m(safefs),-(rootfs)
partition=nand0,0
mtddevnum=0
mtddevname=bootloder
filesize=1B49A8
fileaddr=80008000
netmask=255.255.255.0
kernelsize=1B49A8
ipaddr=192.168.0.200
serverip=192.168.0.199
bootargs=root=/dev/nfsroot rw console=ttyS0,115200 nfsroot=192.168.0.199:/home/linux/work/rootfs ip=192.168.0.200:192.168.0.199:192.168.0.1:255.255.255.0:epc.zlgmcu.com:eth0:off
gatewayip=192.168.0.1
stdin=serial
stdout=serial
stderr=serial
/*****************************************
*****************************************/
exports 文件內容
/home/linux/work/ *(rw,sync,no_root_squash)(這裏不用指定的文件系統目錄,隨便你指定到那個目錄,他都會支持把當前目錄下的文件掛載)
 
對了我在這要說點有意思的東西,我上google查閱,看很多外國人也有這個問題,有的外國佬說快被折磨瘋了( to be crazy)(fuck),哈哈。。
問題還沒解決。
難道是網絡有問題,我之前弄的都是NAT地址轉換,格老子的,今天換個橋接的(bridge)把虛擬機和板卡和主機都制定在同一個網段(ifconfig eth0 )
再試試。。。。。。。。。。。。。。。。。。。。。。。。
尼瑪
過去了
尼瑪啊。。。。。。。。。。。。。。。。。。
又停了。。。。。。。。。。。
IP-Config: Complete:
     device=eth0, addr=192.168.109.27, mask=255.255.255.0, gw=192.168.109.254,
     host=zlg, domain=, nis-domain=(none),
     bootserver=192.168.109.33, rootserver=192.168.109.33, rootpath=
Looking up port of RPC 100003/2 on 192.168.109.33
Looking up port of RPC 100005/1 on 192.168.109.33
VFS: Mounted root (nfs filesystem).
Freeing init memory: 108K
init started: BusyBox v1.11.2 ()
starting pid 321, tty '': '/etc/rc.d/rcS'
Mounting /proc and /sys
Starting the hotplug events dispatcher udevd
Synthesizing initial hotplug events
Setting the hostname to zlg
Mounting filesystems
mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
Running sysctl
Setting up networking on loopback device:
Setting up networking on eth0:
nfs: server 192.168.109.33 not responding, still trying
不過總算過了一關。
在找。。。。
恩人啊。。。。
我在這個問題上磨了半天了
終於得到化解
以下是引用恩人的語錄:
引用地址:
*****在其中一篇文章中有人提到,可能是根文件系統啓動的時候更改了目標板的ip,當時想這不應該,ip我通過bootargs已經傳給內核了,而且也已經成功掛載了,要是更改了就不能掛載了。我暈死,當時犯渾了,掛載是發生在啓動前的,是系統啓動的時候改的,所以才導致系統無法啓動的
於是我翻找上述那一大段的信息找到了starting pid 321, tty '': '/etc/rc.d/rcS'
這是系統啓動時執行的第一個文件rcS,我想問題就在這裏啦。於是在主機裏,打開rcS,並沒有發現更改IP的地方啊,但是我看到在這個文件裏有句話
#load the configuration information
. /etc/rc.d/rc.conf(注意,這是在開發板上的根文件目錄裏)
這就是系統啓動的時候加載的第一個配置文件了,問題應該就出現在這裏了,打開這個文件驚奇的發現如下我期待已久的信息:
export INTERFACE0="eth0"
export IPADDR0="192.168.7.236"
export NETMASK0="255.255.255.0"
export BROADCAST0="192.168.7.255"
export GATEWAY0="192.168.7.1"
export NAMESERVER0="192.168.7.1"
看來就是它了,於是我按照自己的配置更改了選項:

export INTERFACE0="eth0"
export IPADDR0="192.168.109.101"
export NETMASK0="255.255.255.0"
export BROADCAST0="192.168.109.255"
export GATEWAY0="192.168.109.254"
export NAMESERVER0="192.168.109.254"
改好之後,保存。然後,回到Tera Term下,重啓開發板,成功啦


這個是參考上面的一個網友的,他這樣弄最後OK了,但是我的還是不行,但是這個總結給了我啓發,我發現我之前的虛擬機的網卡是eth0,現在變成eth4了,改回去試試?

參考網上這個文檔改了下:

Linux的網卡由eth0變成了eth1,如何修復 
Linux的網卡由eth0變成了eth1,如何修復   
使用wmware安裝了linux,安裝成功後,使用的網卡是eth0,沒有eth1。但是用過一段時間後,不知道爲什麼eth0無法使用,系統卻自動生成了eth1網卡,這可以使用ifconfig命令看的到。   
[user@localhost ~]$ ifconfig 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:A9:22:9D             inet 
addr:192.168.1.108  Bcast:192.168.1.255  Mask:255.255.255.0           inet6 addr: fe80::20c:29ff:fea9:229d/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:313 errors:0 dropped:0 overruns:0 frame:0           TX packets:182 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000  
          RX bytes:67356 (65.7 KiB)  TX bytes:26612 (25.9 KiB)           Interrupt:19 Base address:0x2000    
lo        Link encap:Local Loopback             inet addr:127.0.0.1  Mask:255.0.0.0           inet6 addr: ::1/128 Scope:Host 
          UP LOOPBACK RUNNING  MTU:16436  Metric:1 
          RX packets:1788 errors:0 dropped:0 overruns:0 frame:0           TX packets:1788 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0  
          RX bytes:89560 (87.4 KiB)  TX bytes:89560 (87.4 KiB)   
使用service network restart指令來重新啓動網絡服務時,會看到有eth0網卡不存在的提示。   
經過百度,瞭解了一些信息,特此記錄在此,以備忘。 



在uboot裏面設置了下啓動參數:
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.210:/work/nfs_root/tmp/fs_mini_mdev ip=192.168.1.105:192.168.1.106:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0

虛擬機重啓,開發板重啓,結果OK了,終於搞好了,這個問題折騰了我好多時間,謝謝上面網友文檔的支持






















  
爲什麼eth0會變成eth1?   
很多Linux distribution使用udev動態管理設備文件,並根據設備的信息對其進行持久化命名。udev會在系統引導的過程中識別網卡,將mac地址和網卡名稱對應起來記錄在udev的規則腳本中。而對於新的虛擬機,VMware會自動爲虛擬機的網卡生成MAC地址,當你克隆或者重裝虛擬機軟件時,由於你使用的是以前系統虛擬硬盤的信息,而該系統中已經有eth0的信息,對於這個新的網卡,udev會自動將其命名爲eth1(累加的原則),所以在你的系統啓動後,你使用ifconfig看到的網卡名爲eth1。   
如何恢復到eth0?   
在fedora中,udev記錄網絡規則的腳本爲:/etc/udev/rules.d/70-persistent-net.rules   
[user@localhost ~]$ vi /etc/udev/rules.d/70-persistent-net.rules   
# This file was automatically generated by the /lib/udev/write_net_rules # program run by the persistent-net-generator.rules rules file. # 
# You can modify it, as long as you keep each rule on a single line. # PCI device 0x1022:0x2000 (pcnet32) 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="00:0c:29:5a:6c:73", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="00:0c:29:a9:22:9d", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"   
打開該文件,這時你會發現,裏面有eth0,eth1兩個網卡的信息,但實際上你ifconfig時只能發現eth1一個網卡的信息,這時因爲eth0根本就不存在。   


















將其中eth0的信息刪掉,並將eth1信息中的設備名改爲eth0,重啓系統,你看到的網卡就是eth0了,或者刪掉其中所有的信息重啓系統udev會幫你發現新的設備的。   
另外還有一個啓動腳本文件/etc/sysconfig/network-scripts/ifcfg-eth0,該文件中的mac地址爲原來eth0網卡的物理地址,而虛擬機爲eth1分配新的物理地址,故啓動腳本中的信息與實際信息時不匹配的,將MAC的地址信息修改爲
70-persistent-net.rules中的eth1的MAC地址,再次重啓網絡,就完全恢復到以前eth0網卡的狀態了。

發佈了31 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章