udhcpc:无租约,在 Buildroot 创建的嵌入式 Linux 上启动时失败

udhcpc:无租约,在 Buildroot 创建的嵌入式 Linux 上启动时失败

Linux 服务的响应能力udhcpc(相对于/etc/init.d/S40network调用ip up和 的服务的本机 DHCP udhcpc)在提示符下登录之前和之后有所不同。

/etc/init.d/rcS通过(启动顺序)调用时,udhcpc不分配 IP 地址:

udhcpc: no lease, failing

然而,一旦使用 root 帐户登录,S40network restart就会通过udhcpc.

/etc/inittab是正常且基本的:

# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <[email protected]>
#
# Note: BusyBox init doesn't support runlevels.  The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id        == tty to run on, or empty for /dev/console
# runlevels == ignored
# action    == one of sysinit, respawn, askfirst, wait, and once
# process   == program to run

# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS

# Put a getty on the serial port
ttyPS0::respawn:/sbin/getty -L  ttyPS0 0 vt100 # GENERIC_SERIAL

# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot

# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

我们该如何解释这一点?

答案1

我遇到了与您相同的问题,它在启动过程中会失败,但如果之后手动调用则可以正常工作。在检查各种日志时,我意识到 udhcpc 似乎在接口出现时正在初始化,因此最初的几个发现实际上并没有通过接口发出。

理想情况下,我会这样做,以便 udhcpc 在接口稳定后才启动,但由于我不知道如何实现这一点,所以我只是增加了 udhcpc 的尝试次数。通常,它会在 4-5 次尝试后获得 IP,但我将限制增加到 10 次尝试以涵盖任何边缘情况。

将下面的第二行添加到/etc/network/interfaces

iface eth0 inet dhcp
  udhcpc_opts -t 10 #sets max retries to 10
  #rest of config params

相关内容