Casper 通过 dhcp 设置主机名

Casper 通过 dhcp 设置主机名

我通过 pxeboot 成功启动了 live ubuntu remix。我想通过 dhcp 设置主机名,因为我正在启动同一映像的多个实例。现在,我正在使用 /etc/dhcp/dhclient-enter-hooks.d/pinhostname 中的钩子线,效果很好。

RUN="yes"
if [ "$RUN" = "yes" ]; then
var=`/sbin/ifconfig eth0 | /usr/bin/awk '/inet addr/ {print $2}' | /usr/bin/cut -f2 -d:`
var=`/usr/bin/dig -x $var +short`
var=`echo $var | /usr/bin/awk -F. '{print $1}'`
/bin/hostname $var
fi

但是 dhcp 服务器对于 munin 等来说来得太晚,主机名没有及时设置。Casper 日志显示它很早就收到了主机名:

IP-Config: eth0 hardware address 08:00:27:86:3e:84 mtu 1500 DHCP RARP
IP-Config: eth0 complete (from 10.1.1.1):
address: 10.1.1.10        broadcast: 10.1.1.255       netmask: 255.255.255.0
gateway: 10.1.1.1         dns0     : 10.1.1.1         dns1   : 0.0.0.0
host   : storage1
domain : domain.com
rootserver: 10.1.1.1 rootpath:
filename  : pxelinux.0

我该如何设置该主机名。我认为在打包 initrd 之前,我需要将一个脚本放入 /scripts 中。有很多不同的脚本,我应该把我的脚本放在哪里?感谢您抽出时间

答案1

我找到了一个对我有用的丑陋的黑客。我解压了插入的 initrd

cat /root/var/log/netboot.config | awk /HOSTNAME/ | cut -f2 -d= | sed 's/.\(.*\)./\1/' > /root/etc/hostname
HOST=`cat /root/var/log/netboot.config | awk /HOSTNAME/ | cut -f2 -d= | sed 's/.\(.*\)./\1/'`
hostname "$HOST"

在 /initrd_temp/脚本/casper-bottom/23networking在这一行后面的某个地方:

cp /tmp/net-"${DEVICE}".conf /root/var/log/netboot.config

小心这个IS丑陋的东西。这可能应该放在 18hostname 中 - 但也许网络设备尚未启动。

答案2

您可能想尝试 dhcpcd5。我用 dhcpcd5 替换了 ISC dhclient,它“刚好起作用”。主机名现在由 DHCP 应答设置。

相关内容