U-boot使用NFS文件系統的bootargs總結

#setenv bootargs noinitrd console=ttySAC0,115200 init=/linuxrc mem=64M root=/dev/nfs nfsroot=192.168.2.125:/home/hufei/nfsrootip=192.168.2.6:192.168.2.125:192.168.2.125:255.255.255.0:hufei.cublog.cn:eth0:off

initrd, noinitrd:
當你沒有使用ramdisk啓動系統的時候,你需要使用noinitrd這個參數,但是如果使用了的話,就需要指定initrd=r_addr,size, r_addr表示initrd在內存中的位置,size表示initrd的大小。

console:

console=tty  使用虛擬串口終端設備 .
console=ttyS[,options] 使用特定的串口,options可以是這樣的形式bbbbpnx,這裏bbbb是指串口的波特率,p是奇偶位(從來沒有看過使用過),n是指的bits。
console=ttySAC[,options] 同上面。

看你當前的環境,有時用ttyS,有時用ttySAC,網上有人說,這是跟內核的版本有關,2.4用ttyS,2.6用ttySAC,但實際情況是官方文檔中也是使用ttyS,所以應該是跟內核版本沒有關聯的。可以查看Documentation/serial-console.txt找到相關描述。

init:

init指定的是內核啓起來後,進入系統中運行的第一個腳本,一般init=/linuxrc, 或者init=/etc/preinit,preinit的內容一般是創建console,null設備節點,運行init程序,掛載一些文件系統等等操作。請注意,很多初學者以爲init=/linuxrc是固定寫法,其實不然,/linuxrc指的是/目錄下面的linuxrc腳本,一般是一個連接罷了。如果內核找不到linurc文件,將會依次搜索/sbin/init,/etc/init,/bin/init,/bin/sh.

mem:

指定內存大小,不是必須的

root:

用來指定rootfs的位置, 常見的情況有: 
    root=/dev/ram rw   
    root=/dev/ram0 rw
請注意上面的這兩種設置情況是通用的,我做過測試甚至root=/dev/ram1 rw和root=/dev/ram2 rw也是可以的,網上有人說在某些情況下是不通用的,即必須設置成ram或者ram0,但是目前還沒有遇到,還需要進一步確認,遇到不行的時候可以逐一嘗試。

    root=/dev/mtdx rw
    root=/dev/mtdblockx rw
    root=/dev/mtdblock/x rw
    root=31:0x

上面的這幾個在一定情況下是通用的,當然這要看你當前的系統是否支持,不過mtd是字符設備,而mtdblock是塊設備,有時候你的挨個的試到底當前的系統支持上面那種情況下,不過root=/dev/mtdblockx rw比較通用。此外,如果直接指定設備名可以的話,那麼使用此設備的設備號也是可以的。

root=/dev/nfs,並非真的設備,而是一個告訴內核經由網絡取得根文件系統的旗標。 
在文件系統爲基於nfs的文件系統的時候使用。當然指定root=/dev/nfs之後,還需要指定nfsroot,

nfsroot這個參數告訴內核以哪一臺機器,哪個目錄以及哪個網絡文件系統選項作爲根文件系統使用。參數的格式如下:

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

如果指令列上沒有給定 nfsroot 參數,則將使用‘/tftpboot/%s’預設值。其它選項如下:

<server-ip> –指定網絡文件系統服務端的互聯網地址(IP address)。如果沒有給定此欄位,則使用由 nfsaddrs 變量(見下面)所決定的值。此參數的用途之一是允許使用不同機器作爲反向地址解析協議(RARP)及網絡文件系統服務端。通常你可以不管它(設爲空白)。

<root-dir> – 服務端上要作爲根掛入的目錄名稱。如果字串中有個‘%s’ 符記(token),此符記將代換爲客戶端互聯網地址之ASCII 表示法。

<nfs-options> – 標準的網絡文件系統選項。所有選項都以逗號分開。如果沒有給定此選項欄位則使用下列的預設值:

        port            = as given by server portmap daemon

        rsize           = 1024

        wsize           = 1024

        timeo           = 7

        retrans         = 3

        acregmin        = 3

        acregmax        = 60

        acdirmin        = 30

        acdirmax        = 60

        flags           = hard, nointr, noposix, cto, ac

參數nfsaddrs設定網絡通訊所需的各種網絡接口地址。如果沒有給定這個參數,則內核核會試著使用反向地址解析協議以及/或是啓動協議(BOOTP)以找出這些參數。其格式如下:

ip:

下面是U-boot官方文檔提供的IP參數解析:

setenv bootargs ${bootargs}

ip=${ipaddr}:${serverip}:\

${gatewayip}:${netmask}:\

${hostname:${netdev}:off

注意,上面換行的地方均有空格。其中 192.168.2.6是開發板的IP,192.168.2.125

是PC端(或虛擬機)的 IP,上面的IP根據自己的實際情況修改,不要弄錯了。

nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>

<my-ip> – 客戶端的互聯網地址。如果沒設,此地址將由反向地址解析協議(RARP)或啓動協議來決定。使用何種協議端視配置核心時打開的選項以及 參數而定。如果設定此參數,就不會使用反向地址解析協議或啓動協議。

<serv-ip> – 網絡文件系統服務端之互聯網地址。如果使用反向地址解析協議來決定客戶端地址並且設定此參數,則只接受從指定之服務端傳來的迴應。要使用不同的機器作爲反向地址解析與網絡文件系統服務端的話,在此指定你的反向地址解析協議服務端(保持空白)並在 nfsroot 參數(見上述)中指定你的網絡文件系統服務端。如果此項目空白則使用回答反向地址解析協議或啓動協議之服務端的地址。

<gw-ip> – 網關(gateway)之互聯網地址,若服務端位於不同的子網絡上時。如果此項目空白則不使用任何網關並假設服務端在本地的(local)網絡上,除非由啓動協議接收到值。

<netmask> – 本地網絡界面的網絡掩碼。如果爲空白,則網絡掩碼由客戶端的互聯網地址導出,除非由啓動協議接收到值。

<name> – 客戶端的名稱。如果空白,則使用客戶端互聯網地址之 ASCII-標記法,或由啓動協議接收的值。

<dev> – 要使用的網絡設備名稱。如果爲空白,所有設備都會用來發出反向地址解析請求,啓動協議請求由最先找到的設備發出。網絡文件系統使用接收到反向地址解析協議或啓動協議迴應的設備。如果你只有一個設備那你可以不管它。

<suto> – 用以作爲自動配置的方法。如果是 `rarp’ 或是 `bootp’ 則使用所指示的協議。如果此值爲`both’ 或空白,若配置核心時有打開這兩種協議則都使用。 `none’ 表示不使用自動配置。這種情況下你必須指定前述欄位中所有必要的值。

此參數可以作爲 nfsaddrs 的參數單獨使用(前面沒有任何 `:` 字符),這種情況下會使用自動配置。然而,此種情況不能使用 `none’作爲值。

 原文地址 http://blogold.chinaunix.net/u3/114978/showart_2262992.html

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