我通过 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 应答设置。