u-boot 使用 setenv 禁用 DHCP 请求

u-boot 使用 setenv 禁用 DHCP 请求

我试图在加载内核后禁用 DHCP 请求。使用freescale imx25 dev-board在标准配置中。在 中u-boot,我找到两行ip=dhcp

MX25 U-Boot > pri
bootdelay=3
baudrate=115200
loadaddr=0x80800000
netdev=eth0
ethprime=smc911x-0
uboot=u-boot.bin
uboot_addr=0xa0000000
kernel=uImage
bootargs_base=setenv bootargs console=ttymxc0,115200
bootargs_nfs=setenv bootargs $(bootargs) root=/dev/nfs ip=dhcp nfsroot=$(serverip):$(nfsrootfs),v3,tcp
bootcmd_net=run bootargs_base bootargs_nfs; tftpboot ${loadaddr} ${kernel}; bootm
load_uboot=tftpboot ${loadaddr} ${uboot}
ethact=smc911x-0
bootargs_nand=setenv bootargs ${bootargs} root=/dev/mtdblock2 ip=dhcp rootfstype=jffs2
bootcmd_nand=run bootargs_base bootargs_nand; nand read ${loadaddr} 0x100000 0x1d2000;bootm
bootcmd=run bootcmd_nand
serverip=192.168.0.5
ipaddr=192.168.0.100
stdin=serial
stdout=serial
stderr=serial

如果我做:

set bootargs_nand=setenv bootargs ${bootargs} root=/dev/mtdblock2 ip=192.168.0.100 rootfstype=jffs2

它不起作用,我的启动环境似乎完全损坏了。

如何在不更改其他参数的情况下分配固定IP地址?

答案1

您的命令:

set bootargs_nand=setenv bootargs ${bootargs} root=/dev/mtdblock2
      ip=192.168.0.100 rootfstype=jffs2

将无法按原样工作。

它至少应该是:

setenv bootargs_nand 'setenv bootargs ${bootargs} root=/dev/mtdblock2
       ip=192.168.0.100 rootfstype=jffs2'

没有=符号,并使用单引号来防止扩展,${bootargs}直到bootargs_nand命令实际运行。

为了使 IP 设置更加灵活,您还应该ip=${ipaddr}在该命令中指定,而不是明确使用实际地址。 Uboot 环境值将被替换。

在这些缺陷得到纠正之前,这个答案是初步的。

答案2

就我而言,我使用 ip 附加参数解决了这个问题:

setenv netargs 'setenv bootargs console=${console} root=/dev/nfs ip=${ipaddr}:::::eth0:off rw nfsroot=${serverip}:${rootfs},v3,tcp'

请参阅kernel/Documentation/filesystems/nfs/nfsroot.txt:

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:
   <dns0-ip>:<dns1-ip>:<ntp0-ip>

相关内容