我有一个基于 Debian 的小型 Linux 设备,它通过调用以下命令设置其主机名udhcpc
:
udhcpc -i $interface -S -x hostname:mydevice
(当然$interface
是在脚本调用的前面定义的udhcpc
。)
这按预期工作,在我的路由器上我可以看到我的设备作为活动主机名对于该设备。
我的设备 - 获得租约后 - 从 NFS 挂载其新的根文件系统,然后chroot
插入其中。
udhcpc
将向我的路由器发送更新请求:
# cat /var/log/messages | grep dhcp
Jan 1 04:00:07 udhcpc: started, v1.28.1
Jan 1 04:00:07 udhcpc: sending discover
Jan 1 04:00:09 udhcpc: performing DHCP renew
Jan 1 04:00:09 udhcpc: sending discover
Jan 1 04:00:09 udhcpc: sending select for a.b.c.d
Jan 1 04:00:09 udhcpc: lease of a.b.c.d obtained, lease time 600
***NOW THE CHROOT HAPPENS***
Jan 1 04:05:09 udhcpc: sending renew to r.o.u.t
Jan 1 04:05:09 udhcpc: lease of a.b.c.d obtained, lease time 600
Jan 1 04:10:09 udhcpc: sending renew to r.o.u.t
Jan 1 04:10:09 udhcpc: lease of a.b.c.d obtained, lease time 600
我想在发生这种chroot
情况后更新主机名。
我尝试过什么:
udhcpc
使用新的所需主机名杀死并重新启动它:失败(NFS 丢失,系统停止)- 检查
udhcpc
手册:失败(没有发现任何提及在正在运行的实例上更新主机名的内容)
任何想法都值得赞赏:我想要的只是更新活动上的主机名udhcpc
。
重要提示:如果我可以更新主机名就足够了(作为答案接受)“发送 renew 以击溃”事件。
答案1
从udhcpc --help
:
-F NAME Ask server to update DNS mapping for NAME
For example: udhcpc -F $(hostname)