在 Bullseye (Debian) 上,当网络上没有 DHCP 服务器时,我会将其保存在 /var/log/syslog 中。
Jul 10 10:45:05 localhost systemd[1]: Started DHCP Client Daemon.
Jul 10 10:45:05 localhost dhcpcd[372]: forked to background, child pid 757
Jul 10 10:45:23 localhost systemd[1]: systemd-hostnamed.service: Succeeded.
Jul 10 10:46:33 localhost systemd[1]: connman-wait-online.service: Main process exited, code=exited, status=110/n/a
Jul 10 10:46:34 localhost systemd[1]: connman-wait-online.service: Failed with result 'exit-code'.
Jul 10 10:46:34 localhost systemd[1]: Failed to start Wait for network to be configured by ConnMan.
Jul 10 10:46:34 localhost systemd[1]: Reached target Network is Online.
Jul 10 10:46:34 localhost systemd[1]: Starting LSB: Prepares and starts codesyscontrol...
在本例中,我们看到“forked to background, child pid 757”这一行,为什么?为什么要花这么长时间才能启动其他 systemd 进程呢?尤其是所见的codesyscontrol。
答案1
这就是 DHCP 的工作原理。客户端发出一个广播数据包,说“我的 IP 是什么?我的 MAC 是 <48 位 MAC>”,并期望有人以 DHCP 的所有优点进行响应。超时(您的情况)时,客户端再次发送数据包,然后等待。大约 5 次超时后,随着等待时间的增加,客户端放弃,不再获取 IP 地址,并且启动继续。
dhclient
如果 LAN 上没有 DHCP 服务器,请不要运行,或者阅读man dhclient
(以及“另请参阅”man
页面)以查看是否可以调整配置。