udhcpc:リースなし、Buildrootで作成されたEmbedded Linuxでの起動に失敗しました

udhcpc:リースなし、Buildrootで作成されたEmbedded Linuxでの起動に失敗しました

Linuxサービスの応答性(サービスの呼び出しとデフォルトのDHCPudhcpc関連)は、プロンプトにログインする前と後で異なります。/etc/init.d/S40networkip upudhcpc

/etc/init.d/rcS(起動順序)で呼び出されると、udhcpcIPアドレスは割り当てられません。

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回に増やしました。

以下の2行目を追加してください。/etc/network/interfaces

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

関連情報