如何修改bootargs参数使u-boot从网络引导内核?
开发板上电运行u-boot后,不按下空格键,将会自动从flash引导内核。但现在我想从通过通过网络自动从TFTP SERVER下载并启动内核,而不是从flash启动内核。在网上搜了很长时间,知道是修改bootargs参数。但是怎么样修改,网上确实鲜有资料。
修改bootargs参数应该就是修改hhbf.h中的
#define CONFIG_BOOTARGS "root=/dev/mtdblock0 rw lpj=5931008" /
" mem=32m console=ttyS0,115200n8" /
" hdb=noprobe ide0=noprobe"
应该怎么修改CONFIG_BOOTARGS,才能使u-boot自动从TFTP下载并启动内核Image呢?即:tftp;bootm,echo(即环境变量中的tftp_boot)呢?
1楼: | >>参与讨论 |
作者: hardfire 于 2006-12-13 18:30:00 发布:
哦,错啦,应该是bootcmd bootcmd=nand read 30008000 100000 100000;go 30003000 |
2楼: | >>参与讨论 |
作者: cramkl 于 2006-12-14 9:49:00 发布:
应该是修改CONFIG_BOOTCOMMAND吧? 我修改 #define CONFIG_BOOTCOMMAND "run linuxrun" /* XXX: For autoboot */ 为 #define CONFIG_BOOTCOMMAND "run tftp_boot" 但仍然从flash引导Image了,我想还应该修改其它地方吧? 在#define CONFIG_EXTRA_ENV_SETTINGS / "netdev=eth0/0" / "netretry=yes/0" / "uboot=0x20000000/0" / "linux=0x20040000/0" / "loadaddr=0x01000000/0" / "bootfile=zImage.bin/0" / "linuxrun=bootm 0x20040000;echo/0" / "tftp_boot=tftp;bootm;echo/0" / "serial_boot=loadb;bootm;echo/0" / "menucmd=tftp;bootm;echo/0" / "autoload=yes/0" / "autostart=no/0" / "" 中定义了linuxrun,为从FLASH启动,所以run linuxrun从flash引导Image, 定义了tftp_boot,所以照道理开说run tftp_boot应该从网络启动,但实际上为什么改过后仍然从flash引导了呢? |
3楼: | >>参与讨论 |
作者: hardfire 于 2006-12-14 10:02:00 发布:
bootcmd是env的参数 应该是不需要修改u-boot源代码的,修改了也没用。 应该是在u-boot命令行下面用setenv bootcmd xxx 这样来设置后,saveenv写入env扇区才能生效的。 若直接修改代码,也不会影响到env扇区,除非env扇区是空的。 |
4楼: | >>参与讨论 |
作者: cramkl 于 2006-12-14 21:45:00 发布:
成功了!! 谢谢hardfile, 原来以为要修改U-BOOT代码,修改了好久也没成功。 原来只要setenv bootcmd tftp_boot,然后saveenv,重启,u-boot就可以自动从网络下载引导内核了。 |