Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Jun 2016 01:13:29 -0400
From:      Mark Heily <mark@heily.com>
To:        Pedro Giffuni <pfg@freebsd.org>
Cc:        FreeBSD-arch list <freebsd-arch@freebsd.org>
Subject:   Re: Illumos/OpenSolaris SMF to FreeBSD
Message-ID:  <CAGfo=8=mHk0gO=V6_LNy%2B8xDZu5D5zmvAar7E29f9XbbJyDUJw@mail.gmail.com>
In-Reply-To: <b626122e-8b77-91ff-d481-11849c6b81fd@FreeBSD.org>
References:  <b626122e-8b77-91ff-d481-11849c6b81fd@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jun 11, 2016 at 12:13 AM, Pedro Giffuni <pfg@freebsd.org> wrote:

> Hi Cy;
>
> Hi,
>>
>> What are people's thoughts about porting Illumos Service Management
>> Facility (SMF) to FreeBSD? The Solaris SMF didn't replace their init(8),
>> it's started by their init(8) through inittab -- we could use ttys or
>> replace init.
>>
>>
> Is this something that could live in ports ... at least for a while?
> It appears there are many options and it's great to be able to choose,
> but I doubt we want to compromise right now on which,
>
>
Full disclosure: I'm working on a competing project called jobd that is
heavily influenced by MacOS launchd and Solaris SMF, while not sharing any
source code with these earlier systems.

I think it would be extremely challenging to port Solaris SMF to FreeBSD
because of the number of dependencies on Solaris-specific kernel features
and libraries. I took some time to investigate these dependencies, based on
the contents of the /usr/srv/cmd/svc directory in Illumos:

https://github.com/illumos/illumos-gate/tree/5a4ef21a18dfdc65328821a265582d03e85a97c9/usr/src/cmd/svc

I grepped all the source code under that directory for the pattern
'#include .*', and came up with a list of all of the system headers that
SMF requires. The list is very large, and includes some major kernel
features like doors, event ports, procfs, kstat, zones, privileges, and so
on.

The source code to SMF has been publicly available for eight years, yet no
one has stepped forward to invest the time and effort to port it to a
different OS. I don't see that situation changing any time soon. Where is
the funding? Who are the commercial backers? How many full-time engineers
will be dedicated to the porting effort? How many years are we willing to
wait for the port to be completed?

IMHO it would be better to borrow the best ideas from the other Unix init
systems and implement them in jobd. It's simply not realistic to port the
original SMF source code to FreeBSD.

P.S. Here are is a partial list of the Solaris-specific facilities that
would need to be ported to FreeBSD to get the Solaris SMF sources to
compile.

Event ports:

https://blogs.oracle.com/barts/entry/entry_2_event_ports


contract(4) filesystem

http://docs.oracle.com/cd/E23823_01/html/816-5174/contract-4.html


corectl(2):

https://github.com/illumos/illumos-gate/blob/5a4ef21a18dfdc65328821a265582d03e85a97c9/usr/src/uts/common/syscall/corectl.c


libgen:

http://docs.oracle.com/cd/E23823_01/html/816-5173/libgen-3head.html


libgrubmgmt:

https://github.com/illumos/illumos-gate/tree/5a4ef21a18dfdc65328821a265582d03e85a97c9/usr/src/lib/libgrubmgmt


libscf:

http://docs.oracle.com/cd/E23824_01/html/821-1464/libscf-3lib.html


libuutil:

https://blogs.oracle.com/sch/entry/libuutil_and_designing_for_debuggability


libumem:

https://blogs.oracle.com/pnayak/entry/finding_memory_leaks_within_solaris


libtecla:

https://docs.oracle.com/cd/E19044-01/sol.containers/817-1592/z.config.ov-18/index.html


libfmevent:

https://docs.oracle.com/cd/E19455-01/805-7224/6j6q44cj5/index.html


kstat kernel support:

https://docs.oracle.com/cd/E23824_01/html/821-1478/kstat-9s.html


libkstat:

https://docs.oracle.com/cd/E19683-01/806-6543/overview-12/index.html


librestart:

https://github.com/illumos/illumos-gate/blob/master/usr/src/lib/librestart/common/librestart.h


libsysevent:

https://github.com/illumos/illumos-gate/blob/master/usr/src/lib/libsysevent/libsysevent.c


file tree walker libc functions:

http://docs.oracle.com/cd/E19109-01/tsolaris7/805-8069/6j7j9vntn/index.html


sys/modctl.h:

https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/sys/modctl.h


mnttab functions in sys/mnttab:

http://www.manpages.spotlynx.com/solaris/man/getmntent.3C


procfs:

https://github.com/illumos/illumos-gate/blob/5a4ef21a18dfdc65328821a265582d03e85a97c9/usr/src/uts/common/sys/procfs.h


privileges(5):

http://docs.oracle.com/cd/E36784_01/html/E36883/privileges-5.html#REFMAN5privileges-5


doors:

https://en.wikipedia.org/wiki/Doors_(computing)


SAC port monitors:

https://docs.oracle.com/cd/E19455-01/805-7224/6j6q44cj5/index.html


statvfs:

http://docs.oracle.com/cd/E23824_01/html/821-1463/statvfs-2.html


uadmin(2) system call:

https://illumos.org/man/2/uadmin


Zones:

https://github.com/illumos/illumos-gate/blob/master/usr/src/head/zone.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGfo=8=mHk0gO=V6_LNy%2B8xDZu5D5zmvAar7E29f9XbbJyDUJw>