文章來源:http://blog.csdn.net/uyiwfn/article/details/7172347
-Boot環境變量的解釋說明
環 境 變 量
解 釋 說 明
bootdelay
定義執行自動啟動的等候秒數
baudrate
定義串口控制台的波特率
netmask
定義以太網接口的掩碼
ethaddr
定義以太網接口的MAC地址
bootfile
定義缺省的下載文件
bootargs
定義傳遞給Linux內核的命令行參數
bootcmd
定義自動啟動時執行的幾條命令
serverip
定義tftp服務器端的IP地址
ipaddr
定義本地的IP地址
stdin
定義標准輸入設備,一般是串口
stdout
定義標准輸出設備,一般是串口
stderr
定義標准出錯信息輸出設備,一般是串口
參考U-boot,其環境變量設置如下:
Uboot> printenv
bootdelay=3
baudrate=115200
ethaddr=00:12:34:56:78:9a
ipaddr=192.168.0.9 ①
serverip=192.168.0.1 ②
netmask=255.255.255.0
rootpath=/home/zht/rfsys ③
stdin=serial
stdout=serial
stderr=serial
bootcmd=tftp 21000000 uImage;bootm 21000000 ④
bootargs=root=/dev/nfs rw nfsroot=192.168.0.1:/home/zht/rfsys nfsaddrs=192.168.0.48: 192.168.0.1:192.168.0.1:255.255.255.0 console=ttyS0,115200 mem=32M ⑤
① 設置目標板IP地址
② 設置服務器IP地址
③ 設置根文件系統在服務器上的路徑,注意該路徑一定要設定為服務器上的nfs目錄。
④ bootcmd是u-boot啟動后執行的命令,命令之間用分號分隔。
tftp 21000000 uImage 表示通過tftp 將內核映像下載到RAM中地址為0x21000000;
bootm 21000000 啟動linux操作系統
⑤ 定義u-boot傳送給linux內核的命令行參數,該命令行指定以網絡文件系統作為根文件系統。
其中root=/dev/nfs,並非真的設備,而是一個告訴內核經由網絡取得根文件系統的旗標。
參數nfsroot這個參數告訴內核以那一台機器,那個目錄以及那個網絡文件系統選項作為根文件系統使用。參數的格式如下:
nfsroot=[:][,]
如果指令列上沒有給定 nfsroot 參數,則將使用‘/tftpboot/%s’預設值。其它選項如下:
--指定網絡文件系統服務端的互聯網地址(IP address)。如果沒有給定此欄位,則使用由 nfsaddrs 變量(見下面)所決定的值。此參數的用途之一是允許使用不同機器作為反向地址解析協議(RARP) 及網絡文件系統服務端。通常你可以不管它(設為空白)。
-- 服務端上要作為根掛入的目錄名稱。如果字串中有個‘%s’ 符記(token),此符記將代換為客戶端互聯網地址之 ASCII 表示法。
-- 標准的網絡文件系統選項。所有選項都以逗號分開。如果沒有給定此選項欄位則使用下列的預設值:
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)以找出這些參數。其格式如下:
nfsaddrs=::::::
-- 客戶端的互聯網地址。如果沒設,此地址將由反向地址解析協議或啟動協議來決定。使用何種協議端視配置核心時打開的選項以及 參數而定。如果設定此參數,就不會使用反向地址解析協議或啟動協議。
-- 網絡文件系統服務端之互聯網地址。如果使用反向地址解析協議來決定客戶端地址並且設定此參數,則只接受從指定之服務端傳來的回應。要使用不同的機器作為反向地址解析與網絡文件系統服務端的話,在此指定你的反向地址解析協議服務端(保持空白)並在 nfsroot 參數(見上述)中指定你的網絡文件系統服務端。如果此項目空白則使用回答反向地址解析協議或啟動協議之服務端的地址。
-- 網關(gateway)之互聯網地址,若服務端位於不同的子網絡上時。如果此項目空白則不使用任何網關並假設服務端在本地的(local)網絡上,除非由啟動協議接收到值。
-- 本地網絡界面的網絡掩碼。如果為空白,則網絡掩碼由客戶端的互聯網地址導出,除非由啟動協議接收到值。
-- 客戶端的名稱。如果空白,則使用客戶端互聯網地址之 ASCII-標記法,或由啟動協議接收的值。
-- 要使用的網絡設備名稱。如果為空白,所有設備都會用來發出反向地址解析請求,啟動協議請求由最先找到的設備發出。網絡文件系統使用接收到反向地址解析協議或啟動協議回應的設備。如果你只有一個設備那你可以不管它。
-- 用以作為自動配置的方法。如果是 `rarp' 或是 `bootp' 則使用所指示的協議。如果此值為 `both' 或空白,若配置核心時有打開這兩種協議則都使用。 `none' 表示不使用自動配置。這種情況下你必須指定前述欄位中所有必要的值。
此 參數可以作為 nfsaddrs 的參數單獨使用(前面沒有任何 `:` 字符),這種情況下會使用自動配置。然而,此種情況不能使用 `none'作為值。
說明:這只是網上的一種說法,但是沒有啟動起來。因為我的kernel沒有cs8900網卡驅動,燒錄后可正常啟動,但無法掛載NFS,我在想是否可以通過命令行參數設置,來設置uboot給kernel傳遞的地址參數,這樣間接驅動nfs服務。我先前通過vivi這樣搞過,也是可行的。
現在可以這樣理解就是說,之前的kernel內核已經配置好了各個基本模塊的驅動,這樣就可以用了