[OpenIndiana-discuss] DHCP auto-configuration for local zones and sysidcfg
Jim Klimov
jimklimov at cos.ru
Fri Jun 8 01:39:06 UTC 2012
It is nice talking to oneself, we make a smart and interesting
couple ;) (I do hope some experts would add to this thread)
Apparently, the "quick fix" in smf_netstrategy which just fully
removes the special handling for local zones is a flawed approach.
There are other scripts which seemingly expect local zones to have
$_INIT_NET_STRATEGY==none so this is a case for more careful
revision.
In particular, with the workaround in place, it seems that the
`zonename` or `uname -n` are no longer consulted to construct
the /etc/nodename file (or provide the value on the fly if the
file is absent/empty) to ultimately set the hostname, so the
zone came up as "unknown" on at least one test... For details
see /lib/svc/method/identity-node :)
Adding some code to the "dhcp" case seems to help (only the
first line was originally present):
---
# For non-global zones, fall back to the `uname -n` value provided by the
# kernel if /etc/nodename does not exist, as is expected on an initial boot.
#
smf_netstrategy
case "$_INIT_NET_STRATEGY" in
"dhcp") hostname=`/sbin/dhcpinfo Hostname`
if [ -z "$hostname" ]; then
if smf_is_globalzone; then
hostname=`/sbin/hostconfig -h -p
bootparams`
else
hostname=`/sbin/zonename`
fi
fi ;;
---
Use of "uname -n" as proposed by the script's comments seems
pointless, but maybe that's because I'm testing after the name
"unknown" has got assigned during zone startup:
root at unknown:~# hostname
unknown
root at unknown:~# zonename
build-ss12sun
root at unknown:~# uname -n
unknown
An arguable bonus is to add these lines someplace there:
[ ! -z "$hostname" -a ! -s /etc/nodename ] && \
echo "$hostname" > /etc/nodename &&
/usr/bin/chmod 644 /etc/nodename
If we discovered a "$hostname" and the "/etc/nodename" was
empty or nonexistent, seed that file with the name we found.
Q: Should this be done at all, and in the identity-node SMF
method script in particular?
On a side note, I found that `zonename -t` should return the
ip-type (shared or exclusive) which can help me make a more
"educated guess" crafting the workaround...
Good night,
//Jim Klimov
More information about the OpenIndiana-discuss
mailing list