[OpenIndiana-discuss] Split-root installations

Jim Klimov jimklimov at cos.ru
Tue Nov 26 22:19:04 UTC 2013


On 2013-11-26 19:23, Irek Szczesniak wrote:
> cut, cat and grep are ksh builtins. Use builtin <cmdname> (run builtin
> --man to read details) to enable them by default and then remove the
> absolute paths so the shell doesn't search PATH for them.
> Most nawk usage can be replaced by ksh pattern matching, leaving
> sort(1) as the only command to worry about.

Thanks for the suggestions, and they did help me convert the scripts
for iptun and physical:default into code that does not complain when
run without /usr (certainly not an exhaustive test, but at least the
near-default cases work well now). Scripts did become uglier a bit,
especially when NAWK was replaced by bulkier shell constructs, but
in exchange there is one less subprocess type to fork :)

For good old ipconfig based on /etc/hostname.* files (and DHCP) this
can easily be made to work with a minimal root filesystem and ksh93.
For ipadm and for NWAM - not so, a working /usr is needed by those.

The NWAM method script is heavily dependent on /usr, with calls to
SMF admin commands, LDAP client and so on, and there is no easy way
to make it fully executable in absence of /usr (possibly one might
carve out some pre- and post- /usr logic to split into two services...
but what for?)

I wonder how (un)acceptable would it be to enhance the fs-root script
instead - when it makes sure that /usr/bin is available (the /usr is
mounted), it could invoke "svcadm restart" of the active instance of
the network/physical service (if any) and perhaps iptun which depends
on this. This would probably be proper after the script calls devfsadm
to detect devices for newly mounted drivers (which may include more
NICs than were available on rootfs).

In the end, I think this problem boils down to specific cases with
opposite dependencies, since the "clean" way to do this is with SMF
somehow:

1) / and /usr are local (ZFS, UFS, whatever) and don't depend on the
network (NFS, iSCSI, whatever) - then "network/physical" should depend
on "filesystem/root";

2) these filesystems (both or one) depend on networking to be active
and provided by the OS (i.e. GRUB which TFTP/PXE-boots a miniroot over
LAN is probably not the use-case) - then the filesystems' SMF services
should depend on networking services.
Although it can be argued that  /etc/fs/nfs/mount depends on at least
/usr/lib/libsmbios.so.1, so the miniroot which boots the server and
mounts the NFS root would (by default) have some /usr of its own...

Ultimately, these can be (and are) different "root" service instances
which can have very different dependency graphs...

What would the esteemed community experts suggest?

Thanks,
//Jim




More information about the OpenIndiana-discuss mailing list