2021-05-12 14:32:11
uboot環境設定
通過設定uboot讓它在啟動過程中從tftp獲取核心和裝置樹,並從在載入核心之後把通過啟動引數將"從nfs掛載根檔案系統"傳入核心。這個設定主要是通過uboot內建的"set 變數名 變數值
+save
"設定環境變數的方式進行設定,下面是我採用的uboot的環境變數,下面是我用的環境變數設定:
#pri #即printenv
baudrate=115200
bootargs=root=/dev/nfs nfsroot=192.168.0.50:/nfs rw console=ttySAC2,115200n8 init=/linuxrc ip=192.168.0.55 loglevel=7 clk_ignore_unused
bootcmd=tftp 41000000 uImage;tftp 42000000 exynos4412-origen.dtb;bootm 41000000 - 42000000
bootdelay=4
ethact=dm9000
ethaddr=11:22:33:44:55:66
fileaddr=41000000
filesize=26D213
gatewayip=192.168.2.1
ipaddr=192.168.0.55
netmask=255.255.255.0
serverip=192.168.0.50
stderr=serial
stdin=serial
stdout=serial
baudrate
就是波特率,習慣上就設成115200,根據硬體的不同可以相應的修改
bootargs
啟動引數,這個引數除了uboot要用,啟動核心之後還會傳入核心。
其中,root=/dev/nfs
表示開發板的根檔案系統從nfs網路裝置中載入,nfsroot=192.168.0.55:/nfs
表示從網路中的ip是192.168.0.55的主機中的/nfs目錄載入根檔案系統,rw
表示可讀可寫,console=ttySAC2
表示使用的中端,115200
表示波特率,init=/linuxrc
表示啟動的祖先進程的位置,顯然這是給linux核心用的,ip=192.168.0.55
是開發板的ip,需要和主機在同一個網段,loglevel=7
就是登入等級,這個不設也行,clk_ignore_unused
忽略時鐘。這個引數的實質是uboot傳入核心的,所以需要參考核心的啟動引數的相關檔案,我在下面做了簡要的說明。除了啟動引數,uboot還需要做一些其他的準備工作,並不是這個引數準備好了核心就可以工作了,比如,關於arm平台的linux核心啟動條件,可以參考Linux核心原始碼中的Documentation/arm/Booting ,這裡就不做說明了bootcmd
啟動命令,tftp 41000000 uImage
表示從tftp網路中下載uImage核心映象到41000000地址處,tftp 42000000 exynos4412-origen.dtb
表示下載從tftp網路中下載裝置樹檔案到42000000地址處,bootm 41000000 - 42000000
表示從41000000啟動核心,我這沒有randisk,用-
代替,不是從41000000到42000000的意思!!!此外,一旦填入了ramdisk地址,核心就會從ramdisk掛載根檔案系統而忽略nfs。最後,把裝置樹從42000000傳入核心。
注意:多個命令之間用;
分隔,所以為了在設定變數的時候不立即執行,應該寫成set bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-origen.dtb;bootm 41000000 - 42000000
bootdelay
啟動倒計時的秒數
gatewayip
表示閘道器
ipaddr
表示開發板的ip
serverip
表示主機的ip
netmask
表示子網掩碼
stderr
,stdin
,stdout
表示標準輸入輸出錯誤裝置,基本都填串列埠serial
Linux核心啟動引數
核心需要的啟動引數在linux-4.8.5/Documentation/kernel-parameters.txt
以及相應的檔案中,這些引數就是uboot需要通過bootargs將他們準備好並傳給核心,當然,這些引數都是有預設值的,我們只需要對需要的引數進行設定,這裡列出這裡用到的幾個
noinitrd [RAM] Tells the kernel not to load any configured
initial RAM disk.
root= [KNL] Root filesystem
See name_to_dev_t comment in init/do_mounts.c.
nfsroot= [NFS] nfs root filesystem for disk-less boxes.
See Documentation/filesystems/nfs/nfsroot.txt.
rw [KNL] Mount root device read-write on boot
rootwait [KNL] Wait (indefinitely) for root device to show up.
Useful for devices that are detected asynchronously
(e.g. USB and MMC devices).
ip= [IP_PNP]
See Documentation/filesystems/nfs/nfsroot.txt.
console= [KNL] Output console device and options.
。。。
init= [KNL]
Format: <full_path>
Run specified binary instead of /sbin/init as init
process.
loglevel= All Kernel Messages with a loglevel smaller than the
console loglevel will be printed to the console.
。。。
clk_ignore_unused
[CLK]
Prevents the clock framework from automatically gating
clocks that have not been explicitly enabled by a Linux
device driver but are enabled in hardware at reset or
by the bootloader/firmware.
。。。
$grep ip= Documentation/filesystems/nfs/nfsroot.txt -A 20
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>
This parameter tells the kernel how to configure IP addresses of devices and also how to set up the IP routing table. It was originally called 'nfsaddrs', but now the boot-time IP configuration works independently of NFS, so it was renamed to 'ip' and the old name remained as an alias for compatibility reasons.
。。。。
$grep nfsroot= Documentation/filesystems/nfs/nfsroot.txt -A 20
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
If the 'nfsroot' parameter is NOT given on the command line,
the default "/tftpboot/%s" will be used.
。。。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-12/138659.htm
相關文章