![u-boot 使用 setenv 禁用 DHCP 请求](https://linux22.com/image/25411/u-boot%20%E4%BD%BF%E7%94%A8%20setenv%20%E7%A6%81%E7%94%A8%20DHCP%20%E8%AF%B7%E6%B1%82.png)
我试图在加载内核后禁用 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>