Fix packaging for ksh93 so it is delivered into /sbin/sh not as a symlink
Currently OpenIndiana delivers the system shell interpreter "/sbin/sh" as a symlink into "../usr/bin/i86/ksh93". This causes an unnecessary boot-time dependency on the "/usr" filesystem to be an unseparable part of the root filesystem - while in fact things work very well if the ksh93 and its few dependency libraries are copied into /sbin and /lib accordingly.
Automation of this copying procedure is detailed in the Wiki page http://wiki.openindiana.org/oi/Advanced+-+Split-root+installation but the proper solution would be to deliver the binary and libraries into the root filesystem in the first place as part of standard packaging (in particular, this would allow proper upgrades without manual repetitions of the file-copying procedure described in the page).
If possible, these files should be delivered as preferred hardlinks (so that monolithic root filesystems won't waste space by keeping copies of the files, while split-root ones would keep both copies), or the package should be revised altogether - i.e. deliver the libraries such as libshell.so.1, libcmd.so.1, libdll.so.1, libast.so.1, libsum.so.1 straight into /lib instead of /usr/lib; deliver /sbin/ksh93 as a binary and /sbin/sh and /usr/bin/i86/ksh93 as symlinks to it. This approach would retain the legacy program names and only keep one copy of the binary and library files - in the rootfs.
Updated by Garrett D'Amore almost 8 years ago
I prefer the latter approach. In fact, this is what we did at DEY. As much as its unfortunate that the monolithic thing that is ksh93 and its dependencies is required at boot, if this is the system shell, then it needs to be part of the root filesystem and not on /usr.